libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Do not absolutize paths eagerly.


From: Ralf Wildenhues
Subject: [PATCH] Do not absolutize paths eagerly.
Date: Fri, 20 Aug 2010 06:34:58 +0200
User-agent: Mutt/1.5.20 (2010-04-22)

* libltdl/config/ltmain.m4sh (func_resolve_sysroot): Partly
revert v2.2.10-83-gc45a288: Do not absolutize path here, only do
sysroot replacement.
(func_mode_link): Adjust.
Fixes AIX testsuite regression.
---

* Paolo Bonzini wrote on Thu, Aug 19, 2010 at 09:40:11AM CEST:
> On 08/19/2010 06:58 AM, Ralf Wildenhues wrote:
> >Why does this function absolutize paths that have nothing to do with
> >sysroot, even in-tree deplib paths?
> >Is there a deeper reason in this?  If yes, there should probably be a
> >test which is fixed by it.
> 
> It's a bug, I think I did it to simplify other places but this was
> wrong as the AIX case shows.  I had the same idea more or less, but
> I didn't have time to make a patch.

Maybe it's as simple as this?  I'm testing this patch now.  Would be
nice if somebody could test it on a sysroot-enabled setup (i.e., where
the sysroot tests don't skip).

I agree that the absolutization issue should probably cleaned up,
but independently of the sysroot feature, and it likely needs a bit
more testsuite exposure, too.

Thanks,
Ralf

 libltdl/config/ltmain.m4sh |   29 ++++++++++++-----------------
 1 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index d29fd5d..a3e8955 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -547,31 +547,16 @@ func_source ()
 
 
 # func_resolve_sysroot PATH
-# Change PATH to an absolute path or replace a leading = with a
-# sysroot.  Store the result into func_resolve_sysroot_result
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
 func_resolve_sysroot ()
 {
   func_resolve_sysroot_result=$1
   case $func_resolve_sysroot_result in
-  [\\/]* | [A-Za-z]:[\\/]*) ;;
   =*)
     func_stripname '=' '' "$func_resolve_sysroot_result"
     func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
     ;;
-  *)
-    if test -d "$1"; then
-      absdir=`cd "$1" && pwd`
-      test -z "$absdir" && \
-        func_fatal_error "cannot determine absolute directory name of \`$dir'"
-      func_resolve_sysroot_result=`cd "$dir" && pwd`
-    else
-      func_dirname_and_basename "$1" "" "."
-      absdir=`cd "$func_dirname_result" && pwd`
-      test -z "$absdir" && \
-        func_fatal_error "cannot determine absolute directory name of 
\`$func_dirname_result'"
-      func_resolve_sysroot_result="$absdir/$func_basename_result"
-    fi
-    ;;
   esac
 }
 
@@ -4440,6 +4425,16 @@ func_mode_link ()
        fi
        func_resolve_sysroot "$func_stripname_result"
        dir=$func_resolve_sysroot_result
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         absdir=`cd "$dir" && pwd`
+         test -z "$absdir" && \
+           func_fatal_error "cannot determine absolute directory name of 
\`$dir'"
+         dir="$absdir"
+         ;;
+       esac
        case "$deplibs " in
        *" -L$dir "* | *" $arg "*)
          # Will only happen for absolute or sysroot arguments
-- 
1.7.2.rc3.47.g996ce




reply via email to

[Prev in Thread] Current Thread [Next in Thread]