[oe-commits] [openembedded-core] 05/05: openssl10: remove extra slash from libdir path

git at git.openembedded.org git at git.openembedded.org
Tue Sep 25 10:17:55 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 08b3763b4f45fade7bac000fb8efe475d469f5fc
Author: Mikko Rapeli <mikko.rapeli at bmw.de>
AuthorDate: Mon Sep 24 11:07:33 2018 +0300

    openssl10: remove extra slash from libdir path
    
    The configure script ended up creating Makefile with
    
    LIBDIR=/lib
    
    which got leaked into various places including all
    pkg-config .pc files where lines like (note the
    double slash //):
    
    libdir=${exec_prefix}//lib
    ...
    Libs: -L${libdir} -lcrypto
    
    which causes pkg-config --libs to include the full absolute path
    to the recipe specific sysroot. This isn't a big problem
    until something like CMake projects start generating
    their own .cmake modules using this absolute path and exposing
    them to sysroots of other bitbake recipes thus escaping
    their recipe specific sysroots.
    
    Then the fun begins when these users of the .cmake module start
    to randomly fail builds with error messages like:
    
    /home/builder/src/base/build/tmp/work/corei7-64-linux/package/1.0-r0/recipe-sysroot-native/usr/bin/x86_64-linux/../../libexec/x86_64-linux/gcc/x86_64-linux/7.3.0/ld: cannot find /lib/libpthread.so.0
    /home/builder/src/base/build/tmp/work/corei7-64-linux/package/1.0-r0/recipe-sysroot-native/usr/bin/x86_64-linux/../../libexec/x86_64-linux/gcc/x86_64-linux/7.3.0/ld: cannot find /usr/lib/libpthread_nonshared.a
    collect2: error: ld returned 1 exit status
    ninja: build stopped: subcommand failed.
    WARNING: exit code 1 from a shell command.
    
    As luck has it, this problem goes away by recompiling the recipes
    alone but repeats with multiple recipes here and there when full
    images are build.
    
    A careful inspection of multi page linker command lines shows
    that some linker paramaters point to libraries in a different
    recipes sysroot than what bitbake was building when the task
    failed.
    
    So, fix is to remove this one extra slash from openssl
    library path configuration option. This changes openssl
    Makefile to have:
    
    LIBDIR=lib
    
    and all users of LIBDIR variable in the Makefile are already
    adding slashes as path separators if that is needed.
    
    With this the generated .pc files have:
    
    libdir=${exec_prefix}/lib
    
    and pkg-config --libs knows to strip the already default
    sysroot path away.
    
    This then fixes the generated .cmake files to not include
    these absolute paths and fixes the random build failures
    when building images.
    
    Thanks to Thomas, Michael and Ross for debugging support!
    
    Signed-off-by: Mikko Rapeli <mikko.rapeli at bmw.de>
    Cc: Thomas Witt <thomas.witt at bmw.de>
    Cc: Michael Ho <michael.ho at bmw.de>
    Cc: Ross Burton <ross.burton at intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb b/meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb
index 84e086c..7661109 100644
--- a/meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb
+++ b/meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb
@@ -191,7 +191,7 @@ do_configure () {
 	if [ "x$useprefix" = "x" ]; then
 		useprefix=/
 	fi
-	libdirleaf="$(echo ${libdir} | sed s:$useprefix::)"
+	libdirleaf="$( echo "${libdir}" | sed "s:^$useprefix/*::" )"
 	perl ./Configure ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS} shared --prefix=$useprefix --openssldir=${libdir}/ssl --libdir=$libdirleaf $target
 }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list