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