* 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