[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: $(unexisting:.a=.b) bug
From: |
Alexandre Duret-Lutz |
Subject: |
FYI: $(unexisting:.a=.b) bug |
Date: |
Sat, 29 Nov 2003 22:47:06 +0100 |
User-agent: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3 (gnu/linux) |
I'm checking this in.
Before the fix the `echorule' rule of the test case output
BEG: foo1.obj foo4.obj bar3.obj bar2.obj :END
^^^^^^^^
2003-11-29 Alexandre Duret-Lutz <address@hidden>
* lib/Automake/Variable.pm (_do_recursive_traversal): Do not
update @_substfroms and @_substfroms for undefined variables.
* tests/substre2.test: New file.
* tests/Makefile.am (TESTS): Add substre2.test.
Index: lib/Automake/Variable.pm
===================================================================
RCS file: /cvs/automake/automake/lib/Automake/Variable.pm,v
retrieving revision 1.24
diff -u -r1.24 Variable.pm
--- lib/Automake/Variable.pm 29 Nov 2003 18:02:40 -0000 1.24
+++ lib/Automake/Variable.pm 29 Nov 2003 21:41:42 -0000
@@ -1323,12 +1323,13 @@
$to = $3;
$from = quotemeta $2;
}
- push @_substfroms, $from;
- push @_substtos, $to;
my $subvar = var ($subvarname);
# Don't recurse into undefined variables.
next unless $subvar;
+
+ push @_substfroms, $from;
+ push @_substtos, $to;
my @res = $subvar->_do_recursive_traversal ($parent,
$fun_item,
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.534
diff -u -r1.534 Makefile.am
--- tests/Makefile.am 24 Nov 2003 22:13:42 -0000 1.534
+++ tests/Makefile.am 29 Nov 2003 21:41:42 -0000
@@ -445,6 +445,7 @@
subst.test \
subst2.test \
substref.test \
+substre2.test \
substtarg.test \
suffix.test \
suffix2.test \
Index: tests/Makefile.in
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.in,v
retrieving revision 1.690
diff -u -r1.690 Makefile.in
--- tests/Makefile.in 25 Nov 2003 22:58:07 -0000 1.690
+++ tests/Makefile.in 29 Nov 2003 21:41:43 -0000
@@ -559,6 +559,7 @@
subst.test \
subst2.test \
substref.test \
+substre2.test \
substtarg.test \
suffix.test \
suffix2.test \
Index: tests/substre2.test
===================================================================
RCS file: tests/substre2.test
diff -N tests/substre2.test
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/substre2.test 29 Nov 2003 21:41:43 -0000
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2003 Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake 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, or (at your option)
+# any later version.
+#
+# GNU Automake 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 Automake; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Test for bug in variable substitution references, where
+# undefined variables break latter substitutions.
+
+required=gcc
+. ./defs || exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+
+foo = foo.a foo.b $(doesnt_exist)
+bar = bar.a bar.b
+var1 = $(foo:.a=1.c) $(doesnt_exist:.b=2.c) $(bar:.a=3.c)
+var2 = $(var1:.b=4.c)
+
+bin_PROGRAMS = foo
+foo_SOURCES = $(var2)
+
+OBJEXT = obj
+echorule:
+ @echo BEG: $(foo_OBJECTS) :END
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE echorule >output
+cat output
+grep 'BEG: foo1.obj foo4.obj bar3.obj bar4.obj :END' output
--
Alexandre Duret-Lutz
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- FYI: $(unexisting:.a=.b) bug,
Alexandre Duret-Lutz <=