libtool: Update cleanup sysroot handling patch

The sysroot path cleanup change was reworked after discussion/review upstream. It
appeared there were two different changes in one of our patches so separate out
the second one and mark as inappropriate as it is unlikely upstream would take
such a change in defaults. We need further investigation to decide if OE really
wants/needs this going forward.

(From OE-Core rev: 1315f7ccaf2b1d5fb91e3c726447883058fb5ec3)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2024-01-17 13:02:49 +00:00
parent 776b1aab12
commit 907150679d
3 changed files with 52 additions and 19 deletions

View File

@@ -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 \

View File

@@ -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 <richard.purdie@linuxfoundation.org>
---
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
;; #(
/*)

View File

@@ -1,34 +1,29 @@
From: Richard Purdie <richard.purdie@linuxfoundation.org>
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 <richard.purdie@linuxfoundation.org>
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|''|/)