[Buildroot] [PATCH 1/1] package/memcached: bump to version 1.5.19

Bernd Kuhls bernd.kuhls at t-online.de
Sat Oct 12 16:23:22 UTC 2019


From: Christopher McCrory <chrismcc at gmail.com>

Signed-off-by: Christopher McCrory <chrismcc at gmail.com>
[Bernd: bump version 1.5.19, added patch to fix cross build]
Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
---
 .../0001-Fix-cross-compilation-errors.patch   | 213 ++++++++++++++++++
 package/memcached/memcached.hash              |   6 +-
 package/memcached/memcached.mk                |   4 +-
 3 files changed, 219 insertions(+), 4 deletions(-)
 create mode 100644 package/memcached/0001-Fix-cross-compilation-errors.patch

diff --git a/package/memcached/0001-Fix-cross-compilation-errors.patch b/package/memcached/0001-Fix-cross-compilation-errors.patch
new file mode 100644
index 0000000000..26cffc4503
--- /dev/null
+++ b/package/memcached/0001-Fix-cross-compilation-errors.patch
@@ -0,0 +1,213 @@
+From 9be6c201920365883bae389c10cbfdb7a73442e4 Mon Sep 17 00:00:00 2001
+From: Ola Jeppsson <ola.jeppsson at gmail.com>
+Date: Mon, 7 Oct 2019 18:07:30 -0400
+Subject: [PATCH] configure: Fix cross-compilation errors
+
+AC_RUN_IFELSE does not work when cross-compiling so we need to provide
+fallback methods for those cases.
+
+I tried to use constructs that work with Autoconf 2.52.
+Alas, I wasn't able to generate a working build system with that version.
+
+Autoconf 2.58 / Automake 1.7.9 is the earliest combo that I could get
+to work (with and without this patch).
+Perhaps it's time for a slight bump for the required version numbers?
+
+Cross-compiles sucessfully against:
+riscv64-unknown-linux-gnu
+
+Downloaded from upstream PR:
+https://github.com/memcached/memcached/pull/552
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+---
+ configure.ac | 80 +++++++++++++++++++++++++++-------------------------
+ 1 file changed, 41 insertions(+), 39 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index fb78fc557..27dc9399f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -264,23 +264,42 @@ return sizeof(void*) == 8 ? 0 : 1;
+     ],[
+       CFLAGS="-m64 $org_cflags"
+     ],[
+-    AC_MSG_ERROR([Don't know how to build a 64-bit object.])
++      AC_MSG_ERROR([Don't know how to build a 64-bit object.])
++    ],[
++       dnl cross compile
++       AC_MSG_WARN([Assuming no extra CFLAGS are required for cross-compiling 64bit version.])
+     ])
+ fi
+ 
+ dnl If data pointer is 64bit or not.
+-AC_RUN_IFELSE(
+-  [AC_LANG_PROGRAM([], [dnl
+-return sizeof(void*) == 8 ? 0 : 1;
+-  ])
+-],[
+-  have_64bit_ptr=yes
+-],[
++AC_CHECK_HEADERS([stdint.h])
++AS_IF([test -z "$have_64bit_ptr"],
++  [AC_RUN_IFELSE(
++     [AC_LANG_PROGRAM([], [return sizeof(void*) == 8 ? 0 : 1;])],
++     [have_64bit_ptr=yes ],
++     [have_64bit_ptr=no],
++     [dnl cross compile (this test requires C99)
++      AS_IF([test "x$ac_cv_header_stdint_h" = xyes],
++        [AC_COMPILE_IFELSE(
++           [AC_LANG_PROGRAM([
++              #include <stdint.h>
++              #if UINTPTR_MAX == 0xFFFFFFFFFFFFFFFFUL
++              /* 64 bit pointer */
++              #else
++              #error 32 bit pointer
++              #endif
++            ], [])],
++            [have_64bit_ptr=yes],
++            [have_64bit_ptr=no])],
++        [have_64bit_ptr=unknown])
++     ])
+ ])
+-
+-if test $have_64bit_ptr = yes; then
++AS_IF([test "$have_64bit_ptr" = "unknown" ],[
++  AC_MSG_ERROR([Cannot detect pointer size. Must pass have_64bit_ptr={yes,no} to configure.])
++])
++AS_IF([test "$have_64bit_ptr" = yes],[
+   AC_DEFINE(HAVE_64BIT_PTR, 1, [data pointer is 64bit])
+-fi
++])
+ 
+ # Issue 213: Search for clock_gettime to help people linking
+ #            with a static version of libevent
+@@ -570,30 +589,10 @@ fi
+ AC_C_SOCKLEN_T
+ 
+ dnl Check if we're a little-endian or a big-endian system, needed by hash code
+-AC_DEFUN([AC_C_ENDIAN],
+-[AC_CACHE_CHECK(for endianness, ac_cv_c_endian,
+-[
+-  AC_RUN_IFELSE(
+-    [AC_LANG_PROGRAM([], [dnl
+-        long val = 1;
+-        char *c = (char *) &val;
+-        exit(*c == 1);
+-    ])
+-  ],[
+-    ac_cv_c_endian=big
+-  ],[
+-    ac_cv_c_endian=little
+-  ])
+-])
+-if test $ac_cv_c_endian = big; then
+-  AC_DEFINE(ENDIAN_BIG, 1, [machine is bigendian])
+-fi
+-if test $ac_cv_c_endian = little; then
+-  AC_DEFINE(ENDIAN_LITTLE, 1, [machine is littleendian])
+-fi
+-])
+-
+-AC_C_ENDIAN
++AC_C_BIGENDIAN(
++  [AC_DEFINE(ENDIAN_BIG, 1, [machine is bigendian])],
++  [AC_DEFINE(ENDIAN_LITTLE, 1, [machine is littleendian])],
++  [AC_MSG_ERROR([Cannot detect endianness. Must pass ac_cv_c_bigendian={yes,no} to configure.])])
+ 
+ AC_DEFUN([AC_C_HTONLL],
+ [
+@@ -670,12 +669,15 @@ AC_DEFUN([AC_C_ALIGNMENT],
+   ],[
+     ac_cv_c_alignment=need
+   ],[
+-    ac_cv_c_alignment=need
++    dnl cross compile
++    ac_cv_c_alignment=maybe
+   ])
+ ])
+-if test $ac_cv_c_alignment = need; then
+-  AC_DEFINE(NEED_ALIGN, 1, [Machine need alignment])
+-fi
++AS_IF([test $ac_cv_c_alignment = need],
++  [AC_DEFINE(NEED_ALIGN, 1, [Machine need alignment])])
++AS_IF([test $ac_cv_c_alignment = maybe],
++  [AC_MSG_WARN([Assuming aligned access is required when cross-compiling])
++   AC_DEFINE(NEED_ALIGN, 1, [Machine need alignment])])
+ ])
+ 
+ AC_C_ALIGNMENT
+
+From 5c71149bb77c6d4b70e1363f2918a55798ca6b4e Mon Sep 17 00:00:00 2001
+From: Ola Jeppsson <ola.jeppsson at gmail.com>
+Date: Mon, 7 Oct 2019 19:57:46 -0400
+Subject: [PATCH] configure: Simplify pointer size check
+
+Tested with:
+Autoconf 2.59 / Automake 1.7.9
+Autoconf 2.69 / Automake 1.16.1
+
+Downloaded from upstream PR:
+https://github.com/memcached/memcached/pull/552
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+---
+ configure.ac | 31 ++-----------------------------
+ restart.h    |  2 +-
+ 2 files changed, 3 insertions(+), 30 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 27dc9399f..7e5bd5d2d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -271,35 +271,8 @@ return sizeof(void*) == 8 ? 0 : 1;
+     ])
+ fi
+ 
+-dnl If data pointer is 64bit or not.
+-AC_CHECK_HEADERS([stdint.h])
+-AS_IF([test -z "$have_64bit_ptr"],
+-  [AC_RUN_IFELSE(
+-     [AC_LANG_PROGRAM([], [return sizeof(void*) == 8 ? 0 : 1;])],
+-     [have_64bit_ptr=yes ],
+-     [have_64bit_ptr=no],
+-     [dnl cross compile (this test requires C99)
+-      AS_IF([test "x$ac_cv_header_stdint_h" = xyes],
+-        [AC_COMPILE_IFELSE(
+-           [AC_LANG_PROGRAM([
+-              #include <stdint.h>
+-              #if UINTPTR_MAX == 0xFFFFFFFFFFFFFFFFUL
+-              /* 64 bit pointer */
+-              #else
+-              #error 32 bit pointer
+-              #endif
+-            ], [])],
+-            [have_64bit_ptr=yes],
+-            [have_64bit_ptr=no])],
+-        [have_64bit_ptr=unknown])
+-     ])
+-])
+-AS_IF([test "$have_64bit_ptr" = "unknown" ],[
+-  AC_MSG_ERROR([Cannot detect pointer size. Must pass have_64bit_ptr={yes,no} to configure.])
+-])
+-AS_IF([test "$have_64bit_ptr" = yes],[
+-  AC_DEFINE(HAVE_64BIT_PTR, 1, [data pointer is 64bit])
+-])
++dnl Check if data pointer is 64bit or not
++AC_CHECK_SIZEOF([void *])
+ 
+ # Issue 213: Search for clock_gettime to help people linking
+ #            with a static version of libevent
+diff --git a/restart.h b/restart.h
+index 76cd0a8d3..9de5096d3 100644
+--- a/restart.h
++++ b/restart.h
+@@ -4,7 +4,7 @@
+ #define RESTART_TAG_MAXLEN 255
+ 
+ // Track the pointer size for restart fiddling.
+-#ifdef HAVE_64BIT_PTR
++#if SIZEOF_VOID_P == 8
+     typedef uint64_t mc_ptr_t;
+ #else
+     typedef uint32_t mc_ptr_t;
diff --git a/package/memcached/memcached.hash b/package/memcached/memcached.hash
index df430cf4ff..98e47d6c07 100644
--- a/package/memcached/memcached.hash
+++ b/package/memcached/memcached.hash
@@ -1,6 +1,6 @@
-# From http://www.memcached.org/files/memcached-1.5.12.tar.gz.sha1
-sha1 f67096ba64b0c47668bcad5b680010c4f8987d4c  memcached-1.5.12.tar.gz
+# From http://www.memcached.org/files/memcached-1.5.19.tar.gz.sha1
+sha1 14e6a02e743838696fcb620edf6a2fd7e60cabec  memcached-1.5.19.tar.gz
 
 # Locally computed
