package/sconeserver: fix static link with openssl
PATCH 1/1 package/sconeserver: fix static link with openssl
When linking statically, the order of libraries on the linker command line is important, and sconeserver got it wrong.
Also, isconeserver does not use pkg-config, so it misses the private libs of -lcrypto, which is linking with -lz.
Fix that:
- add a patch to configure.in to fix the order of libraries;
- forcibly pass -lz when lkinking statically with openssl.
Note: we were already reconfiguring sconeserver, because it comes from the github repository.
Fixes:
http://autobuild.buildroot.org/results/403/403eac974ecdaacdb66b8241fbdcf19ec5e07480
--- .../sconeserver/0001-fix-ssl-libs-ordering.patch | 36 ++++++++++++++++++++++ package/sconeserver/sconeserver.mk | 3 ++ 2 files changed, 39 insertions(+) create mode 100644 package/sconeserver/0001-fix-ssl-libs-ordering.patch
package/sconeserver/0001-fix-ssl-libs-ordering.patch new file +36 -0
@@ -0,0 +1,36 @@ +configure: re-order SSL libs when linking + +When doing static builds, the ordering of libs is important, as the +linker does not back-pedal to previous libraries specified on the +command line to find missing symbols, and only searches for those +missing symbols in the following libs. + +Thus, as -lssl needs symbols from -lcrypto, it needs to come before +-lcrypto. + +And globally, we do *not* append new libraries, we prepend them. + +Signed-off-by: "Yann E. MORIN" <[email protected]> + +diff -durN a/configure.in b/configure.in +--- a/configure.in 2014-10-16 11:12:08.000000000 +0200 ++++ b/configure.in 2015-05-30 15:44:25.540329788 +0200 +@@ -133,12 +133,14 @@ + [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL, use --with-openssl-path=PATH])] + ) + AC_CHECK_LIB([crypto],[CRYPTO_new_ex_data], +- [SSL_LIBADD="$SSL_LIBADD -lcrypto"], +- [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])] ++ [SSL_LIBADD="-lcrypto $SSL_LIBADD"], ++ [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])], ++ [$SSL_LIBADD] + ) + AC_CHECK_LIB([ssl],[SSL_library_init], +- [SSL_LIBADD="$SSL_LIBADD -lssl"], +- [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])] ++ [SSL_LIBADD="-lssl $SSL_LIBADD"], ++ [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])], ++ [$SSL_LIBADD] + ) + AC_SUBST(SSL_LIBADD) + fi
package/sconeserver/sconeserver.mk +3 -0
@@ -24,6 +24,9 @@ endif ifeq ($(BR2_PACKAGE_OPENSSL),y) SCONESERVER_DEPENDENCIES += openssl SCONESERVER_CONF_OPTS += --with-ssl +ifeq ($(BR2_STATIC_LIBS),y) +SCONESERVER_CONF_ENV += SSL_LIBADD=-lz +endif else SCONESERVER_CONF_OPTS += --without-ssl endif
Signature · 1 line
1.9.1
PATCH 1/1 package/sconeserver: fix static link with openssl
Dear Yann E. MORIN,
Quoted 4 lines · Yann E. MORIN
When linking statically, the order of libraries on the linker command line is important, and sconeserver got it wrong.
Also, isconeserver does not use pkg-config, so it misses the private
^^ typo
Quoted 5 lines
libs of -lcrypto, which is linking with -lz.
Fix that:
- add a patch to configure.in to fix the order of libraries;
- forcibly pass -lz when lkinking statically with openssl.
^^^ typo
Applied with those two typos fixed. It's really a pity that pkg-config isn't more widely used :-/ If openssl grows another dependency, we would have to fix this again...
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 package/sconeserver: fix static link with openssl
Thomas, All,
On 2015-05-31 10:38 +0200, Thomas Petazzoni spake thusly:
Quoted 10 lines · Yann E. MORIN
Quoted 4 lines
When linking statically, the order of libraries on the linker command line is important, and sconeserver got it wrong.
Also, isconeserver does not use pkg-config, so it misses the private
^^ typoQuoted 2 lines
libs of -lcrypto, which is linking with -lz.
Quoted 7 lines
Quoted 3 lines
Fix that:
- add a patch to configure.in to fix the order of libraries;
- forcibly pass -lz when lkinking statically with openssl.^^^ typoApplied with those two typos fixed.
Thanks! :-)
Quoted 3 lines
It's really a pity that pkg-config
isn't more widely used :-/ If openssl grows another dependency, we would have to fix this again...
For 2015.05, I only 'fixed' sconeserver with the patch you applied, but for upstream, I submitted a more involved patch that makes use of pkg-config, which upstream seems to be happy with so far (but have not yet merged):
https://github.com/sconemad/sconeserver/pull/1
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'