diff --git a/634.patch b/634.patch new file mode 100644 index 0000000..87965f3 --- /dev/null +++ b/634.patch @@ -0,0 +1,59 @@ +From aba4ffb5fce37ba6d2977c190592fd35ad7f3462 Mon Sep 17 00:00:00 2001 +From: Kanak Kshetri +Date: Wed, 1 Apr 2020 07:34:16 -0500 +Subject: [PATCH] testapp: Fix failure with -flto=auto + +--- + Makefile.am | 2 +- + testapp.c | 11 +++++------ + 2 files changed, 6 insertions(+), 7 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 0d30161e7..d62facfce 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -4,7 +4,7 @@ noinst_PROGRAMS = memcached-debug sizes testapp timedrun + + BUILT_SOURCES= + +-testapp_SOURCES = testapp.c util.c util.h stats_prefix.c stats_prefix.h jenkins_hash.c murmur3_hash.c hash.c hash.h cache.c ++testapp_SOURCES = testapp.c util.c util.h stats_prefix.c stats_prefix.h jenkins_hash.c murmur3_hash.c hash.h cache.c + + timedrun_SOURCES = timedrun.c + +diff --git a/testapp.c b/testapp.c +index fffed794e..193adda86 100644 +--- a/testapp.c ++++ b/testapp.c +@@ -21,6 +21,7 @@ + #include "config.h" + #include "cache.h" + #include "hash.h" ++#include "jenkins_hash.h" + #include "stats_prefix.h" + #include "util.h" + #include "protocol_binary.h" +@@ -42,10 +43,7 @@ struct conn { + ssize_t (*write)(struct conn *c, const void *buf, size_t count); + }; + +-struct settings { +- char *hash_algorithm; +-}; +-struct settings settings; ++hash_func hash; + + static ssize_t tcp_read(struct conn *c, void *buf, size_t count); + static ssize_t tcp_write(struct conn *c, const void *buf, size_t count); +@@ -2306,8 +2304,9 @@ int main(int argc, char **argv) + enable_ssl = true; + } + #endif +- /* Stats prefix test is sensitive to the choice of hash function */ +- hash_init(JENKINS_HASH); ++ /* Initialized directly instead of using hash_init to avoid pulling in ++ the definition of settings struct from memcached.h */ ++ hash = jenkins_hash; + stats_prefix_init(':'); + + for (num_cases = 0; testcases[num_cases].description; num_cases++) { diff --git a/635.patch b/635.patch new file mode 100644 index 0000000..d30d9cb --- /dev/null +++ b/635.patch @@ -0,0 +1,120 @@ +From 5174ef33576f461d43f43b2019f5e10655b4c78f Mon Sep 17 00:00:00 2001 +From: dormando +Date: Wed, 25 Mar 2020 14:02:11 -0700 +Subject: [PATCH] restart: fix rare segfault on shutdown + +Client connections were being closed and cleaned up after worker +threads exit. In 2018 a patch went in to have the worker threads +actually free their event base when stopped. If your system is strict +enough (which is apparently none out of the dozen+ systems we've tested +against!) it will segfault on invalid memory. + +This change leaves the workers hung while they wait for connections to +be centrally closed. I would prefer to have each worker thread close +its own connections for speed if nothing else, but we still need to +close the listener connections and any connections currently open in +side channels. + +Much apprecation to darix for helping narrow this down, as it presented +as a wiped stack that only appeared in a specific build environment on +a specific linux distribution. + +Hopefully with all of the valgrind noise fixes lately we can start +running it more regularly and spot these early. +--- + memcached.c | 19 ++++++++++++------- + memcached.h | 3 +-- + thread.c | 14 ++++++++++++++ + 3 files changed, 27 insertions(+), 9 deletions(-) + +diff --git a/memcached.c b/memcached.c +index 2592b3f94..dd52dd04c 100644 +--- a/memcached.c ++++ b/memcached.c +@@ -939,6 +939,18 @@ static void conn_close(conn *c) { + return; + } + ++// Since some connections might be off on side threads and some are managed as ++// listeners we need to walk through them all from a central point. ++// Must be called with all worker threads hung or in the process of closing. ++void conn_close_all(void) { ++ int i; ++ for (i = 0; i < max_fds; i++) { ++ if (conns[i] && conns[i]->state != conn_closed) { ++ conn_close(conns[i]); ++ } ++ } ++} ++ + /** + * Convert a state name to a human readable form. + */ +@@ -10126,13 +10138,6 @@ int main (int argc, char **argv) { + + fprintf(stderr, "Gracefully stopping\n"); + stop_threads(); +- int i; +- // FIXME: make a function callable from threads.c +- for (i = 0; i < max_fds; i++) { +- if (conns[i] && conns[i]->state != conn_closed) { +- conn_close(conns[i]); +- } +- } + if (memory_file != NULL) { + restart_mmap_close(); + } +diff --git a/memcached.h b/memcached.h +index a3ddd88c1..bdc38bd9c 100644 +--- a/memcached.h ++++ b/memcached.h +@@ -820,9 +820,8 @@ enum delta_result_type add_delta(conn *c, const char *key, + const int64_t delta, char *buf, + uint64_t *cas); + void accept_new_conns(const bool do_accept); +-conn *conn_from_freelist(void); +-bool conn_add_to_freelist(conn *c); + void conn_close_idle(conn *c); ++void conn_close_all(void); + item *item_alloc(char *key, size_t nkey, int flags, rel_time_t exptime, int nbytes); + #define DO_UPDATE true + #define DONT_UPDATE false +diff --git a/thread.c b/thread.c +index ed9765a48..e7f96dcba 100644 +--- a/thread.c ++++ b/thread.c +@@ -204,6 +204,7 @@ void stop_threads(void) { + if (settings.verbose > 0) + fprintf(stderr, "asking workers to stop\n"); + buf[0] = 's'; ++ pthread_mutex_lock(&worker_hang_lock); + pthread_mutex_lock(&init_lock); + init_count = 0; + for (i = 0; i < settings.num_threads; i++) { +@@ -215,6 +216,8 @@ void stop_threads(void) { + wait_for_thread_registration(settings.num_threads); + pthread_mutex_unlock(&init_lock); + ++ // All of the workers are hung but haven't done cleanup yet. ++ + if (settings.verbose > 0) + fprintf(stderr, "asking background threads to stop\n"); + +@@ -236,6 +239,17 @@ void stop_threads(void) { + if (settings.verbose > 0) + fprintf(stderr, "stopped idle timeout thread\n"); + ++ // Close all connections then let the workers finally exit. ++ if (settings.verbose > 0) ++ fprintf(stderr, "closing connections\n"); ++ conn_close_all(); ++ pthread_mutex_unlock(&worker_hang_lock); ++ if (settings.verbose > 0) ++ fprintf(stderr, "reaping worker threads\n"); ++ for (i = 0; i < settings.num_threads; i++) { ++ pthread_join(threads[i].thread_id, NULL); ++ } ++ + if (settings.verbose > 0) + fprintf(stderr, "all background threads stopped\n"); + diff --git a/memcached-1.4.5.dif b/memcached-1.4.5.dif deleted file mode 100644 index 59ac2b2..0000000 --- a/memcached-1.4.5.dif +++ /dev/null @@ -1,27 +0,0 @@ -Index: memcached.c -=================================================================== ---- memcached.c.orig -+++ memcached.c -@@ -2807,15 +2807,19 @@ void append_stat(const char *name, ADD_S - inline static void process_stats_detail(conn *c, const char *command) { - assert(c != NULL); - -- if (strcmp(command, "on") == 0) { -+ char on[] = "on"; -+ char off[] = "off"; -+ char dump[] = "dump"; -+ -+ if (strcmp(command, on) == 0) { - settings.detail_enabled = 1; - out_string(c, "OK"); - } -- else if (strcmp(command, "off") == 0) { -+ else if (strcmp(command, off) == 0) { - settings.detail_enabled = 0; - out_string(c, "OK"); - } -- else if (strcmp(command, "dump") == 0) { -+ else if (strcmp(command, dump) == 0) { - int len; - char *stats = stats_prefix_dump(&len); - write_and_free(c, stats, len); diff --git a/memcached-1.5.17.tar.gz b/memcached-1.5.17.tar.gz deleted file mode 100644 index 7f2427d..0000000 --- a/memcached-1.5.17.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac7c5af6e8b1acf5d5c644d162e046d8acf9302174af9f24c3f18e5481ce3a0d -size 490891 diff --git a/memcached-1.6.2.tar.gz b/memcached-1.6.2.tar.gz new file mode 100644 index 0000000..d91f3e5 --- /dev/null +++ b/memcached-1.6.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06720118c40689be0b85249b3dcb23c6e6d5e3ce53893aca9faced264145168b +size 536527 diff --git a/memcached-autofoo.patch b/memcached-autofoo.patch deleted file mode 100644 index dfec352..0000000 --- a/memcached-autofoo.patch +++ /dev/null @@ -1,321 +0,0 @@ -Index: memcached-1.5.17/configure.ac -=================================================================== ---- memcached-1.5.17.orig/configure.ac 2019-07-16 00:34:51.000000000 +0200 -+++ memcached-1.5.17/configure.ac 2019-09-03 11:47:53.521535332 +0200 -@@ -4,10 +4,13 @@ m4_include([m4/c99-backport.m4]) - AC_INIT([memcached], [VERSION_NUMBER], [memcached@googlegroups.com]) - AC_CANONICAL_HOST - AC_CONFIG_SRCDIR([memcached.c]) --AM_INIT_AUTOMAKE([foreign]) -+AM_INIT_AUTOMAKE([foreign -Wall -Wno-portability tar-pax subdir-objects]) - AM_CONFIG_HEADER([config.h]) - - AC_PROG_CC -+AC_PROG_CC_STDC -+AC_USE_SYSTEM_EXTENSIONS -+AC_SYS_LARGEFILE - - dnl ********************************************************************** - dnl DETECT_ICC ([ACTION-IF-YES], [ACTION-IF-NO]) -@@ -113,14 +116,11 @@ AC_DEFUN([AC_C_DETECT_SASL_CB_GETCONF], - [ - AC_CACHE_CHECK([for SASL_CB_GETCONF], - [ac_cv_c_sasl_cb_getconf], -- [AC_TRY_COMPILE( -- [ -+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include -- ], [ -+ ]], [[ - unsigned long val = SASL_CB_GETCONF; -- ], -- [ ac_cv_c_sasl_cb_getconf=yes ], -- [ ac_cv_c_sasl_cb_getconf=no ]) -+ ]])],[ ac_cv_c_sasl_cb_getconf=yes ],[ ac_cv_c_sasl_cb_getconf=no ]) - ]) - AS_IF([test "$ac_cv_c_sasl_cb_getconf" = "yes"], - [AC_DEFINE([HAVE_SASL_CB_GETCONF], 1, -@@ -251,23 +251,6 @@ fi - AC_SUBST(PROFILER_FLAGS) - - --AC_ARG_ENABLE(64bit, -- [AS_HELP_STRING([--enable-64bit],[build 64bit version])]) --if test "x$enable_64bit" = "xyes" --then -- org_cflags=$CFLAGS -- CFLAGS=-m64 -- AC_RUN_IFELSE( -- [AC_LANG_PROGRAM([], [dnl --return sizeof(void*) == 8 ? 0 : 1; -- ]) -- ],[ -- CFLAGS="-m64 $org_cflags" -- ],[ -- AC_MSG_ERROR([Don't know how to build a 64-bit object.]) -- ]) --fi -- - # Issue 213: Search for clock_gettime to help people linking - # with a static version of libevent - AC_SEARCH_LIBS(clock_gettime, rt) -@@ -276,91 +259,7 @@ AC_SEARCH_LIBS(clock_gettime, rt) - AC_SEARCH_LIBS(socket, socket) - AC_SEARCH_LIBS(gethostbyname, nsl) - --trylibeventdir="" --AC_ARG_WITH(libevent, -- [ --with-libevent=PATH Specify path to libevent installation ], -- [ -- if test "x$withval" != "xno" ; then -- trylibeventdir=$withval -- fi -- ] --) -- --dnl ------------------------------------------------------ --dnl libevent detection. swiped from Tor. modified a bit. -- --LIBEVENT_URL=https://www.monkey.org/~provos/libevent/ -- --AC_CACHE_CHECK([for libevent directory], ac_cv_libevent_dir, [ -- saved_LIBS="$LIBS" -- saved_LDFLAGS="$LDFLAGS" -- saved_CPPFLAGS="$CPPFLAGS" -- le_found=no -- for ledir in $trylibeventdir "" $prefix /usr/local ; do -- LDFLAGS="$saved_LDFLAGS" -- LIBS="-levent $saved_LIBS" -- -- # Skip the directory if it isn't there. -- if test ! -z "$ledir" -a ! -d "$ledir" ; then -- continue; -- fi -- if test ! -z "$ledir" ; then -- if test -d "$ledir/lib" ; then -- LDFLAGS="-L$ledir/lib $LDFLAGS" -- else -- LDFLAGS="-L$ledir $LDFLAGS" -- fi -- if test -d "$ledir/include" ; then -- CPPFLAGS="-I$ledir/include $CPPFLAGS" -- else -- CPPFLAGS="-I$ledir $CPPFLAGS" -- fi -- fi -- # Can I compile and link it? -- AC_TRY_LINK([#include --#include --#include ], [ event_init(); ], -- [ libevent_linked=yes ], [ libevent_linked=no ]) -- if test $libevent_linked = yes; then -- if test ! -z "$ledir" ; then -- ac_cv_libevent_dir=$ledir -- _myos=`echo $target_os | cut -f 1 -d .` -- AS_IF(test "$SUNCC" = "yes" -o "x$_myos" = "xsolaris2", -- [saved_LDFLAGS="$saved_LDFLAGS -Wl,-R$ledir/lib"], -- [AS_IF(test "$GCC" = "yes", -- [saved_LDFLAGS="$saved_LDFLAGS -Wl,-rpath,$ledir/lib"])]) -- else -- ac_cv_libevent_dir="(system)" -- fi -- le_found=yes -- break -- fi -- done -- LIBS="$saved_LIBS" -- LDFLAGS="$saved_LDFLAGS" -- CPPFLAGS="$saved_CPPFLAGS" -- if test $le_found = no ; then -- AC_MSG_ERROR([libevent is required. You can get it from $LIBEVENT_URL -- -- If it's already installed, specify its path using --with-libevent=/dir/ --]) -- fi --]) --LIBS="-levent $LIBS" --if test $ac_cv_libevent_dir != "(system)"; then -- if test -d "$ac_cv_libevent_dir/lib" ; then -- LDFLAGS="-L$ac_cv_libevent_dir/lib $LDFLAGS" -- le_libdir="$ac_cv_libevent_dir/lib" -- else -- LDFLAGS="-L$ac_cv_libevent_dir $LDFLAGS" -- le_libdir="$ac_cv_libevent_dir" -- fi -- if test -d "$ac_cv_libevent_dir/include" ; then -- CPPFLAGS="-I$ac_cv_libevent_dir/include $CPPFLAGS" -- else -- CPPFLAGS="-I$ac_cv_libevent_dir $CPPFLAGS" -- fi --fi -+PKG_CHECK_MODULES([LIBEVENT], [libevent]) - - trylibssldir="" - AC_ARG_WITH(libssl, -@@ -478,14 +377,14 @@ dnl ************************************ - AC_DEFUN([AC_HAVE_SASL_CALLBACK_FT], - [AC_CACHE_CHECK(for sasl_callback_ft, ac_cv_has_sasl_callback_ft, - [ -- AC_TRY_COMPILE([ -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #ifdef HAVE_SASL_SASL_H - #include - #include - #endif -- ],[ -+ ]], [[ - sasl_callback_ft a_callback; -- ],[ -+ ]])],[ - ac_cv_has_sasl_callback_ft=yes - ],[ - ac_cv_has_sasl_callback_ft=no -@@ -507,18 +406,15 @@ AC_DEFUN([AC_C_DETECT_UINT64_SUPPORT], - [ - AC_CACHE_CHECK([for print macros for integers (C99 section 7.8.1)], - [ac_cv_c_uint64_support], -- [AC_TRY_COMPILE( -- [ -+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #ifdef HAVE_INTTYPES_H - #include - #endif - #include -- ], [ -+ ]], [[ - uint64_t val = 0; - fprintf(stderr, "%" PRIu64 "\n", val); -- ], -- [ ac_cv_c_uint64_support=yes ], -- [ ac_cv_c_uint64_support=no ]) -+ ]])],[ ac_cv_c_uint64_support=yes ],[ ac_cv_c_uint64_support=no ]) - ]) - ]) - -@@ -537,12 +433,12 @@ dnl Check if the type socklen_t is defin - AC_DEFUN([AC_C_SOCKLEN_T], - [AC_CACHE_CHECK(for socklen_t, ac_cv_c_socklen_t, - [ -- AC_TRY_COMPILE([ -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include - #include -- ],[ -+ ]], [[ - socklen_t foo; -- ],[ -+ ]])],[ - ac_cv_c_socklen_t=yes - ],[ - ac_cv_c_socklen_t=no -@@ -581,35 +477,6 @@ fi - - AC_C_ENDIAN - --AC_DEFUN([AC_C_HTONLL], --[ -- AC_MSG_CHECKING([for htonll]) -- have_htoll="no" -- AC_TRY_LINK([ --#include --#include --#ifdef HAVE_INTTYPES_H --#include */ --#endif -- ], [ -- return htonll(0); -- ], [ -- have_htoll="yes" -- AC_DEFINE([HAVE_HTONLL], [1], [Have ntohll]) -- ], [ -- have_htoll="no" -- ]) -- -- AC_MSG_RESULT([$have_htoll]) --]) -- --AC_C_HTONLL -- --dnl Check whether the user's system supports pthread --AC_SEARCH_LIBS(pthread_create, pthread) --if test "x$ac_cv_search_pthread_create" = "xno"; then -- AC_MSG_ERROR([Can't enable threads without the POSIX thread library.]) --fi - - AC_CHECK_FUNCS(mlockall) - AC_CHECK_FUNCS(getpagesizes) -@@ -670,13 +537,13 @@ dnl These were added in 4.1.2, but 32bit - dnl lacks testable defines. - have_gcc_atomics=no - AC_MSG_CHECKING(for GCC atomics) --AC_TRY_LINK([],[ -+AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ - unsigned short a; - unsigned short b; - b = __sync_add_and_fetch(&a, 1); - b = __sync_sub_and_fetch(&a, 2); -- ],[have_gcc_atomics=yes -- AC_DEFINE(HAVE_GCC_ATOMICS, 1, [GCC Atomics available])]) -+ ]])],[have_gcc_atomics=yes -+ AC_DEFINE(HAVE_GCC_ATOMICS, 1, [GCC Atomics available])],[]) - AC_MSG_RESULT($have_gcc_atomics) - - dnl Check for usage of 64bit atomics -@@ -758,29 +625,5 @@ AM_CONDITIONAL([BUILD_SPECIFICATIONS], - [test "x$enable_docs" != "xno" -a "x$XML2RFC" != "xno" -a "x$XSLTPROC" != "xno"]) - - --dnl Let the compiler be a bit more picky. Please note that you cannot --dnl specify these flags to the compiler before AC_CHECK_FUNCS, because --dnl the test program will generate a compilation warning and hence fail --dnl to detect the function ;-) --if test "$ICC" = "yes" --then -- dnl ICC trying to be gcc. -- CFLAGS="$CFLAGS -diag-disable 187 -Wall -Werror" -- AC_DEFINE([_GNU_SOURCE],[1],[find sigignore on Linux]) --elif test "$GCC" = "yes" --then -- GCC_VERSION=`$CC -dumpversion` -- CFLAGS="$CFLAGS -Wall -Werror -pedantic -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls" -- case $GCC_VERSION in -- 4.4.*) -- CFLAGS="$CFLAGS -fno-strict-aliasing" -- ;; -- esac -- AC_DEFINE([_GNU_SOURCE],[1],[find sigignore on Linux]) --elif test "$SUNCC" = "yes" --then -- CFLAGS="$CFLAGS -errfmt=error -errwarn -errshort=tags" --fi -- - AC_CONFIG_FILES(Makefile doc/Makefile) - AC_OUTPUT -Index: memcached-1.5.17/Makefile.am -=================================================================== ---- memcached-1.5.17.orig/Makefile.am 2019-08-28 00:17:56.000000000 +0200 -+++ memcached-1.5.17/Makefile.am 2019-09-03 11:45:07.724581146 +0200 -@@ -1,3 +1,6 @@ -+AM_CFLAGS = -pthread -Wall -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -+AM_CPPFLAGS = -include $(top_builddir)/config.h -+ - bin_PROGRAMS = memcached - pkginclude_HEADERS = protocol_binary.h - noinst_PROGRAMS = memcached-debug sizes testapp timedrun -@@ -63,11 +66,12 @@ memcached_SOURCES += tls.c tls.h - endif - - memcached_debug_SOURCES = $(memcached_SOURCES) --memcached_CPPFLAGS = -DNDEBUG --memcached_debug_LDADD = @PROFILER_LDFLAGS@ --memcached_debug_CFLAGS = @PROFILER_FLAGS@ -+memcached_CPPFLAGS = $(AM_CPPFLAGS) -DNDEBUG -+memcached_debug_LDADD = @PROFILER_LDFLAGS@ $(LIBEVENT_LIBS) -+memcached_debug_CFLAGS = @PROFILER_FLAGS@ $(AM_CFLAGS) -+memcached_debug_CPPFLAGS = $(AM_CPPFLAGS) - --memcached_LDADD = -+memcached_LDADD = $(LIBEVENT_LIBS) - memcached_DEPENDENCIES = - memcached_debug_DEPENDENCIES = - CLEANFILES= diff --git a/memcached-use-endian_h.patch b/memcached-use-endian_h.patch deleted file mode 100644 index b790a5b..0000000 --- a/memcached-use-endian_h.patch +++ /dev/null @@ -1,61 +0,0 @@ -Index: util.c -=================================================================== ---- util.c.orig -+++ util.c -@@ -167,30 +167,3 @@ void vperror(const char *fmt, ...) { - perror(buf); - } - --#ifndef HAVE_HTONLL --static uint64_t mc_swap64(uint64_t in) { --#ifdef ENDIAN_LITTLE -- /* Little endian, flip the bytes around until someone makes a faster/better -- * way to do this. */ -- int64_t rv = 0; -- int i = 0; -- for(i = 0; i<8; i++) { -- rv = (rv << 8) | (in & 0xff); -- in >>= 8; -- } -- return rv; --#else -- /* big-endian machines don't need byte swapping */ -- return in; --#endif --} -- --uint64_t ntohll(uint64_t val) { -- return mc_swap64(val); --} -- --uint64_t htonll(uint64_t val) { -- return mc_swap64(val); --} --#endif -- -Index: util.h -=================================================================== ---- util.h.orig -+++ util.h -@@ -11,16 +11,17 @@ bool uriencode(const char *src, char *ds - * - * returns true if conversion succeeded. - */ -+ -+#include -+ - bool safe_strtoull(const char *str, uint64_t *out); - bool safe_strtoll(const char *str, int64_t *out); - bool safe_strtoul(const char *str, uint32_t *out); - bool safe_strtol(const char *str, int32_t *out); - bool safe_strtod(const char *str, double *out); - --#ifndef HAVE_HTONLL --extern uint64_t htonll(uint64_t); --extern uint64_t ntohll(uint64_t); --#endif -+#define htonll(x) htobe64(x) -+#define ntohll(x) be64toh(x) - - #ifdef __GCC - # define __gcc_attribute__ __attribute__ diff --git a/memcached.changes b/memcached.changes index 8c18b5e..e9ca770 100644 --- a/memcached.changes +++ b/memcached.changes @@ -1,3 +1,52 @@ +------------------------------------------------------------------- +Wed Apr 1 23:59:38 UTC 2020 - Marcus Rueckert + +- disable extstore also on ppc(64) + +------------------------------------------------------------------- +Wed Apr 1 23:26:11 UTC 2020 - Marcus Rueckert + +- apply patch from https://github.com/memcached/memcached/pull/634 + fix building with LTO and also building with -fno-common. + (634.patch) + +------------------------------------------------------------------- +Thu Mar 26 01:22:59 UTC 2020 - Marcus Rueckert + +- apply patch from https://github.com/memcached/memcached/pull/635 + to fix crashes we saw during the testsuite (635.patch) +- disable extstore on s390 for now as there are known bugs on that + platform + +------------------------------------------------------------------- +Tue Mar 24 21:27:33 UTC 2020 - Marcus Rueckert + +- limit tls support to 15 and above + +------------------------------------------------------------------- +Tue Mar 24 21:20:51 UTC 2020 - Marcus Rueckert + +- disable lto until the 2 settings structs are resolved + +------------------------------------------------------------------- +Tue Mar 24 20:54:55 UTC 2020 - Marcus Rueckert + +- update to version 1.6.2 (boo# 1167522) CVE-2020-10931 + https://github.com/memcached/memcached/wiki/ReleaseNotes162 + https://github.com/memcached/memcached/wiki/ReleaseNotes161 + https://github.com/memcached/memcached/wiki/ReleaseNotes160 + https://github.com/memcached/memcached/wiki/ReleaseNotes1522 + https://github.com/memcached/memcached/wiki/ReleaseNotes1521 + https://github.com/memcached/memcached/wiki/ReleaseNotes1520 + https://github.com/memcached/memcached/wiki/ReleaseNotes1519 + https://github.com/memcached/memcached/wiki/ReleaseNotes1518 +- dropped all patches after reviewing with upstream: + memcached-1.4.5.dif + memcached-autofoo.patch + memcached-use-endian_h.patch +- enable TLS support (new BR: openssl-devel perl-IO-Socket-SSL + perl-Net-SSLeay) + ------------------------------------------------------------------- Tue Sep 3 09:53:22 UTC 2019 - pgajdos@suse.com diff --git a/memcached.spec b/memcached.spec index 9d1cae5..7a9bba9 100644 --- a/memcached.spec +++ b/memcached.spec @@ -1,7 +1,7 @@ # # spec file for package memcached # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,8 +20,15 @@ %if ! %{defined _fillupdir} %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif + +%if 0%{?suse_version} > 1500 +%bcond_without tls +%else +%bcond_with tls +%endif + Name: memcached -Version: 1.5.17 +Version: 1.6.2 Release: 0 Summary: A high-performance, distributed memory object caching system License: BSD-3-Clause @@ -32,14 +39,18 @@ Source1: %{name}.init Source2: %{name}.sysconfig Source3: memcached-rpmlintrc Source4: memcached.service -Patch0: memcached-1.4.5.dif -Patch1: memcached-autofoo.patch -Patch2: memcached-use-endian_h.patch +Patch: https://patch-diff.githubusercontent.com/raw/memcached/memcached/pull/635.patch +Patch1: https://patch-diff.githubusercontent.com/raw/memcached/memcached/pull/634.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: cyrus-sasl-devel BuildRequires: libevent-devel BuildRequires: libtool +%if %{with tls} +BuildRequires: openssl-devel >= 1.1.0 +BuildRequires: perl-IO-Socket-SSL +BuildRequires: perl-Net-SSLeay +%endif BuildRequires: pkgconfig Requires(pre): %fillup_prereq Requires(pre): %{_sbindir}/groupadd @@ -79,20 +90,23 @@ This package contains development files %prep %setup -q -%patch0 +%patch -p1 %patch1 -p1 -%patch2 %build autoreconf -fi -%if 0%{?suse_version} <= 1140 -export LIBEVENT_CFLAGS="-I%{_includedir}" -export LIBEVENT_LIBS="-levent" -%endif %configure \ - --enable-sasl \ - --disable-coverage \ - --bindir=%{_sbindir} +%if %{with tls} + --enable-tls \ +%endif + --enable-sasl \ + --enable-sasl-pwdb \ + --enable-seccomp \ + --disable-coverage \ + %ifarch s390 s390x ppc ppc64 + --disable-extstore \ + %endif + --bindir=%{_sbindir} make %{?_smp_mflags}