Accepting request 788672 from home:darix:branches:network:utilities

- apply patch from https://github.com/memcached/memcached/pull/635
  to fix crashes we saw during the testsuite
- disable extstore on s390 for now as there are known bugs on that
  platform

- limit tls support to 15 and above 

- disable lto until the 2 settings structs are resolved 

- 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)

OBS-URL: https://build.opensuse.org/request/show/788672
OBS-URL: https://build.opensuse.org/package/show/network:utilities/memcached?expand=0&rev=69
This commit is contained in:
Marcus Meissner 2020-03-31 08:00:45 +00:00 committed by Git OBS Bridge
parent 50257dc122
commit 647b1df213
8 changed files with 188 additions and 428 deletions

120
635.patch Normal file
View File

@ -0,0 +1,120 @@
From 5174ef33576f461d43f43b2019f5e10655b4c78f Mon Sep 17 00:00:00 2001
From: dormando <dormando@rydia.net>
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");

View File

@ -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);

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ac7c5af6e8b1acf5d5c644d162e046d8acf9302174af9f24c3f18e5481ce3a0d
size 490891

3
memcached-1.6.2.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:06720118c40689be0b85249b3dcb23c6e6d5e3ce53893aca9faced264145168b
size 536527

View File

@ -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 <sasl/sasl.h>
- ], [
+ ]], [[
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 <sys/time.h>
-#include <sys/types.h>
-#include <event.h>], [ 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 <sasl/sasl.h>
#include <sasl/saslplug.h>
#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 <inttypes.h>
#endif
#include <stdio.h>
- ], [
+ ]], [[
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 <sys/types.h>
#include <sys/socket.h>
- ],[
+ ]], [[
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 <sys/types.h>
-#include <netinet/in.h>
-#ifdef HAVE_INTTYPES_H
-#include <inttypes.h> */
-#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=

View File

@ -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 <endian.h>
+
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__

View File

@ -1,3 +1,40 @@
-------------------------------------------------------------------
Thu Mar 26 01:22:59 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- apply patch from https://github.com/memcached/memcached/pull/635
to fix crashes we saw during the testsuite
- disable extstore on s390 for now as there are known bugs on that
platform
-------------------------------------------------------------------
Tue Mar 24 21:27:33 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- limit tls support to 15 and above
-------------------------------------------------------------------
Tue Mar 24 21:20:51 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- disable lto until the 2 settings structs are resolved
-------------------------------------------------------------------
Tue Mar 24 20:54:55 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- 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

View File

@ -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,17 @@ 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
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 +89,22 @@ This package contains development files
%prep
%setup -q
%patch0
%patch1 -p1
%patch2
%patch -p1
%build
autoreconf -fi
%if 0%{?suse_version} <= 1140
export LIBEVENT_CFLAGS="-I%{_includedir}"
export LIBEVENT_LIBS="-levent"
%endif
%define _lto_cflags %{nil}
%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
--disable-extstore \
%endif
--bindir=%{_sbindir}
make %{?_smp_mflags}