]> Savannah Git Hosting - gnulib.git/commitdiff
gnulib-tool: Drop workarounds for Automake < 1.14.
authorBruno Haible <bruno@clisp.org>
Thu, 28 Mar 2024 22:33:56 +0000 (23:33 +0100)
committerBruno Haible <bruno@clisp.org>
Thu, 28 Mar 2024 22:33:56 +0000 (23:33 +0100)
Reported by Collin Funk in
<https://lists.gnu.org/archive/html/bug-gnulib/2024-03/msg00384.html>.

* gnulib-tool.sh (func_emit_lib_Makefile_am): Emit pkgdata_DATA
initialization always.
(func_emit_tests_Makefile_am): Likewise.
(func_import): Don't emit 'AC_REQUIRE([AM_PROG_CC_C_O])' into
gnulib-comp.m4.
(func_create_testdir): Don't emit AM_PROG_CC_C_O into configure.ac.
Bump required Automake version to 1.14.
(func_create_megatestdir): Bump required Automake version to 1.14.
* pygnulib/constants.py: Update comments.
* pygnulib/GLEmiter.py (GLEmiter.lib_Makefile_am): Emit pkgdata_DATA
initialization always. Don't return uses_subdirs.
(GLEmiter.tests_Makefile_am): Likewise.
* pygnulib/GLImport.py (GLImport.gnulib_comp): Don't emit
'AC_REQUIRE([AM_PROG_CC_C_O])'.
(GLImport.execute): Update.
* pygnulib/GLTestDir.py (GLTestDir.execute): Don't emit AM_PROG_CC_C_O
into configure.ac. Bump required Automake version to 1.14.
(GLMegaTestDir.execute): Bump required Automake version to 1.14.

ChangeLog
gnulib-tool.sh
pygnulib/GLEmiter.py
pygnulib/GLImport.py
pygnulib/GLTestDir.py
pygnulib/constants.py

index 79167a7f51883add2615b185f1b06d592511b4b1..542320be4a108bd1e2d7b14acbc9e6fd18f8a8f0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2024-03-28  Bruno Haible  <bruno@clisp.org>
+
+       gnulib-tool: Drop workarounds for Automake < 1.14.
+       Reported by Collin Funk in
+       <https://lists.gnu.org/archive/html/bug-gnulib/2024-03/msg00384.html>.
+       * gnulib-tool.sh (func_emit_lib_Makefile_am): Emit pkgdata_DATA
+       initialization always.
+       (func_emit_tests_Makefile_am): Likewise.
+       (func_import): Don't emit 'AC_REQUIRE([AM_PROG_CC_C_O])' into
+       gnulib-comp.m4.
+       (func_create_testdir): Don't emit AM_PROG_CC_C_O into configure.ac.
+       Bump required Automake version to 1.14.
+       (func_create_megatestdir): Bump required Automake version to 1.14.
+       * pygnulib/constants.py: Update comments.
+       * pygnulib/GLEmiter.py (GLEmiter.lib_Makefile_am): Emit pkgdata_DATA
+       initialization always. Don't return uses_subdirs.
+       (GLEmiter.tests_Makefile_am): Likewise.
+       * pygnulib/GLImport.py (GLImport.gnulib_comp): Don't emit
+       'AC_REQUIRE([AM_PROG_CC_C_O])'.
+       (GLImport.execute): Update.
+       * pygnulib/GLTestDir.py (GLTestDir.execute): Don't emit AM_PROG_CC_C_O
+       into configure.ac. Bump required Automake version to 1.14.
+       (GLMegaTestDir.execute): Bump required Automake version to 1.14.
+
 2024-03-28  Bruno Haible  <bruno@clisp.org>
 
        pthread-h: Fix override of pthread_spinlock_t with non-GNU compilers.
index ba9ee83e74da9b41ca1051cf8a680d5060babb44..e0c8cfafbd4316402d2adb17aff3a9c4282b1854 100755 (executable)
@@ -48,7 +48,7 @@ nl='
 '
 IFS=" ""       $nl"
 
-# You can set AUTOCONFPATH to empty if autoconf 2.64 is already in your PATH.
+# You can set AUTOCONFPATH to empty if autoconf ≥ 2.64 is already in your PATH.
 AUTOCONFPATH=
 #case $USER in
 #  bruno )
@@ -57,10 +57,10 @@ AUTOCONFPATH=
 #    ;;
 #esac
 
-# You can set AUTOMAKEPATH to empty if automake 1.11 is already in your PATH.
+# You can set AUTOMAKEPATH to empty if automake ≥ 1.14 is already in your PATH.
 AUTOMAKEPATH=
 
