>From 6d29a15180d7ba0360d8fb56793a0766926b0dee Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Mon, 8 Aug 2022 00:43:25 +0200 Subject: [PATCH 18/19] gnulib-tool.py: Fix handling of nonexistent module names in --extract-*. * gnulib-tool.py (main): To test whether a module exists, just call GLModuleSystem.find and test its return value. --- ChangeLog | 4 ++ gnulib-tool.py | 133 ++++++++++++++++++++++++------------------------- 2 files changed, 68 insertions(+), 69 deletions(-) diff --git a/ChangeLog b/ChangeLog index beb60578d0..f3a37cea1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2022-08-07 Bruno Haible + gnulib-tool.py: Fix handling of nonexistent module names in --extract-*. + * gnulib-tool.py (main): To test whether a module exists, just call + GLModuleSystem.find and test its return value. + gnulib-tool.py: Fix --extract-dependencies result. * pygnulib/GLModuleSystem.py (GLModule.getDependencies): Return a snippet, not a list. Implement dependency of ${module}-tests on diff --git a/gnulib-tool.py b/gnulib-tool.py index 0cd5accd21..0abe8c5ca7 100755 --- a/gnulib-tool.py +++ b/gnulib-tool.py @@ -47,7 +47,6 @@ import shlex from tempfile import mktemp from pygnulib import constants from pygnulib import classes -from pygnulib import GLError #=============================================================================== @@ -716,8 +715,6 @@ def main(): print(result) elif mode == 'find': - # Prepare GLModuleSystem.find to throw an exception. - config.setErrors(True) modulesystem = classes.GLModuleSystem(config) for filename in files: if (isfile(joinpath(DIRS['root'], filename)) @@ -754,14 +751,12 @@ def main(): listing = [ line for line in listing if modulesystem.file_is_module(line) ] - module_candidates = sorted(set(listing)) - for module in module_candidates: - try: - if filename in modulesystem.find(module).getFiles(): - print(module) - except GLError: - # Ignore module candidates that don't actually exist. - pass + candidates = sorted(set(listing)) + for name in candidates: + module = modulesystem.find(name) + if module: # Ignore module candidates that don't actually exist. + if module.getFiles(): + print(name) else: message = '%s: warning: file %s does not exist\n' % (constants.APP['name'], filename) sys.stderr.write(message) @@ -971,46 +966,46 @@ def main(): elif mode == 'extract-description': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getDescription()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getDescription()) elif mode == 'extract-comment': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getComment()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getComment()) elif mode == 'extract-status': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getStatus()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getStatus()) elif mode == 'extract-notice': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getNotice()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getNotice()) elif mode == 'extract-applicability': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - print(module.getApplicability()) + for name in modules: + module = modulesystem.find(name) + if module: + print(module.getApplicability()) elif mode == 'extract-filelist': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - files = module.getFiles() - print('\n'.join(files)) + for name in modules: + module = modulesystem.find(name) + if module: + files = module.getFiles() + print('\n'.join(files)) elif mode == 'extract-dependencies': if avoids: @@ -1020,60 +1015,60 @@ def main(): sys.stderr.write(message) sys.exit(1) modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getDependencies()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getDependencies()) elif mode == 'extract-autoconf-snippet': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getAutoconfSnippet()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getAutoconfSnippet()) elif mode == 'extract-automake-snippet': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getAutomakeSnippet()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getAutomakeSnippet()) elif mode == 'extract-include-directive': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getInclude()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getInclude()) elif mode == 'extract-link-directive': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getLink()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getLink()) elif mode == 'extract-license': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - print(module.getLicense()) + for name in modules: + module = modulesystem.find(name) + if module: + print(module.getLicense()) elif mode == 'extract-maintainer': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - sys.stdout.write(module.getMaintainer()) + for name in modules: + module = modulesystem.find(name) + if module: + sys.stdout.write(module.getMaintainer()) elif mode == 'extract-tests-module': modulesystem = classes.GLModuleSystem(config) - modules = [ modulesystem.find(module) - for module in modules ] - for module in modules: - if module.getTestsModule(): - print(module.getTestsName()) + for name in modules: + module = modulesystem.find(name) + if module: + if module.getTestsModule(): + print(module.getTestsName()) elif mode == 'copy-file': srcpath = files[0] -- 2.34.1