-sha256 c02f97d5685617b209fbe25f3464317b234d765b427d254c2413410a5c095b29  memcached-1.5.12.tar.gz
+sha256 3ddcdaa2d14d215f3111a7448b79c889c57618a26e97ad989581f1880a5a4be0  memcached-1.5.19.tar.gz
 sha256 bc887c4ad8051fe690ace9528fe37a2e0bb362e6d963331d82e845ca9b585a0c  COPYING
diff --git a/package/memcached/memcached.mk b/package/memcached/memcached.mk
index b7c36ec155..130d3bb10f 100644
--- a/package/memcached/memcached.mk
+++ b/package/memcached/memcached.mk
@@ -4,13 +4,15 @@
 #
 ################################################################################
 
-MEMCACHED_VERSION = 1.5.12
+MEMCACHED_VERSION = 1.5.19
 MEMCACHED_SITE = http://www.memcached.org/files
 MEMCACHED_DEPENDENCIES = libevent
 MEMCACHED_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'
 MEMCACHED_CONF_OPTS = --disable-coverage
 MEMCACHED_LICENSE = BSD-3-Clause
 MEMCACHED_LICENSE_FILES = COPYING
+# 0001-Fix-cross-compilation-errors.patch
+MEMCACHED_AUTORECONF = YES
 
 ifeq ($(BR2_ENDIAN),"BIG")
 MEMCACHED_CONF_ENV += ac_cv_c_endian=big
-- 
2.20.1



More information about the buildroot mailing list