From 9feb6425ff22d5417a28fc31cd04aedadd67c24a Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sun, 28 Aug 2022 23:55:18 +0200 Subject: [PATCH] package/memcached: add openssl optional dependency openssl is an optional dependency since version 1.5.13 and https://github.com/memcached/memcached/commit/ee1cfe3bf9384d1a93545fc942e25bed6437d910 which must be handled through pkg-config to avoid static build failure Signed-off-by: Fabrice Fontaine Signed-off-by: Arnout Vandecappelle (cherry picked from commit c72795e3d6d321de82b888a24962061dd5c30353) Signed-off-by: Peter Korsgaard --- ...c-use-pkg-config-to-retrieve-openssl.patch | 181 ++++++++++++++++++ package/memcached/memcached.mk | 7 + 2 files changed, 188 insertions(+) create mode 100644 package/memcached/0004-configure-ac-use-pkg-config-to-retrieve-openssl.patch diff --git a/package/memcached/0004-configure-ac-use-pkg-config-to-retrieve-openssl.patch b/package/memcached/0004-configure-ac-use-pkg-config-to-retrieve-openssl.patch new file mode 100644 index 0000000000..402fa03b3b --- /dev/null +++ b/package/memcached/0004-configure-ac-use-pkg-config-to-retrieve-openssl.patch @@ -0,0 +1,181 @@ +From 656dedad48c81541060448d008b90290196263c5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 6 Sep 2020 23:38:19 +0200 +Subject: [PATCH] configure.ac: use pkg-config to retrieve openssl + +Use pkg-config to retrieve openssl dependencies such as -latomic or -lz + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/memcached/memcached/commit/656dedad48c81541060448d008b90290196263c5] +--- + README.md | 2 +- + configure.ac | 133 ++++++++++++++++++++++++++------------------------- + 2 files changed, 69 insertions(+), 66 deletions(-) + +diff --git a/README.md b/README.md +index 3ce1bc2156..8fe067b767 100644 +--- a/README.md ++++ b/README.md +@@ -21,7 +21,7 @@ list to ask questions, github issues aren't seen by everyone! + * libseccomp (optional, experimental, linux) - enables process restrictions for + better security. Tested only on x86-64 architectures. + * openssl (optional) - enables TLS support. need relatively up to date +- version. ++ version. pkg-config is needed to find openssl dependencies (such as -lz). + + ## Environment + +diff --git a/configure.ac b/configure.ac +index a0851f2131..2959a86c89 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -437,80 +437,83 @@ AC_ARG_WITH(libssl, + dnl ---------------------------------------------------------------------------- + dnl libssl detection. swiped from libevent. modified for openssl detection. + ++PKG_PROG_PKG_CONFIG + OPENSSL_URL=https://www.openssl.org/ + if test "x$enable_tls" = "xyes"; then +- AC_CACHE_CHECK([for libssl directory], ac_cv_libssl_dir, [ +- saved_LIBS="$LIBS" +- saved_LDFLAGS="$LDFLAGS" +- saved_CPPFLAGS="$CPPFLAGS" +- le_found=no +- for ledir in $trylibssldir "" $prefix /usr/local ; do ++ PKG_CHECK_MODULES(OPENSSL, openssl, [LIBS="$LIBS $OPENSSL_LIBS" CFLAGS="$CFLAGS $OPENSSL_CFLAGS"], [ ++ AC_CACHE_CHECK([for libssl directory], ac_cv_libssl_dir, [ ++ saved_LIBS="$LIBS" ++ saved_LDFLAGS="$LDFLAGS" ++ saved_CPPFLAGS="$CPPFLAGS" ++ le_found=no ++ for ledir in $trylibssldir "" $prefix /usr/local ; do ++ LDFLAGS="$saved_LDFLAGS" ++ LIBS="-lssl -lcrypto $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 ++ #include ], [ SSL_CTX* ssl_ctx = SSL_CTX_new(TLS_server_method()); ++ assert(OPENSSL_VERSION_NUMBER >= 0x10100000L);], ++ [ libssl_linked=yes ], [ libssl_linked=no ]) ++ if test $libssl_linked = yes; then ++ if test ! -z "$ledir" ; then ++ ac_cv_libssl_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_libssl_dir="(system)" ++ fi ++ le_found=yes ++ break ++ fi ++ done ++ LIBS="$saved_LIBS" + LDFLAGS="$saved_LDFLAGS" +- LIBS="-lssl -lcrypto $saved_LIBS" ++ CPPFLAGS="$saved_CPPFLAGS" ++ if test $le_found = no ; then ++ AC_MSG_ERROR([libssl (at least version 1.1.0) is required. You can get it from $OPENSSL_URL + +- # Skip the directory if it isn't there. +- if test ! -z "$ledir" -a ! -d "$ledir" ; then +- continue; ++ If it's already installed, specify its path using --with-libssl=/dir/ ++ ]) + 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 ++ ]) ++ LIBS="-lssl -lcrypto $LIBS" ++ if test $ac_cv_libssl_dir != "(system)"; then ++ if test -d "$ac_cv_libssl_dir/lib" ; then ++ LDFLAGS="-L$ac_cv_libssl_dir/lib $LDFLAGS" ++ le_libdir="$ac_cv_libssl_dir/lib" ++ else ++ LDFLAGS="-L$ac_cv_libssl_dir $LDFLAGS" ++ le_libdir="$ac_cv_libssl_dir" + fi +- # Can I compile and link it? +- AC_TRY_LINK([#include +- #include +- #include +- #include ], [ SSL_CTX* ssl_ctx = SSL_CTX_new(TLS_server_method()); +- assert(OPENSSL_VERSION_NUMBER >= 0x10100000L);], +- [ libssl_linked=yes ], [ libssl_linked=no ]) +- if test $libssl_linked = yes; then +- if test ! -z "$ledir" ; then +- ac_cv_libssl_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_libssl_dir="(system)" +- fi +- le_found=yes +- break ++ if test -d "$ac_cv_libssl_dir/include" ; then ++ CPPFLAGS="-I$ac_cv_libssl_dir/include $CPPFLAGS" ++ else ++ CPPFLAGS="-I$ac_cv_libssl_dir $CPPFLAGS" + fi +- done +- LIBS="$saved_LIBS" +- LDFLAGS="$saved_LDFLAGS" +- CPPFLAGS="$saved_CPPFLAGS" +- if test $le_found = no ; then +- AC_MSG_ERROR([libssl (at least version 1.1.0) is required. You can get it from $OPENSSL_URL +- +- If it's already installed, specify its path using --with-libssl=/dir/ +- ]) + fi + ]) +- LIBS="-lssl -lcrypto $LIBS" +- if test $ac_cv_libssl_dir != "(system)"; then +- if test -d "$ac_cv_libssl_dir/lib" ; then +- LDFLAGS="-L$ac_cv_libssl_dir/lib $LDFLAGS" +- le_libdir="$ac_cv_libssl_dir/lib" +- else +- LDFLAGS="-L$ac_cv_libssl_dir $LDFLAGS" +- le_libdir="$ac_cv_libssl_dir" +- fi +- if test -d "$ac_cv_libssl_dir/include" ; then +- CPPFLAGS="-I$ac_cv_libssl_dir/include $CPPFLAGS" +- else +- CPPFLAGS="-I$ac_cv_libssl_dir $CPPFLAGS" +- fi +- fi + fi + + if test "x$enable_static" = "xyes"; then diff --git a/package/memcached/memcached.mk b/package/memcached/memcached.mk index 842c0b42fa..1fcb8c2afa 100644 --- a/package/memcached/memcached.mk +++ b/package/memcached/memcached.mk @@ -22,4 +22,11 @@ else MEMCACHED_CONF_ENV += ac_cv_c_endian=little endif +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MEMCACHED_CONF_OPTS += --enable-tls +MEMCACHED_DEPENDENCIES += host-pkgconf openssl +else +MEMCACHED_CONF_OPTS += --disable-tls +endif + $(eval $(autotools-package))