-# You can set GETTEXTPATH to empty if autopoint 0.15 is already in your PATH.
+# You can set GETTEXTPATH to empty if autopoint ≥ 0.15 is already in your PATH.
 GETTEXTPATH=
 
 # You can set LIBTOOLPATH to empty if libtoolize 2.x is already in your PATH.
@@ -3763,8 +3763,6 @@ func_update_file ()
 # Input/Output:
 # - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val,dotfirst}
 #                   list of edits to be done to Makefile.am variables
-# Output:
-# - uses_subdirs    nonempty if object files in subdirs exist
 func_emit_lib_Makefile_am ()
 {
   # When using GNU make, or when creating an includable Makefile.am snippet,
@@ -3912,15 +3910,7 @@ func_emit_lib_Makefile_am ()
     echo "noinst_HEADERS ="
     echo "noinst_LIBRARIES ="
     echo "noinst_LTLIBRARIES ="
-    # Automake versions < 1.11.4 create an empty pkgdatadir at
-    # installation time if you specify pkgdata_DATA to empty.
-    # See automake bugs #10997 and #11030:
-    #  * https://debbugs.gnu.org/10997
-    #  * https://debbugs.gnu.org/11030
-    # So we need this workaround.
-    if grep '^pkgdata_DATA *+=' "$tmp"/allsnippets > /dev/null; then
-      echo "pkgdata_DATA ="
-    fi
+    echo "pkgdata_DATA ="
     echo "EXTRA_DIST ="
     echo "BUILT_SOURCES ="
     echo "SUFFIXES ="
@@ -4161,8 +4151,6 @@ func_emit_po_POTFILES_in ()
 # Input/Output:
 # - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val,dotfirst}
 #                   list of edits to be done to Makefile.am variables
-# Output:
-# - uses_subdirs    nonempty if object files in subdirs exist
 func_emit_tests_Makefile_am ()
 {
   witness_macro="$1"
@@ -4332,15 +4320,7 @@ func_emit_tests_Makefile_am ()
       echo "check_LIBRARIES = libtests.a"
     fi
   fi
-  # Automake versions < 1.11.4 create an empty pkgdatadir at
-  # installation time if you specify pkgdata_DATA to empty.
-  # See automake bugs #10997 and #11030:
-  #  * https://debbugs.gnu.org/10997
-  #  * https://debbugs.gnu.org/11030
-  # So we need this workaround.
-  if grep '^pkgdata_DATA *+=' "$tmp"/main_snippets "$tmp"/longrunning_snippets > /dev/null; then
-    echo "pkgdata_DATA ="
-  fi
+  echo "pkgdata_DATA ="
   echo "EXTRA_DIST ="
   echo "BUILT_SOURCES ="
   echo "SUFFIXES ="
@@ -6027,9 +6007,6 @@ s,//*$,/,'
 
     func_emit_pre_early_macros : '  ' "$final_modules"
 
-    if ! $gnu_make && test -n "$uses_subdirs"; then
-      echo "  AC_REQUIRE([AM_PROG_CC_C_O])"
-    fi
     for module in $final_modules; do
       func_verify_module
       if test -n "$module"; then
@@ -6682,7 +6659,6 @@ func_create_testdir ()
     modules="$main_modules"
   fi
   func_emit_lib_Makefile_am > "$testdir/$sourcebase/Makefile.am"
-  any_uses_subdirs="$uses_subdirs"
 
   # Create $m4base/Makefile.am.
   mkdir -p "$testdir/$m4base"
@@ -6724,7 +6700,6 @@ func_create_testdir ()
       use_libtests=false
       destfile="$testsbase/Makefile.am"
       func_emit_tests_Makefile_am "" > "$testdir/$testsbase/Makefile.am"
-      any_uses_subdirs="$any_uses_subdirs$uses_subdirs"
       # Create $testsbase/configure.ac.
       (echo "# Process this file with autoconf to produce a configure script."
        echo "AC_INIT([dummy], [0])"
@@ -6739,10 +6714,6 @@ func_create_testdir ()
 
        func_emit_pre_early_macros false '' "$modules"
 
-       if test -n "$uses_subdirs"; then
-         echo "AM_PROG_CC_C_O"
-         echo
-       fi
        for module in $modules; do
          func_verify_module
          if test -n "$module"; then
@@ -6822,7 +6793,7 @@ func_create_testdir ()
   # Create Makefile.am.
   (echo "## Process this file with automake to produce Makefile.in."
    echo
-   echo "AUTOMAKE_OPTIONS = 1.11 foreign"
+   echo "AUTOMAKE_OPTIONS = 1.14 foreign"
    echo
    echo "SUBDIRS = $subdirs"
    echo
@@ -6854,10 +6825,6 @@ func_create_testdir ()
 
    func_emit_pre_early_macros false '' "$final_modules"
 
-   if test -n "$any_uses_subdirs"; then
-     echo "AM_PROG_CC_C_O"
-     echo
-   fi
    for module in $final_modules; do
      if $single_configure; then
        func_verify_module
@@ -7152,7 +7119,7 @@ func_create_megatestdir ()
   # Create Makefile.am.
   (echo "## Process this file with automake to produce Makefile.in."
    echo
-   echo "AUTOMAKE_OPTIONS = 1.11 foreign"
+   echo "AUTOMAKE_OPTIONS = 1.14 foreign"
    echo
    echo "SUBDIRS = $megasubdirs"
    echo
index efde78823df195034e666bf87c017c4fe9c9112c..0bfbfe10e31db0a59423de1d7be95315521d68b9 100644 (file)
@@ -698,9 +698,8 @@ AC_DEFUN([%V1%_LIBSOURCES], [
         return emit
 
     def lib_Makefile_am(self, destfile: str, modules: list[GLModule], moduletable: GLModuleTable,
-                        makefiletable: GLMakefileTable, actioncmd: str, for_test: bool) -> tuple[str, bool]:
-        '''Emit the contents of the library Makefile. Returns str and a bool
-        variable which shows if subdirectories are used.
+                        makefiletable: GLMakefileTable, actioncmd: str, for_test: bool) -> str:
+        '''Emit the contents of the library Makefile. Returns it as a string.
         GLConfig: localpath, sourcebase, libname, pobase, auxdir, makefile_name, libtool,
         macro_prefix, podomain, conddeps, witness_c_macro.
 
@@ -865,15 +864,7 @@ AC_DEFUN([%V1%_LIBSOURCES], [
             emit += 'noinst_HEADERS =\n'
             emit += 'noinst_LIBRARIES =\n'
             emit += 'noinst_LTLIBRARIES =\n'
-            # Automake versions < 1.11.4 create an empty pkgdatadir at
-            # installation time if you specify pkgdata_DATA to empty.
-            # See automake bugs #10997 and #11030:
-            #  * https://debbugs.gnu.org/10997
-            #  * https://debbugs.gnu.org/11030
-            # So we need this workaround.
-            pattern = re.compile(r'^pkgdata_DATA *\+=', re.M)
-            if pattern.findall(allsnippets):
-                emit += 'pkgdata_DATA =\n'
+            emit += 'pkgdata_DATA =\n'
             emit += 'EXTRA_DIST =\n'
             emit += 'BUILT_SOURCES =\n'
             emit += 'SUFFIXES =\n'
@@ -1003,13 +994,11 @@ AC_DEFUN([%V1%_LIBSOURCES], [
         emit += '\t-rm -f @%s_LIBOBJDEPS@\n' % (macro_prefix)
         # Extend the 'maintainer-clean' rule.
         emit += 'maintainer-clean-local: distclean-gnulib-libobjs\n'
-        result = tuple([emit, uses_subdirs])
-        return result
+        return emit
 
     def tests_Makefile_am(self, destfile: str, modules: list[GLModule], moduletable: GLModuleTable,
-                          makefiletable: GLMakefileTable, witness_macro: str, for_test: bool) -> tuple[str, bool]:
-        '''Emit the contents of the tests Makefile. Returns str and a bool variable
-        which shows if subdirectories are used.
+                          makefiletable: GLMakefileTable, witness_macro: str, for_test: bool) -> str:
+        '''Emit the contents of the tests Makefile. Returns it as a string.
         GLConfig: localpath, modules, libname, auxdir, makefile_name, libtool,
         sourcebase, m4base, testsbase, macro_prefix, witness_c_macro,
         single_configure, libtests.
@@ -1196,17 +1185,7 @@ AC_DEFUN([%V1%_LIBSOURCES], [
                 emit += 'noinst_LIBRARIES += libtests.a\n'
             else:  # if not for_test
                 emit += 'check_LIBRARIES = libtests.a\n'
-
-        # Automake versions < 1.11.4 create an empty pkgdatadir at
-        # installation time if you specify pkgdata_DATA to empty.
-        # See automake bugs #10997 and #11030:
-        #  * https://debbugs.gnu.org/10997
-        #  * https://debbugs.gnu.org/11030
-        # So we need this workaround.
-        pattern = re.compile(r'^pkgdata_DATA *\+=', re.M)
-        if pattern.findall(main_snippets) or pattern.findall(longrun_snippets):
-            emit += 'pkgdata_DATA =\n'
-
+        emit += 'pkgdata_DATA =\n'
         emit += 'EXTRA_DIST =\n'
         emit += 'BUILT_SOURCES =\n'
         emit += 'SUFFIXES =\n'
@@ -1327,5 +1306,4 @@ AC_DEFUN([%V1%_LIBSOURCES], [
         emit += '\t  fi; \\\n'
         emit += '\tdone; \\\n'
         emit += '\t:\n'
-        result = tuple([emit, uses_subdirs])
-        return result
+        return emit
index 07be6742a1b9d2a92e3e39a717bfcab3c6ac931c..5137f07e3773d13e050da22181a65ddde65a2655 100644 (file)
@@ -648,16 +648,6 @@ AC_DEFUN([%s_EARLY],
   m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
   m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable\n''' % (configure_ac, macro_prefix)
         emit += self.emitter.preEarlyMacros(True, '  ', moduletable['final'])
-        uses_subdirs = False
-        for module in moduletable['main']:
-            # Test whether there are some source files in subdirectories.
-            for file in module.getFiles():
-                if (file.startswith('lib/') and file.endswith('.c')
-                        and file.count('/') > 1):
-                    uses_subdirs = True
-                    break
-        if not gnu_make and uses_subdirs:
-            emit += '  AC_REQUIRE([AM_PROG_CC_C_O])\n'
         for module in moduletable['final']:
             emit += '  # Code from module %s:\n' % str(module)
             snippet = module.getAutoconfEarlySnippet()
@@ -1330,9 +1320,9 @@ AC_DEFUN([%s_FILE_LIST], [\n''' % macro_prefix
         # can run 'autoconf -t', which reads gnulib-comp.m4.
         basename = joinpath(sourcebase, source_makefile_am)
         tmpfile = self.assistant.tmpfilename(basename)
-        emit, uses_subdirs = self.emitter.lib_Makefile_am(basename,
-                                                          self.moduletable['main'], self.moduletable, self.makefiletable,
-                                                          actioncmd, for_test)
+        emit = self.emitter.lib_Makefile_am(basename,
+                                            self.moduletable['main'], self.moduletable, self.makefiletable,
+                                            actioncmd, for_test)
         if automake_subdir:
             emit = sp.run([joinpath(DIRS['root'], 'build-aux/prefix-gnulib-mk'), '--from-gnulib-tool',
                            f'--lib-name={libname}', f'--prefix={sourcebase}/'],
@@ -1358,9 +1348,9 @@ AC_DEFUN([%s_FILE_LIST], [\n''' % macro_prefix
         if gentests:
             basename = joinpath(testsbase, tests_makefile_am)
             tmpfile = self.assistant.tmpfilename(basename)
-            emit, uses_subdirs = self.emitter.tests_Makefile_am(basename,
-                                                                self.moduletable['tests'], self.moduletable, self.makefiletable,
-                                                                '%stests_WITNESS' % macro_prefix, for_test)
+            emit = self.emitter.tests_Makefile_am(basename,
+                                                  self.moduletable['tests'], self.moduletable, self.makefiletable,
+                                                  '%stests_WITNESS' % macro_prefix, for_test)
             with codecs.open(tmpfile, 'wb', 'UTF-8') as file:
                 file.write(emit)
             filename, backup, flag = self.assistant.super_update(basename, tmpfile)
index aa9a6b82eaee9fe987d1520d63f823b7eb376c36..57fbef7b0640e17a1663ed56b30974b77f393c2d 100644 (file)
@@ -396,14 +396,13 @@ class GLTestDir(object):
             os.mkdir(directory)
         destfile = joinpath(directory, 'Makefile.am')
         if single_configure:
-            emit, uses_subdirs = self.emitter.lib_Makefile_am(destfile, main_modules,
-                                                              moduletable, self.makefiletable, '', for_test)
+            emit = self.emitter.lib_Makefile_am(destfile, main_modules,
+                                                moduletable, self.makefiletable, '', for_test)
         else:  # if not single_configure
-            emit, uses_subdirs = self.emitter.lib_Makefile_am(destfile, modules,
-                                                              moduletable, self.makefiletable, '', for_test)
+            emit = self.emitter.lib_Makefile_am(destfile, modules,
+                                                moduletable, self.makefiletable, '', for_test)
         with codecs.open(destfile, 'wb', 'UTF-8') as file:
             file.write(emit)
-        any_uses_subdirs = uses_subdirs
 
         # Create $m4base/Makefile.am.
         directory = joinpath(self.testdir, m4base)
@@ -433,8 +432,8 @@ class GLTestDir(object):
                 # Create $testsbase/Makefile.am.
                 destfile = joinpath(directory, 'Makefile.am')
                 witness_macro = '%stests_WITNESS' % macro_prefix
-                emit, uses_subdirs = self.emitter.tests_Makefile_am(destfile, tests_modules, moduletable,
-                                                                    self.makefiletable, witness_macro, for_test)
+                emit = self.emitter.tests_Makefile_am(destfile, tests_modules, moduletable,
+                                                      self.makefiletable, witness_macro, for_test)
                 with codecs.open(destfile, 'wb', 'UTF-8') as file:
                     file.write(emit)
             else:  # if not single_configure
@@ -442,8 +441,8 @@ class GLTestDir(object):
                 destfile = joinpath(directory, 'Makefile.am')
                 libtests = False
                 self.config.setLibtests(False)
-                emit, uses_subdirs = self.emitter.tests_Makefile_am(destfile, modules, moduletable,
-                                                                    self.makefiletable, '', for_test)
+                emit = self.emitter.tests_Makefile_am(destfile, modules, moduletable,
+                                                      self.makefiletable, '', for_test)
                 with codecs.open(destfile, 'wb', 'UTF-8') as file:
                     file.write(emit)
                 # Viewed from the $testsbase subdirectory, $auxdir is different.
@@ -462,8 +461,6 @@ class GLTestDir(object):
                 emit += 'AC_PROG_INSTALL\n'
                 emit += 'AC_PROG_MAKE_SET\n'
                 emit += self.emitter.preEarlyMacros(False, '', modules)
-                if uses_subdirs:
-                    emit += 'AM_PROG_CC_C_O\n\n'
                 snippets = list()
                 for module in modules:
                     if str(module) in ['gnumakefile', 'maintainer-makefile']:
@@ -552,7 +549,7 @@ class GLTestDir(object):
 
         # Create Makefile.am.
         emit = '## Process this file with automake to produce Makefile.in.\n\n'
-        emit += 'AUTOMAKE_OPTIONS = 1.11 foreign\n\n'
+        emit += 'AUTOMAKE_OPTIONS = 1.14 foreign\n\n'
         emit += 'SUBDIRS = %s\n\n' % ' '.join(subdirs)
         emit += 'ACLOCAL_AMFLAGS = -I %s\n' % m4base
         emit = constants.nlconvert(emit)
@@ -579,9 +576,6 @@ class GLTestDir(object):
         emit += 'm4_pattern_allow([^gl_LIBOBJS$])dnl a variable\n'
         emit += 'm4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable\n'
         emit += self.emitter.preEarlyMacros(False, '', modules)
-        if any_uses_subdirs:
-            emit += 'AM_PROG_CC_C_O\n'
-            emit += '\n'
         snippets = list()
         for module in final_modules:
             if single_configure:
@@ -1012,7 +1006,7 @@ class GLMegaTestDir(object):
 
         # Create Makefile.am.
         emit = '## Process this file with automake to produce Makefile.in.\n\n'
-        emit += 'AUTOMAKE_OPTIONS = 1.11 foreign\n\n'
+        emit += 'AUTOMAKE_OPTIONS = 1.14 foreign\n\n'
         emit += 'SUBDIRS = %s\n\n' % ' '.join(megasubdirs)
         emit += 'EXTRA_DIST = do-autobuild\n'
         emit = constants.nlconvert(emit)
index dd20624fe8b6c1df329255e1a469679c7fa3bdfd..16a60d1d3d970c428f9fa24c605c27982adb05cc 100644 (file)
@@ -125,11 +125,11 @@ TESTS = \
 
 # Define AUTOCONF minimum version
 DEFAULT_AUTOCONF_MINVERSION = 2.64
-# You can set AUTOCONFPATH to empty if autoconf 2.64 is already in your PATH
+# You can set AUTOCONFPATH to empty if autoconf ≥ 2.64 is already in your PATH
 AUTOCONFPATH = ''
-# You can set AUTOMAKEPATH to empty if automake 1.11 is already in your PATH
+# You can set AUTOMAKEPATH to empty if automake ≥ 1.14 is already in your PATH
 AUTOMAKEPATH = ''
-# You can set GETTEXTPATH to empty if autopoint 0.15 is already in your PATH
+# You can set GETTEXTPATH to empty if autopoint ≥ 0.15 is already in your PATH
 GETTEXTPATH = ''
 # You can set LIBTOOLPATH to empty if libtoolize 2.x is already in your PATH
 LIBTOOLPATH = ''