Hello Roberto,
* Roberto Bagnara wrote on Mon, Mar 03, 2008 at 09:14:48PM CET:
>
> $ cat mycommand
> #!/bin/sh
> echo "mycommand invoked with argument '$1'"
> $ mycommand ciao
> mycommand invoked with argument 'ciao'
> $ ./libtool --mode=execute mycommand ciao
> mycommand invoked with argument '/home/roberto/tppl/'
> $
>
> Note that /home/roberto/tppl/ is the directory where the libtool
> script is located. I can also do
>
> $ cd interfaces/
> $ ../libtool --mode=execute ../mycommand ciao
> mycommand invoked with argument '/home/roberto/tppl/'
>
> Is this behavior normal?
No. Thank you for the bug report. I've applied the fix below.
FWIW, the ordering of the tests in execute-mode.at is such that the
first set still passes for 1.5.26.
> ./libtool is what has been created at configure time and a bzipped
> version of it is attached to this file.
It wasn't attached to the message, but that's not a problem. :-)
Cheers,
Ralf
* libltdl/config/ltmain.m4sh (func_mode_execute): Replace only
arguments we have identified as shell or C wrappers.
(func_emit_wrapper): Output error message on stderr.
* tests/execute-mode.at: New file, with --mode=execute tests.
* Makefile.am: Adjust.
* NEWS: Update.
Fixes 2.2 regression. Report by Roberto Bagnara.
Index: Makefile.am
===
RCS file: /cvsroot/libtool/libtool/Makefile.am,v
retrieving revision 1.229
diff -u -r1.229 Makefile.am
--- Makefile.am 18 Jan 2008 10:49:40 - 1.229
+++ Makefile.am 4 Mar 2008 21:16:26 -
@@ -447,6 +447,7 @@
tests/search-path.at \
tests/indirect_deps.at \
tests/archive-in-archive.at \
+ tests/execute-mode.at \
tests/destdir.at \
tests/old-m4-iface.at \
tests/am-subdir.at \
Index: NEWS
===
RCS file: /cvsroot/libtool/libtool/NEWS,v
retrieving revision 1.220
diff -u -r1.220 NEWS
--- NEWS4 Mar 2008 21:00:18 - 1.220
+++ NEWS4 Mar 2008 21:16:27 -
@@ -6,6 +6,9 @@
- Fix 2.2 regression in libltdl that causes memory corruption upon
repeated `lt_dlinit(); lt_dlexit()'.
+ - Fix 2.2 regression in that `libtool --mode=execute CMD ARGS' does not
+transform ARGS that do not look like shell or C wrappers of libtool
+programs.
New in 2.2: 2008-03-01; CVS version 2.1c, Libtool team:
Index: libltdl/config/ltmain.m4sh
===
RCS file: /cvsroot/libtool/libtool/libltdl/config/ltmain.m4sh,v
retrieving revision 1.97
diff -u -r1.97 ltmain.m4sh
--- libltdl/config/ltmain.m4sh 28 Jan 2008 15:49:46 - 1.97
+++ libltdl/config/ltmain.m4sh 4 Mar 2008 21:16:29 -
@@ -1694,12 +1694,14 @@
# Do a test to see if this is really a libtool program.
if func_ltwrapper_script_p "$file"; then
func_source "$file"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
elif func_ltwrapper_executable_p "$file"; then
func_ltwrapper_scriptname "$file"
func_source "$func_ltwrapper_scriptname_result"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
fi
- # Transform arg to wrapped name.
- file="$progdir/$program"
;;
esac
# Quote arguments (to preserve shell metacharacters).
@@ -2468,7 +2470,7 @@
;;
esac
$ECHO "\
- \$ECHO \"\$0: cannot exec \$program \$*\"
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
exit 1
fi
else
--- /dev/null 2008-03-02 10:33:19.200041011 +0100
+++ tests/execute-mode.at 2008-03-04 22:15:22.0 +0100
@@ -0,0 +1,92 @@
+# execute-mode.at -- libtool --mode=execute -*- Autotest -*-
+#
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# Written by Ralf Wildenhues, 2008
+#
+# 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_SETUP([execute mode])
+AT_KEYWORDS([libtool])
+
+AT_DATA([foo],
+[[#! /bin/