[+cc: automake-patches, bug-libtool] [re-sending because delivery to automake and autoconf lists failed]
References: <http://lists.gnu.org/archive/html/autoconf-patches/2012-10/msg00007.html> <http://lists.gnu.org/archive/html/autoconf-patches/2012-11/msg00000.html> On 11/01/2012 07:05 PM, Nick Bowler wrote: > Hi Stefano, sorry for the delay. > Hi Nick, and thanks for the testing. > On 2012-10-31 11:03 +0100, Stefano Lattarini wrote: >> On 10/23/2012 12:59 AM, Nick Bowler wrote: >>> I am going to try all these patches to automake/autoconf/libtool soon; I >>> will report back with the results! >>> >> Has anybody had a chance to try these patches? If not, does anyone >> object to the idea of committing them anyway, and see how things work >> out? It doesn't seem we're near to a release, so there's ample time >> to revert these changes before cutting Autoconf 2.70, in case they >> won't work as expected, or will reveal unforeseen issues. > I got a chance to try these. I applied the patches on top of latest git > autoconf and automake, as of today, and also checked out latest git > libtool. > > I tried converting a package to use these, which originally had > ACLOCAL_AMFLAGS = -I m4 -I common/m4. I removed the ACLOCAL_AMFLAGS > from Makefile.am and added AC_CONFIG_MACRO_DIRS([m4 common/m4]) to > configure.ac. Here are some initial observations: > > 1) Newlines can be used to separate items in AC_CONFIG_FILES, etc. > However, aclocal explodes if you try to do this with > AC_CONFIG_MACRO_DIRS: > > Use of uninitialized value $macro in exists at > /tmp/autotools-test/bin/aclocal line 753, <GEN40> line 2. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 755, <GEN40> line 2. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 755, <GEN40> line 2. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 755, <GEN40> line 2. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 760, <GEN40> line 2. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 764, <GEN40> line 2. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 768, <GEN40> line 2. > Use of uninitialized value $macro in exists at > /tmp/autotools-test/bin/aclocal line 753, <GEN82> line 3. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 755, <GEN82> line 3. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 755, <GEN82> line 3. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 755, <GEN82> line 3. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 760, <GEN82> line 3. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 764, <GEN82> line 3. > Use of uninitialized value $macro in string eq at > /tmp/autotools-test/bin/aclocal line 768, <GEN82> line 3. > > This strikes me as extremely odd because the output > of autoconf --trace AC_CONFIG_MACRO_DIRS is the same > in either case. > I can reproduce the problem. The patch below enhances the automake testsuite in order to catch it. I hope I'll be able to come up with a fix soon enough. > 2) Git libtool seems broken, as libtoolize is deleting files installed > by gnulib-tool into the snippet directory. This breaks the build. > I suspect the problem is unrelated to the AC_CONFIG_MACRO_DIRS > change, but git libtool was required to test it. > > 3) Libtoolize still complains that ACLOCAL_AMFLAGS is not set in > Makefile.am, but the warning seems harmless and it nevertheless > prints that it has picked up AC_CONFIG_MACRO_DIRS. > I believe these issues should be reported to the libtool developers, so I've added the bug-libtool list in CC:. > 4) I get a bunch of new warnings from aclocal, of the form: > > configure.ac:42: warning: DX_EXPORTED_SH is m4_require'd but not > m4_defun'd > > The invocation comes from an AC_REQUIRE([DX_EXPORTED_SH]) and the > DX_EXPORTED_SH macro is expected to be picked up by aclocal -- it is, > and things seem to work in the end, but the warnings are annoying > (and are printed multiple times). > And you say they weren't there before these series? Or is this regression already present in master? I'll investigate. > Other than requiring a manual workaround for item #2, everything seems > to be working at a first glance. I can cook up some test cases for > these issues if necessary. > For the automake part, there should be no need of test cases: your description is clear and precise enough that I can cook up some myself, and that will save hassles with copyright issues and assignment forms. > These all look like fixable problems to me. > > Cheers, Thanks again, Stefano ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- >From 5716ef6d6483183721ef47dbba1b9bbf142ee2d9 Mon Sep 17 00:00:00 2001 Message-Id: <5716ef6d6483183721ef47dbba1b9bbf142ee2d9.1351849552.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Fri, 2 Nov 2012 10:09:36 +0100 Subject: [PATCH] tests: better coverage for AC_CONFIG_MACRO_DIRS Suggested by a report from Nick Bowler: <http://lists.gnu.org/archive/html/autoconf-patches/2012-11/msg00000.html> * t/aclocal-macrodirs.sh: Enhance to check use of extra whitespaces and newline characters in the arguments to AC_CONFIG_MACRO_DIRS. Other minor edits, enhancements, and simplification. Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- t/aclocal-macrodirs.tap | 53 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/t/aclocal-macrodirs.tap b/t/aclocal-macrodirs.tap index a0eeb96..00d2359 100755 --- a/t/aclocal-macrodirs.tap +++ b/t/aclocal-macrodirs.tap @@ -26,7 +26,7 @@ am_create_testdir=empty END } || skip_all_ "autoconf doesn't define the AC_CONFIG_MACRO_DIRS macro" -plan_ 11 +plan_ 12 ocwd=$(pwd) || fatal_ "getting current working directory" ACLOCAL_PATH=; unset ACLOCAL_PATH @@ -99,23 +99,21 @@ test_end #--------------------------------------------------------------------------- -two_dirs_check () +three_dirs_check () { - if test $have_macrodirs = no; then - directive=SKIP - reason='AC_CONFIG_MACRO_DIRS not supported' - return - fi - mkdir sys-dir dir1 dir2 + mkdir dir1 dir2 dir3 echo 'AC_DEFUN([MY_FOO], [::my::foo::])' > dir1/foo.m4 echo 'AC_DEFUN([MY_BAR], [!!my!!bar!!])' > dir2/zap.m4 + echo 'AC_DEFUN([MY_BAZ], [==my==baz==])' > dir3/0.m4 $ACLOCAL \ && $FGREP 'm4_include([dir1/foo.m4])' aclocal.m4 \ && $FGREP 'm4_include([dir2/zap.m4])' aclocal.m4 \ + && $FGREP 'm4_include([dir3/0.m4])' aclocal.m4 \ && $AUTOCONF \ - && not $EGREP 'MY_(FOO|BAR)' configure \ + && not $EGREP 'MY_(FOO|BAR|BAZ)' configure \ && $FGREP '::my::foo::' configure \ && $FGREP '!!my!!bar!!' configure \ + && $FGREP '==my==baz==' configure \ || r='not ok' } @@ -125,12 +123,13 @@ test_begin "AC_CONFIG_MACRO_DIRS: several arguments" cat > configure.ac <<'END' AC_INIT([more-args], [0.2]) -AC_CONFIG_MACRO_DIRS([dir1 dir2]) +AC_CONFIG_MACRO_DIRS([dir1 dir2 dir3]) MY_FOO MY_BAR +MY_BAZ END -two_dirs_check +three_dirs_check test_end @@ -141,12 +140,35 @@ test_begin "AC_CONFIG_MACRO_DIRS: several calls" cat > configure.ac <<'END' AC_INIT([more-calls], [2.0]) AC_CONFIG_MACRO_DIRS([dir1]) -AC_CONFIG_MACRO_DIRS([dir2]) +AC_CONFIG_MACRO_DIRS([dir2 dir3]) +MY_FOO +MY_BAR +MY_BAZ +END + +three_dirs_check + +test_end + +#--------------------------------------------------------------------------- + +test_begin "AC_CONFIG_MACRO_DIRS: extra whitespace" + +bslash=\\ + +cat > configure.ac <<END +AC_INIT([more-args], [0.2]) +AC_CONFIG_MACRO_DIRS([ dir1${bslash} +${tab} dir2 ${tab}${tab}dir3 +${bslash} + +]) MY_FOO MY_BAR +MY_BAZ END -two_dirs_check +three_dirs_check test_end @@ -174,11 +196,6 @@ test_end two_dirs_install_check () { - if test $have_macrodirs = no; then - directive=SKIP - reason='AC_CONFIG_MACRO_DIRS not supported' - return - fi mkdir sys-dir dir1 dir2 echo 'AC_DEFUN([THE_MACRO], [:])' > sys-dir/my.m4 echo 'AC_DEFUN([AX_FOO], [:])' > dir2/zap.m4 -- 1.8.0