On Friday 12 of December 2014 11:17:03 Gary V. Vaughan wrote:
> I'll commit a follow on patch, to tweak it like this, later today.

Thanks for the patch!  It is almost perfect.  During testing I noted that
there is still one dollar sign not substituted with quadrigraph.  Patch
0001 attached.

Also, I noted having LT_SYS_SEARCH_PATH="/lib64:" specified in config.site
does not change libtool's content;  it the LT_SYS_LIBRARY_PATH default
value stays empty.  I would like to have it fixed before 2.4.5, if
possible, because I would like to enable something like the following in
our default /usr/share/config.site file:

  if $arch_64bit; then
    : ${LT_SYS_LIBRARY_PATH="/lib64:/usr/lib64:"}
  fi

Also, I'm not sure whether we should touch the lt_cv_sys_*.  That should
not hurt too much but I would feel quite more safe if we use separate
variable and let the lt_cv_* for existing workarounds in the wild.
Something like the attachment 0002 would be nice to have pushed.

That code seems like asking for test-case also?

Thanks,
Pavel
>From 562a2a74f7cbaf236aee46b88cf01e06217300cb Mon Sep 17 00:00:00 2001
From: Pavel Raiskup <prais...@redhat.com>
Date: Sat, 13 Dec 2014 10:59:37 +0100
Subject: [PATCH 1/2] libtool.m4: typofix, subst last '$' with quadrigraph

* m4/libtool.m4 (_LT_LIBTOOL_TAG_VARS): Encase the
configure/libtool shared function into parseable borders; for
testing purposes.
(func_munge_path_list): Typo s/$/@S|@/.
* tests/configure-funcs.at: New testcase.
* Makefile.am (TESTSUITE_AT): Mention new testcase.
---
 Makefile.am              |  1 +
 m4/libtool.m4            |  9 ++++---
 tests/configure-funcs.at | 70 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+), 4 deletions(-)
 create mode 100644 tests/configure-funcs.at

diff --git a/Makefile.am b/Makefile.am
index f1b7ead..ede28c7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -651,6 +651,7 @@ testsuite	= $(tests_dir)/testsuite
 # that it can check for previous failures and skip if necessary.
 TESTSUITE	= tests/testsuite
 TESTSUITE_AT	= tests/testsuite.at \
+		  tests/configure-funcs.at \
 		  tests/libtoolize.at \
 		  tests/libtool.at \
 		  tests/demo.at \
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index f879988..31431ee 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -748,13 +748,14 @@ _LT_LIBTOOL_TAG_VARS
 _LT_EOF
 
     cat <<'_LT_EOF' >> "$cfgfile"
-## -------------------------------------- ##
-## Shell functions shared with configure. ##
-## -------------------------------------- ##
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
 
 _LT_PREPARE_MUNGE_PATH_LIST
 _LT_PREPARE_CC_BASENAME
 
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
 _LT_EOF
 
   case $host_os in
@@ -2256,7 +2257,7 @@ func_munge_path_list ()
     x)
         ;;
     *:)
-        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \$@S|@1\"
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\"
         ;;
     x:*)
         eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\"
