diff --git a/meta/recipes-devtools/libtool/libtool-2.4.7.inc b/meta/recipes-devtools/libtool/libtool-2.4.7.inc index a07df720ac..16bb10d48f 100644 --- a/meta/recipes-devtools/libtool/libtool-2.4.7.inc +++ b/meta/recipes-devtools/libtool/libtool-2.4.7.inc @@ -15,6 +15,7 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \ file://0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch \ file://0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch \ file://dont-depend-on-help2man.patch \ + file://0003-libtool.m4-Cleanup-sysroot-trailing.patch \ file://0006-libtool.m4-Handle-as-a-sysroot-correctly.patch \ file://nohardcodepaths.patch \ file://0007-libtool-Fix-support-for-NIOS2-processor.patch \ diff --git a/meta/recipes-devtools/libtool/libtool/0003-libtool.m4-Cleanup-sysroot-trailing.patch b/meta/recipes-devtools/libtool/libtool/0003-libtool.m4-Cleanup-sysroot-trailing.patch new file mode 100644 index 0000000000..b6175903da --- /dev/null +++ b/meta/recipes-devtools/libtool/libtool/0003-libtool.m4-Cleanup-sysroot-trailing.patch @@ -0,0 +1,37 @@ +libtool.m4: Cleanup sysroot trailing "/" + +If $CC has --sysroot=/, it is a valid configuration however libtool will +then set lt_sysroot to "/". + +This means references like $lt_sysroot$libdir become //usr/lib instead +of the more normally expected /usr/lib. This may or may not break something +but certainly is confusing to the user and gives confusing output. Making +"/" simply unset lt_sysroot is much cleaner. + +Whilst here, trim any trailing '/' from sysroot paths to drop the duplication +and result in cleaner/consistent output. + +* m4/libtool.m4: Cleanup sysroot trailing '/' handling + +Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2024-01/msg00111.html] +Signed-off-by: Richard Purdie + +--- + m4/libtool.m4 | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/m4/libtool.m4 b/m4/libtool.m4 +index fa1ae91..2f31d24 100644 +--- a/m4/libtool.m4 ++++ b/m4/libtool.m4 +@@ -1256,7 +1256,9 @@ lt_sysroot= + case $with_libtool_sysroot in #( + yes) + if test yes = "$GCC"; then +- lt_sysroot=`$CC --print-sysroot 2>/dev/null` ++ # Trim trailing / since we'll always append absolute paths and we want ++ # to avoid //, if only for less confusing output for the user. ++ lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` + fi + ;; #( + /*) diff --git a/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch b/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch index a221dab528..c104e904cc 100644 --- a/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch +++ b/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch @@ -1,34 +1,29 @@ -From: Richard Purdie -Subject: [PATCH 06/12] libtool.m4: Handle "/" as a sysroot correctly +libtool.m4: Change libtool to handle sysroots by default -Update libtool.m4 to resolve a problem with lt_sysroot not being properly -updated if the option '--with[-libtool]-sysroot' is not provided when -running the 'configure' script for a package so that "/" as a sysroot -is handled correctly by libtool. +Rather than using no sysroot by default, always query gcc to obtain the sysroot. Signed-off-by: Richard Purdie -Upstream Report: -http://lists.gnu.org/archive/html/bug-libtool/2013-09/msg00005.html +Upstream-Status: Inappropriate [Upstream are unlikely to accept this change of default] -Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00018.html] +--- + m4/libtool.m4 | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -Index: libtool-2.4.7/m4/libtool.m4 -=================================================================== ---- libtool-2.4.7.orig/m4/libtool.m4 -+++ libtool-2.4.7/m4/libtool.m4 -@@ -1254,16 +1254,20 @@ dnl lt_sysroot will always be passed unq +diff --git a/m4/libtool.m4 b/m4/libtool.m4 +index 2f31d24..bd90775 100644 +--- a/m4/libtool.m4 ++++ b/m4/libtool.m4 +@@ -1254,18 +1254,18 @@ dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_libtool_sysroot in #( - yes) + no) if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` -+ # Treat "/" the same a an unset sysroot. -+ if test "$lt_sysroot" = /; then -+ lt_sysroot= -+ fi + # Trim trailing / since we'll always append absolute paths and we want + # to avoid //, if only for less confusing output for the user. + lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` fi ;; #( + yes|''|/)