This patch pretty much copy and pastes a lot of code used from
GLEmiter.lib_Makefile_am into GLEmiter.tests_Makefile_am. The
moduletable that I had to add to the parameter list already had a doc
string written for me. :)
Collin
From 51742eb067dfc686595b16c692d71f9cc92856b5 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Fri, 1 Mar 2024 23:39:26 -0800
Subject: [PATCH] gnulib-tool.py: Follow gnulib-tool changes, part 38.
Follow gnulib-tool change
2020-12-26 Bruno Haible <br...@clisp.org>
gnulib-tool: Make --conditional-dependencies work with --with-tests.
* pygnulib/GLEmiter.py (GLEmiter.tests_Makefile_am): Add missing
moduletable argument. Handle conditional dependencies like
GLEmiter.lib_Makefile_am.
* pygnulib/GLTestDir.py (GLTestDir.execute): Adjust arguments.
---
ChangeLog | 11 ++++++++
gnulib-tool.py.TODO | 14 ---------
pygnulib/GLEmiter.py | 66 ++++++++++++++++++++++++++++++-------------
pygnulib/GLTestDir.py | 8 +++---
4 files changed, 61 insertions(+), 38 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 1778f34adc..adb87082e3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2024-03-01 Collin Funk <collin.fu...@gmail.com>
+
+ gnulib-tool.py: Follow gnulib-tool changes, part 38.
+ Follow gnulib-tool change
+ 2020-12-26 Bruno Haible <br...@clisp.org>
+ gnulib-tool: Make --conditional-dependencies work with --with-tests.
+ * pygnulib/GLEmiter.py (GLEmiter.tests_Makefile_am): Add missing
+ moduletable argument. Handle conditional dependencies like
+ GLEmiter.lib_Makefile_am.
+ * pygnulib/GLTestDir.py (GLTestDir.execute): Adjust arguments.
+
2024-03-01 Bruno Haible <br...@clisp.org>
gnulib-tool.py: Clarify minimum supported Python version.
diff --git a/gnulib-tool.py.TODO b/gnulib-tool.py.TODO
index 6e02953d57..babf3abb10 100644
--- a/gnulib-tool.py.TODO
+++ b/gnulib-tool.py.TODO
@@ -606,20 +606,6 @@ Date: Tue Dec 29 02:48:31 2020 +0100
--------------------------------------------------------------------------------
-commit 9f0ade083bf3250281cbf454da656a28270a0be5
-Author: Bruno Haible <br...@clisp.org>
-Date: Sun Dec 27 01:21:22 2020 +0100
-
- gnulib-tool: Make --conditional-dependencies work with --with-tests.
-
- Reported by Paul Eggert in
- <https://lists.gnu.org/archive/html/bug-gnulib/2020-12/msg00236.html>.
-
- * gnulib-tool (func_emit_tests_Makefile_am): Handle conditional
- dependencies like func_emit_lib_Makefile_am.
-
---------------------------------------------------------------------------------
-
commit baec1bac1602ba8534320c295e120f7b658400f4
Author: Bruno Haible <br...@clisp.org>
Date: Sat Feb 22 15:15:01 2020 +0100
diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py
index 2a28021938..7115dfe115 100644
--- a/pygnulib/GLEmiter.py
+++ b/pygnulib/GLEmiter.py
@@ -885,8 +885,8 @@ AC_DEFUN([%V1%_LIBSOURCES], [
result = tuple([emit, uses_subdirs])
return result
- def tests_Makefile_am(self, destfile, modules, makefiletable,
- witness_macro, for_test):
+ def tests_Makefile_am(self, destfile, modules, moduletable,
+ makefiletable, witness_macro, for_test):
'''GLEmiter.tests_Makefile_am(destfile, modules, makefiletable,
witness_c_macro, for_test) -> tuple of string and bool
@@ -938,6 +938,7 @@ AC_DEFUN([%V1%_LIBSOURCES], [
ac_version = self.config['ac_version']
libtests = self.config['libtests']
single_configure = self.config['single_configure']
+ convert_to_gnu_make_1 = (re.compile(r'^if (.*)', re.MULTILINE), r'ifneq (,$(\1))')
emit = ''
if libtool:
@@ -974,38 +975,63 @@ AC_DEFUN([%V1%_LIBSOURCES], [
else: # if for_test and not single_configure
accept = True
if accept:
- snippet = module.getAutomakeSnippet()
- snippet = snippet.replace('lib_LIBRARIES', 'lib%_LIBRARIES')
- snippet = snippet.replace('lib_LTLIBRARIES', 'lib%_LTLIBRARIES')
+ amsnippet1 = module.getAutomakeSnippet_Conditional()
+ amsnippet1 = amsnippet1.replace('lib_LIBRARIES', 'lib%_LIBRARIES')
+ amsnippet1 = amsnippet1.replace('lib_LTLIBRARIES', 'lib%_LTLIBRARIES')
if eliminate_LDFLAGS:
pattern = re.compile('^(lib_LDFLAGS[\t ]*\\+=.*$\n)', re.M)
- amsnippet1 = pattern.sub('', snippet)
+ amsnippet1 = pattern.sub('', amsnippet1)
pattern = re.compile('lib_([A-Z][A-Z]*)', re.M)
- snippet = pattern.sub('libtests_a_\\1', snippet)
- snippet = snippet.replace('$(GNULIB_', '$(' + module_indicator_prefix + '_GNULIB_')
- snippet = snippet.replace('lib%_LIBRARIES', 'lib_LIBRARIES')
- snippet = snippet.replace('lib%_LTLIBRARIES', 'lib_LTLIBRARIES')
+ amsnippet1 = pattern.sub('libtests_a_\\1', amsnippet1)
+ amsnippet1 = amsnippet1.replace('$(GNULIB_', '$(' + module_indicator_prefix + '_GNULIB_')
+ amsnippet1 = amsnippet1.replace('lib%_LIBRARIES', 'lib_LIBRARIES')
+ amsnippet1 = amsnippet1.replace('lib%_LTLIBRARIES', 'lib_LTLIBRARIES')
if edit_check_PROGRAMS:
- snippet = snippet.replace('check_PROGRAMS', 'noinst_PROGRAMS')
- snippet = snippet.replace('${gl_include_guard_prefix}',
- include_guard_prefix)
+ amsnippet1 = amsnippet1.replace('check_PROGRAMS', 'noinst_PROGRAMS')
+ amsnippet1 = amsnippet1.replace('${gl_include_guard_prefix}',
+ include_guard_prefix)
# Check if module is 'alloca'.
if libtests and str(module) == 'alloca':
- snippet += 'libtests_a_LIBADD += @ALLOCA@\n'
- snippet += 'libtests_a_DEPENDENCIES += @ALLOCA@\n'
+ amsnippet1 += 'libtests_a_LIBADD += @ALLOCA@\n'
+ amsnippet1 += 'libtests_a_DEPENDENCIES += @ALLOCA@\n'
+
+ amsnippet1 = constants.combine_lines_matching(re.compile('%s_%s_SOURCES' % (libname, libext)),
+ amsnippet1)
+ # Get unconditional snippet, edit it and save to amsnippet2.
+ amsnippet2 = module.getAutomakeSnippet_Unconditional()
+ pattern = re.compile('lib_([A-Z][A-Z]*)', re.M)
+ amsnippet2 = pattern.sub('%s_%s_\\1' % (libname, libext),
+ amsnippet2)
+ amsnippet2 = amsnippet2.replace('$(GNULIB_',
+ '$(' + module_indicator_prefix + '_GNULIB_')
# Skip the contents if it's entirely empty.
- if not snippet.isspace():
- nonwrapped_snippet = snippet
+ if not (amsnippet1 + amsnippet2).isspace():
snippet = '## begin gnulib module %s\n' % str(module)
if gnu_make:
snippet += 'ifeq (,$(OMIT_GNULIB_MODULE_%s))\n' % str(module)
snippet += '\n'
- snippet += nonwrapped_snippet
+ if conddeps:
+ if moduletable.isConditional(module):
+ name = module.getConditionalName()
+ if gnu_make:
+ snippet += 'ifneq (,$(%s))\n' % name
+ else:
+ snippet += 'if %s\n' % name
+ if gnu_make:
+ snippet += re.sub(convert_to_gnu_make_1[0], convert_to_gnu_make_1[1], amsnippet1)
+ else:
+ snippet += amsnippet1
+ if conddeps:
+ if moduletable.isConditional(module):
+ snippet += 'endif\n'
+ if gnu_make:
+ snippet += re.sub(convert_to_gnu_make_1[0], convert_to_gnu_make_1[1], amsnippet2)
+ else:
+ snippet += amsnippet2
if gnu_make:
snippet += 'endif\n'
- snippet += '## end gnulib module %s\n' % str(module)
- snippet += '\n'
+ snippet += '## end gnulib module %s\n\n' % str(module)
# Mention long-running tests at the end.
if 'longrunning-test' in module.getStatuses():
longrun_snippets += snippet
diff --git a/pygnulib/GLTestDir.py b/pygnulib/GLTestDir.py
index 9f5e0fe38f..51c3f7a944 100644
--- a/pygnulib/GLTestDir.py
+++ b/pygnulib/GLTestDir.py
@@ -393,8 +393,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, self.makefiletable, witness_macro, for_test)
+ emit, uses_subdirs = 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
@@ -402,8 +402,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, self.makefiletable, '', for_test)
+ emit, uses_subdirs = 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.
--
2.44.0