diff --git a/tests/configure-funcs.at b/tests/configure-funcs.at
new file mode 100644
index 0000000..eab84a0
--- /dev/null
+++ b/tests/configure-funcs.at
@@ -0,0 +1,70 @@
+# configure-functions.at -- Linking and loading. -*- Autotest -*-
+#
+#   Copyright (C) 2014 Free Software Foundation, Inc.
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from  http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+####
+
+AT_BANNER([Functions shared with configure and libtool.])
+
+m4_define([_AT_FUNC_SETUP], [dnl
+AT_SETUP($1)dnl
+_lt_bin="$abs_top_builddir/libtool"
+re_begincf='^# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE'
+re_endcf='^# ### END FUNCTIONS SHARED WITH CONFIGURE'
+
+$ECHO '#!/bin/sh'       > "$1"
+$ECHO '#: ${SED=sed}'   >> "$1"
+$ECHO '#: ${ECHO=echo}' >> "$1"
+
+sed "1,/$re_begincf/d;/$re_endcf/,\$d" < "$_lt_bin" >> "$1"
+])
+
+_AT_FUNC_SETUP([func_munge_path_list])
+
+cat <<\EOF >> func_munge_path_list
+for orig in "/usr/lib" " /lib /usr/lib "; do
+  $ECHO "'$orig':"
+  for path in "/p1:" "/p3:/p2:" ":/a1" ":/a2:/a3" "/p4::/a4" "/p6:/p5::/a5:/a6"; do
+    old="$orig"
+    func_munge_path_list orig "$path" || exit 1
+    $ECHO "munge ($path) = $orig"
+  done
+done
+EOF
+chmod +x func_munge_path_list
+
+AT_CHECK([ECHO="$ECHO" SED="$SED" ./func_munge_path_list], [0],
+['/usr/lib':
+munge (/p1:) = /p1 /usr/lib
+munge (/p3:/p2:) = /p3 /p2 /p1 /usr/lib
+munge (:/a1) = /p3 /p2 /p1 /usr/lib /a1
+munge (:/a2:/a3) = /p3 /p2 /p1 /usr/lib /a1 /a2 /a3
+munge (/p4::/a4) = /p4 /p3 /p2 /p1 /usr/lib /a1 /a2 /a3 /a4
+munge (/p6:/p5::/a5:/a6) = /p6 /p5 /p4 /p3 /p2 /p1 /usr/lib /a1 /a2 /a3 /a4 /a5 /a6
+' /lib /usr/lib ':
+munge (/p1:) = /p1  /lib /usr/lib @&t@
+munge (/p3:/p2:) = /p3 /p2 /p1  /lib /usr/lib @&t@
+munge (:/a1) = /p3 /p2 /p1  /lib /usr/lib  /a1
+munge (:/a2:/a3) = /p3 /p2 /p1  /lib /usr/lib  /a1 /a2 /a3
+munge (/p4::/a4) = /p4 /p3 /p2 /p1  /lib /usr/lib  /a1 /a2 /a3 /a4
+munge (/p6:/p5::/a5:/a6) = /p6 /p5 /p4 /p3 /p2 /p1  /lib /usr/lib  /a1 /a2 /a3 /a4 /a5 /a6
+], [])
+
+AT_CLEANUP
-- 
1.9.3

>From 871fb8811b7c56f943ee88b3d5ab3e14020fb8ed Mon Sep 17 00:00:00 2001
From: Pavel Raiskup <prais...@redhat.com>
Date: Sat, 13 Dec 2014 14:50:18 +0100
Subject: [PATCH 2/2] libtool: respect config.site LT_SYS_LIBRARY_PATH

Libtool generator code needs to remember the configure time
LT_SYS_LIBRARY_PATH content to allow config.status properly
instantiate default LT_SYS_LIBRARY_PATH libtool run-time value;
Thats because config.status has no idea what the contents of
config.site file is (by default).

* m4/libtool.m4 (_LT_CONFIG): Use the _LT_DECLared
$configure_time_lt_sys_library_path variable as the default for
LT_SYS_DLSEARCH_PATH at run-time.
(_LT_SYS_DYNAMIC_LINKER): Don't change ac_cv_* variable if it is
not necessary. New $configure_time_lt_sys_library_path variable.
---
 m4/libtool.m4 | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 31431ee..24ebf8b 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -738,7 +738,7 @@ _LT_COPYING
 _LT_LIBTOOL_TAGS
 
 # Configured defaults for sys_lib_dlsearch_path munging.
-: \${LT_SYS_LIBRARY_PATH="$LT_SYS_LIBRARY_PATH"}
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
 
 # ### BEGIN LIBTOOL CONFIG
 _LT_LIBTOOL_CONFIG_VARS
@@ -3101,13 +3101,15 @@ if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
   sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
-# lt_cv_sys_lib... is unaugmented for libtool script decls...
-lt_cv_sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path="$sys_lib_dlsearch_path_spec"
 
-# ..but sys_lib_... needs LT_SYS_LIBRARY_PATH munging for
-# LT_SYS_DLSEARCH_PATH macro in ltdl.m4 to work with the correct paths:
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
 func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
 
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path="$LT_SYS_LIBRARY_PATH"
+
 _LT_DECL([], [variables_saved_for_relink], [1],
     [Variables whose values should be saved in libtool wrapper scripts and
     restored at link time])
@@ -3140,8 +3142,10 @@ _LT_DECL([], [hardcode_into_libs], [0],
     [Whether we should hardcode library paths into libraries])
 _LT_DECL([], [sys_lib_search_path_spec], [2],
     [Compile-time system search path for libraries])
-_LT_DECL([sys_lib_dlsearch_path_spec], [lt_cv_sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
+_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2],
+    [Detected run-time system search path for libraries])
+_LT_DECL([], [configure_time_lt_sys_library_path], [2],
+    [Explicit LT_SYS_LIBRARY_PATH set during ./configure time])
 ])# _LT_SYS_DYNAMIC_LINKER
 
 
-- 
1.9.3

_______________________________________________
https://lists.gnu.org/mailman/listinfo/libtool

Reply via email to