When gnulib-tool --create-testdir is used with option --without-tests,
the Python implementation creates a wrong result. See:

$ rm -rf ../testdir1; ./gnulib-tool.sh --create-testdir --dir=../testdir1 
--without-tests fstrcmp
$ rm -rf ../testdir2; ./gnulib-tool.py --create-testdir --dir=../testdir2 
--without-tests fstrcmp

$ diff -r -u testdir1 testdir2
diff -r -u testdir1/configure testdir2/configure
--- testdir1/configure  2024-08-05 16:41:43.743223394 +0200
+++ testdir2/configure  2024-08-05 16:41:55.535289350 +0200
@@ -20333,7 +20333,7 @@
 
 
 
-ac_config_files="$ac_config_files Makefile gllib/Makefile glm4/Makefile"
+ac_config_files="$ac_config_files Makefile gllib/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -21111,7 +21111,6 @@
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "gllib/Makefile") CONFIG_FILES="$CONFIG_FILES gllib/Makefile" ;;
-    "glm4/Makefile") CONFIG_FILES="$CONFIG_FILES glm4/Makefile" ;;
 
   *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;;
   esac
diff -r -u testdir1/configure.ac testdir2/configure.ac
--- testdir1/configure.ac       2024-08-05 16:41:42.647217259 +0200
+++ testdir2/configure.ac       2024-08-05 16:41:54.431283179 +0200
@@ -377,5 +377,5 @@
 
 gl_INIT
 
-AC_CONFIG_FILES([Makefile gllib/Makefile glm4/Makefile])
+AC_CONFIG_FILES([Makefile gllib/Makefile])
 AC_OUTPUT
Only in testdir1/glm4: Makefile.in

$ (cd testdir1 && ./configure && make)
(OK)
$ (cd testdir2 && ./configure && make)
...
Making all in glm4
make[2]: Entering directory '/GNULIB/testdir2/glm4'
make[2]: *** No rule to make target 'all'.  Stop.
make[2]: Leaving directory '/GNULIB/testdir2/glm4'
make[1]: *** [Makefile:1436: all-recursive] Error 1
make[1]: Leaving directory '/GNULIB/testdir2'
make: *** [Makefile:1377: all] Error 2


This patch fixes it.


2024-08-05  Bruno Haible  <br...@clisp.org>

        gnulib-tool.py: Fix testdirs created with --without-tests.
        * pygnulib/GLTestDir.py (GLTestDir.execute): Don't assume that 'gltests'
        is the last subdirectory with a configure.ac.

diff --git a/pygnulib/GLTestDir.py b/pygnulib/GLTestDir.py
index ecedf992c6..268a14afef 100644
--- a/pygnulib/GLTestDir.py
+++ b/pygnulib/GLTestDir.py
@@ -619,17 +619,13 @@ def execute(self) -> None:
             emit += self.emitter.initmacro_done('%stests' % macro_prefix, 
testsbase)
         emit += '\ngl_INIT\n\n'
         if subdirs_with_configure_ac:
-            if single_configure:
-                emit += 'AC_CONFIG_SUBDIRS([%s])\n' % ' 
'.join(subdirs_with_configure_ac[:-1])
-            else:  # if not single_configure
-                emit += 'AC_CONFIG_SUBDIRS([%s])\n' % ' 
'.join(subdirs_with_configure_ac)
+            emit += 'AC_CONFIG_SUBDIRS([%s])\n' % ' 
'.join(subdirs_with_configure_ac)
         makefiles = ['Makefile']
         for directory in subdirs:
             # For subdirs that have a configure.ac by their own, it's the 
subdir's
             # configure.ac which creates the subdir's Makefile.am, not this 
one.
-            makefiles.append(joinpath(directory, 'Makefile'))
-        if not single_configure:
-            makefiles = makefiles[:-1]
+            if not directory in subdirs_with_configure_ac:
+                makefiles.append(joinpath(directory, 'Makefile'))
         emit += 'AC_CONFIG_FILES([%s])\n' % ' '.join(makefiles)
         emit += 'AC_OUTPUT\n'
         path = joinpath(self.testdir, 'configure.ac')




Reply via email to