diff --git a/libp11-0.4.2-soname.patch b/libp11-0.4.2-soname.patch new file mode 100644 index 0000000..22e5a2e --- /dev/null +++ b/libp11-0.4.2-soname.patch @@ -0,0 +1,80 @@ +diff --git a/configure.ac b/configure.ac +index 2f79b80..c56acf9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2,6 +2,7 @@ dnl -*- mode: m4; -*- + + AC_PREREQ(2.60) + ++# When bumping versions see also the LT vesion numbers below. + define([PACKAGE_VERSION_MAJOR], [0]) + define([PACKAGE_VERSION_MINOR], [4]) + define([PACKAGE_VERSION_FIX], [2]) +@@ -17,15 +18,6 @@ LIBP11_VERSION_MAJOR="PACKAGE_VERSION_MAJOR" + LIBP11_VERSION_MINOR="PACKAGE_VERSION_MINOR" + LIBP11_VERSION_FIX="PACKAGE_VERSION_FIX" + +-# LT Version numbers, remember to change them just *before* a release. +-# (Code changed: REVISION++) +-# (Oldest interface removed: OLDEST++) +-# (Interfaces added: CURRENT++, REVISION=0) +-LIBP11_LT_CURRENT="6" +-LIBP11_LT_OLDEST="2" +-LIBP11_LT_REVISION="2" +-LIBP11_LT_AGE="$((${LIBP11_LT_CURRENT}-${LIBP11_LT_OLDEST}))" +- + AC_CONFIG_SRCDIR([src/libp11.h]) + + # silent build by default +@@ -36,6 +28,35 @@ AC_PROG_CC + PKG_PROG_PKG_CONFIG + AC_C_BIGENDIAN + ++# we need to set our soversion based on openssl's soversion to avoid ++# issues with applications linking to new openssl, old libp11, and vice versa ++case "`$PKG_CONFIG --modversion --silence-errors libcrypto || \ ++ $PKG_CONFIG --modversion openssl`" in ++ 1.1.*) # Predicted engines directory prefix for OpenSSL 1.1.x ++ LIBP11_LT_OLDEST="3" ++ debian_ssl_prefix="openssl-1.1.0";; ++ 1.0.*) # Engines directory prefix for OpenSSL 1.0.x ++ LIBP11_LT_OLDEST="2" ++ debian_ssl_prefix="openssl-1.0.0";; ++ *) # Engines directory prefix for OpenSSL 0.9.x ++ LIBP11_LT_OLDEST="2" ++ debian_ssl_prefix="ssl";; ++esac ++ ++ ++# LT Version numbers, remember to change them just *before* a release. ++# (Code changed: REVISION++) ++# (Oldest interface removed: OLDEST++) ++# (Interfaces added: CURRENT++, REVISION=0) ++# ++# Note that at this moment we tie the oldest (soname) version to ++# the openssl version we link to. If the ABI is broken on a later ++# release, we should either stick to supporting a single openssl ABI ++# or bump the LT_OLDEST version sufficiently to avoid clashes. ++LIBP11_LT_REVISION="2" ++LIBP11_LT_CURRENT="6" ++LIBP11_LT_AGE="$((${LIBP11_LT_CURRENT}-${LIBP11_LT_OLDEST}))" ++ + gl_LD_VERSION_SCRIPT + + AC_ARG_WITH( +@@ -108,15 +129,6 @@ AC_ARG_WITH( + if test "${enginesdir}" = ""; then + libcryptodir="`$PKG_CONFIG --variable=libdir --silence-errors libcrypto || \ + $PKG_CONFIG --variable=libdir openssl`" +- case "`$PKG_CONFIG --modversion --silence-errors libcrypto || \ +- $PKG_CONFIG --modversion openssl`" in +- 1.1.*) # Predicted engines directory prefix for OpenSSL 1.1.x +- debian_ssl_prefix="openssl-1.1.0";; +- 1.0.*) # Engines directory prefix for OpenSSL 1.0.x +- debian_ssl_prefix="openssl-1.0.0";; +- *) # Engines directory prefix for OpenSSL 0.9.x +- debian_ssl_prefix="ssl";; +- esac + if test -d "$libcryptodir/$debian_ssl_prefix/engines"; then + # Debian-based OpenSSL package (for example Ubuntu) + enginesdir="$libcryptodir/$debian_ssl_prefix/engines" diff --git a/libp11-0.4.2-versioned-symbols.patch b/libp11-0.4.2-versioned-symbols.patch new file mode 100644 index 0000000..eb25b0d --- /dev/null +++ b/libp11-0.4.2-versioned-symbols.patch @@ -0,0 +1,106 @@ +diff --git a/configure.ac b/configure.ac +index a69e230..2f79b80 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -36,6 +36,8 @@ AC_PROG_CC + PKG_PROG_PKG_CONFIG + AC_C_BIGENDIAN + ++gl_LD_VERSION_SCRIPT ++ + AC_ARG_WITH( + [cygwin-native], + [AS_HELP_STRING([--with-cygwin-native],[compile native win32])], +@@ -221,6 +223,18 @@ if test "${enable_strict}" = "yes"; then + CFLAGS="${CFLAGS} -Wall -Wextra" + fi + ++rm -f src/libp11.map ++echo "LIBP11_${LIBP11_LT_OLDEST}" > src/libp11.map ++echo "{" >> src/libp11.map ++echo "global:" >> src/libp11.map ++tr '\n' ';' >src/libp11.map ++echo "" >> src/libp11.map ++echo "local:" >> src/libp11.map ++echo '*;' >> src/libp11.map ++echo "};" >> src/libp11.map ++ ++chmod ugo-w src/libp11.map ++ + AC_CONFIG_FILES([ + Makefile + src/Makefile +diff --git a/m4/ld-version-script.m4 b/m4/ld-version-script.m4 +new file mode 100644 +index 0000000..330c2cc +--- /dev/null ++++ b/m4/ld-version-script.m4 +@@ -0,0 +1,48 @@ ++# ld-version-script.m4 serial 4 ++dnl Copyright (C) 2008-2016 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Simon Josefsson ++ ++# FIXME: The test below returns a false positive for mingw ++# cross-compiles, 'local:' statements does not reduce number of ++# exported symbols in a DLL. Use --disable-ld-version-script to work ++# around the problem. ++ ++# gl_LD_VERSION_SCRIPT ++# -------------------- ++# Check if LD supports linker scripts, and define automake conditional ++# HAVE_LD_VERSION_SCRIPT if so. ++AC_DEFUN([gl_LD_VERSION_SCRIPT], ++[ ++ AC_ARG_ENABLE([ld-version-script], ++ [AS_HELP_STRING([--enable-ld-version-script], ++ [enable linker version script (default is enabled when possible)])], ++ [have_ld_version_script=$enableval], ++ [AC_CACHE_CHECK([if LD -Wl,--version-script works], ++ [gl_cv_sys_ld_version_script], ++ [gl_cv_sys_ld_version_script=no ++ save_LDFLAGS=$LDFLAGS ++ LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" ++ echo foo >conftest.map ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], ++ [], ++ [cat > conftest.map < - 0.4.2-2 -- Built against openssl 1.1.0 +- Built against openssl 1.1.0 with versioned symbols; use different soname * Sun Sep 25 2016 David Woodhouse - 0.4.2-1 - New upstream release