From 5dd9572597ada0790d9b9d9911c433fd25dca092 Mon Sep 17 00:00:00 2001 From: Collin Funk Date: Mon, 4 Mar 2024 12:35:15 -0800 Subject: [PATCH] gnulib-tool.py: Follow gnulib-tool changes, part 39. Follow gnulib-tool change 2017-12-28 Bruno Haible gnulib-tool: Make --conditional-dependencies work better. * pygnulib/GLEmiter.py (GLEmiter.autoconfSnippets): Add argument referenceable_modules. Use referencable_modules for dependencies. * pygnulib/GLImport.py (GLImport.__init__): Don't reject the combination of --conditional-dependencies with --with-tests when mode is 'import'. (GLImport.gnulib_comp): Pass it. * pygnulib/GLTestDir.py (GLTestDir.execute): Pass it. --- ChangeLog | 13 +++++++++++++ gnulib-tool.py.TODO | 16 ---------------- pygnulib/GLEmiter.py | 15 ++++++++------- pygnulib/GLImport.py | 9 ++------- pygnulib/GLTestDir.py | 12 ++++++------ 5 files changed, 29 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index c22d5ce9ff..e6393e213d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2024-03-04 Collin Funk + + gnulib-tool.py: Follow gnulib-tool changes, part 39. + Follow gnulib-tool change + 2017-12-28 Bruno Haible + gnulib-tool: Make --conditional-dependencies work better. + * pygnulib/GLEmiter.py (GLEmiter.autoconfSnippets): Add argument + referenceable_modules. Use referencable_modules for dependencies. + * pygnulib/GLImport.py (GLImport.__init__): Don't reject the combination + of --conditional-dependencies with --with-tests when mode is 'import'. + (GLImport.gnulib_comp): Pass it. + * pygnulib/GLTestDir.py (GLTestDir.execute): Pass it. + 2024-03-04 Bruno Haible doc: Tweak last commit. diff --git a/gnulib-tool.py.TODO b/gnulib-tool.py.TODO index babf3abb10..1cb436d90d 100644 --- a/gnulib-tool.py.TODO +++ b/gnulib-tool.py.TODO @@ -688,22 +688,6 @@ Date: Mon Sep 3 21:19:16 2018 +0200 -------------------------------------------------------------------------------- -commit 589e96475f8f2d21a83405ab0672ce95091b80e5 -Author: Bruno Haible -Date: Fri Dec 29 00:29:23 2017 +0100 - - gnulib-tool: Make --conditional-dependencies work better. - - Reported by Dmitry Selyutin . - - * gnulib-tool (Options): Don't reject the combination of - --conditional-dependencies with --with-tests. - (func_emit_autoconf_snippets): Add argument referenceable_modules. - Don't reference $modules. - (func_import, func_create_testdir): Pass it. - --------------------------------------------------------------------------------- - commit cd58dba367a3b8ffbebb23f2099a820106197fae Author: Bruno Haible Date: Sun Oct 29 16:57:32 2017 +0100 diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py index 8939917a0a..9435b10666 100644 --- a/pygnulib/GLEmiter.py +++ b/pygnulib/GLEmiter.py @@ -178,7 +178,7 @@ class GLEmiter(object): emit = '%s\n' % '\n'.join(lines) return emit - def autoconfSnippets(self, modules, moduletable, + def autoconfSnippets(self, modules, referenceable_modules, moduletable, verifier, toplevel, disable_libtool, disable_gettext, replace_auxdir): '''GLEmiter.autoconfSnippets(modules, verifier, toplevel, disable_libtool, disable_gettext, replace_auxdir) -> str @@ -191,6 +191,8 @@ class GLEmiter(object): modules after they were processed. modules argument represents list of modules; every module in this list must be a GLModule instance. + referenceable_modules is the list of modules which may be referenced as + dependencies. moduletable is a GLModuleTable instance, which contains necessary information about dependencies of the modules. verifier is an integer, which can be 0, 1 or 2. @@ -207,6 +209,9 @@ class GLEmiter(object): for module in modules: if type(module) is not GLModule: raise TypeError('each module must be a GLModule instance') + for module in referenceable_modules: + if type(module) is not GLModule: + raise TypeError('each referenceable module must be a GLModule instance') if type(moduletable) is not GLModuleTable: raise TypeError('moduletable must be a GLFileAssistant, not %s' % type(moduletable).__name__) @@ -290,9 +295,7 @@ class GLEmiter(object): emit += ' %s=true\n' % shellvar depmodules = module.getDependenciesWithoutConditions() # Intersect dependencies with the modules list. - depmodules = [ dep - for dep in depmodules - if dep in modules ] # TODO should this be basemodules or modules? + depmodules = sorted(set(depmodules).intersection(referenceable_modules)) for depmodule in depmodules: if moduletable.isConditional(depmodule): shellfunc = depmodule.getShellFunc() @@ -322,9 +325,7 @@ class GLEmiter(object): if not moduletable.isConditional(module): depmodules = module.getDependenciesWithoutConditions() # Intersect dependencies with the modules list. - depmodules = [ dep - for dep in depmodules - if dep in modules ] # TODO should this be basemodules or modules? + depmodules = sorted(set(depmodules).intersection(referenceable_modules)) for depmodule in depmodules: if moduletable.isConditional(depmodule): shellfunc = depmodule.getShellFunc() diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py index e18a9601ec..9cf9a96e30 100644 --- a/pygnulib/GLImport.py +++ b/pygnulib/GLImport.py @@ -253,11 +253,6 @@ class GLImport(object): self.config.update_key(config, key) self.config.setModules(modules) - # Check if conddeps is enabled together with inctests. - inctests = self.config.checkInclTestCategory(TESTS['tests']) - if self.config['conddeps'] and inctests: - raise GLError(10, None) - # Define GLImport attributes. self.emitter = GLEmiter(self.config) self.filesystem = GLFileSystem(self.config) @@ -651,7 +646,7 @@ AC_DEFUN([%s_INIT], if witness_c_macro: emit += ' m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [%s])\n' % witness_c_macro # Emit main autoconf snippets. - emit += self.emitter.autoconfSnippets(moduletable['main'], + emit += self.emitter.autoconfSnippets(moduletable['main'], moduletable['main'], moduletable, 0, True, False, True, replace_auxdir) if witness_c_macro: emit += ' m4_popdef([gl_MODULE_INDICATOR_CONDITION])\n' @@ -674,7 +669,7 @@ AC_DEFUN([%s_INIT], emit += ' m4_pushdef([gl_MODULE_INDICATOR_CONDITION], ' emit += '[$gl_module_indicator_condition])\n' # Emit tests autoconf snippets. - emit += self.emitter.autoconfSnippets(moduletable['tests'], + emit += self.emitter.autoconfSnippets(moduletable['tests'], moduletable['main'] + moduletable['tests'], moduletable, 0, True, True, True, replace_auxdir) emit += ' m4_popdef([gl_MODULE_INDICATOR_CONDITION])\n' emit += self.emitter.initmacro_end('%stests' % macro_prefix) diff --git a/pygnulib/GLTestDir.py b/pygnulib/GLTestDir.py index 51c3f7a944..5f290c30c3 100644 --- a/pygnulib/GLTestDir.py +++ b/pygnulib/GLTestDir.py @@ -470,11 +470,11 @@ class GLTestDir(object): # autoconf snippets. It's cleanest to put those of the library before # those of the tests. emit += "gl_source_base='../%s'\n" % sourcebase - emit += self.emitter.autoconfSnippets(modules, + emit += self.emitter.autoconfSnippets(modules, modules, moduletable, 1, False, False, False, replace_auxdir) emit += "gl_source_base='.'" - emit += self.emitter.autoconfSnippets(modules, + emit += self.emitter.autoconfSnippets(modules, modules, moduletable, 2, False, False, False, replace_auxdir) emit += self.emitter.initmacro_end(macro_prefix) @@ -588,10 +588,10 @@ class GLTestDir(object): emit += self.emitter.initmacro_start(macro_prefix) emit += 'gl_source_base=\'%s\'\n' % sourcebase if single_configure: - emit += self.emitter.autoconfSnippets(main_modules, moduletable, + emit += self.emitter.autoconfSnippets(main_modules, main_modules, moduletable, 0, False, False, False, replace_auxdir) else: # if not single_configure - emit += self.emitter.autoconfSnippets(modules, moduletable, + emit += self.emitter.autoconfSnippets(modules, modules, moduletable, 1, False, False, False, replace_auxdir) emit += self.emitter.initmacro_end(macro_prefix) if single_configure: @@ -605,8 +605,8 @@ class GLTestDir(object): emit += ' gl_module_indicator_condition=$%stests_WITNESS\n' % macro_prefix emit += ' m4_pushdef([gl_MODULE_INDICATOR_CONDITION], ' emit += '[$gl_module_indicator_condition])\n' - snippets = self.emitter.autoconfSnippets(tests_modules, moduletable, - 1, True, False, False, replace_auxdir) + snippets = self.emitter.autoconfSnippets(tests_modules, main_modules + tests_modules, + moduletable, 1, True, False, False, replace_auxdir) emit += snippets.strip() emit += ' m4_popdef([gl_MODULE_INDICATOR_CONDITION])\n' emit += self.emitter.initmacro_end('%stests' % macro_prefix) -- 2.44.0