pygnulib/GLTestDir.py


Log

Author Commit Date CI Message
Bruno Haible de208bd2 2025-06-16T11:15:01 gnulib-tool: Default to --single-configure. New option --two-configures. * gnulib-tool.sh: single_configure now defaults to false. New option --two-configures. Stop documenting option --single-configure. * pygnulib/GLInfo.py (GLInfo.usage): Document option --two-configures. Stop documenting option --single-configure. * pygnulib/GLTestDir.py (GLTestDir.execute): Update comment. * pygnulib/main.py (main): single_configure now defaults to false. New option --two-configures. * doc/transversal.texi: Update. * HACKING: Update.
Bruno Haible 6f629af8 2025-05-26T10:25:10 gnulib-tool: Remove build-aux/test-driver.orig from testdirs. * gnulib-tool.sh (func_create_testdir): Remove file build-aux/test-driver.orig at the end. * pygnulib/GLTestDir.py (_patch_test_driver): Likewise.
Pádraig Brady 7b089321 2025-01-01T09:24:36 maint: run 'make update-copyright'
Bruno Haible 26aab01a 2024-08-05T20:24:44 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.
Bruno Haible 8f2cda7d 2024-07-28T23:52:04 gnulib-tool.py: Avoid adding specific modules to a testdir. Reported by Paul Eggert in <https://lists.gnu.org/archive/html/bug-gnulib/2024-07/msg00292.html>. * pygnulib/GLInfo.py (GLInfo.usage): Document --extract-usability-in-testdir option. * pygnulib/GLModuleSystem.py (GLModule.section_label_pattern): Recognize Usable-in-testdir section. (GLModule.getUsabilityInTestdir): New function. * pygnulib/GLTestDir.py (GLTestDir.execute): Invoke it to filter out modules to avoid. Warn if such a module was specified. * pygnulib/main.py (main): Add support for --extract-usability-in-testdir. Provide an error message for error 24. * pygnulib/GLError.py: Likewise. * modules/config-h (Usable-in-testdir): New section. * modules/lib-ignore (Usable-in-testdir): New section. * modules/mountlist (Usable-in-testdir): New section. * modules/non-recursive-gnulib-prefix-hack (Usable-in-testdir): New section. * modules/timevar (Usable-in-testdir): New section. (Files): Remove lib/timevar.def.
Collin Funk 7a99ec18 2024-06-15T05:42:18 gnulib-tool.py: Revert previous change. * pygnulib/constants.py (joinpath): Restore function and remove unused local variable. (relativize, symlink_relative, as_link_value_at_dest, hardlink): Use it. * pygnulib/GLConfig.py (resetAutoconfFile): Likewise. * pygnulib/GLEmiter.py (lib_Makefile_am, tests_Makefile_am): Likewise. * pygnulib/GLFileSystem.py (lookup, shouldLink, tmpfilename, add) (update, add_or_update, super_update): Likewise. * pygnulib/GLImport.py (__init__, relative_to_currdir) (_done_dir_, _update_ignorelist_, prepare, execute): Likewise. * pygnulib/GLInfo.py (version): Likewise. * pygnulib/GLMakefileTable.py (parent): Likewise. * pygnulib/GLModuleSystem.py (exists, find, getFiles) (getAutomakeSnippet_Unconditional): Likewise. * pygnulib/GLTestDir.py (_patch_test_driver, execute): Likewise. * pygnulib/main.py (main): Likewise.
Collin Funk 790206bf 2024-06-14T21:55:48 gnulib-tool.py: Simplify joining paths. * pygnulib/constants.py (joinpath): Remove function. It is equivalent to os.path.normpath(os.path.join(...)) where the os.path.normpath is typically not needed. (relativize, symlink_relative, as_link_value_at_dest, hardlink): Use os.path.join instead of joinpath. * pygnulib/GLConfig.py (resetAutoconfFile): Likewise. * pygnulib/GLEmiter.py (lib_Makefile_am, tests_Makefile_am): Likewise. * pygnulib/GLFileSystem.py (lookup, shouldLink, tmpfilename, add) (update, add_or_update, super_update): Likewise. * pygnulib/GLInfo.py (version): Likewise. * pygnulib/GLMakefileTable.py (parent): Likewise. * pygnulib/GLTestDir.py (_patch_test_driver, execute): Likewise. * pygnulib/main.py (main): Likewise. * pygnulib/GLModuleSystem.py (exists, find, getFiles): Likewise. * pygnulib/GLImport.py (__init__, relative_to_currdir) (_done_dir_, _update_ignorelist_, prepare, execute): Likewise. (getAutomakeSnippet_Unconditional): Likewise. Add a comment about not using os.path.normpath() to protect a Make variable.
Collin Funk 719ce7d3 2024-05-13T21:36:25 gnulib-tool.py: Don't continue creating testdirs when destdir exists. * pygnulib/GLError.py (GLError.__init__, GLError.__repr__): Add a new error number for destination directories that already exist. * pygnulib/main.py (main_with_exception_handling): Print the message. * pygnulib/GLTestDir.py (GLTestDir.__init__, GLMegaTestdir.__init__): Fail if the destination directory exists instead of creating files and failing to patch test driver.
Collin Funk 3169fd03 2024-05-02T00:49:58 gnulib-tool.py: Don't leave temporary directories on exit. * pygnulib/main.py (main_with_exception_handling): Use tempfile.TemporaryDirectory as a context manager so it is removed before the program exits. (main): Expect a temporary directory to be passed as an argument. * pygnulib/GLConfig.py (GLConfig.__init__): Accept an optional temporary directory parameter instead of creating one. * pygnulib/GLImport.py (GLImport.__init__): Don't remove the cache's temporary directory since it doesn't create one anymore. (GLImport.execute): Don't remove the temporary directory explicitly. It is handled by the usage of a context manager. * pygnulib/GLTestDir.py (GLTestDir.execute, GLMegaTestDir.execute): Likewise.
Collin Funk adc6d632 2024-05-01T21:26:34 gnulib-tool.py: Quote file names passed to 'patch'. * pygnulib/GLTestDir.py (_patch_test_driver): Import shlex and cleanup unused imports. Use shlex.quote() on the file names passed to 'patch'. * pygnulib/GLFileSystem.py (GLFileSystem.lookup): Likewise. Perform redirection using sp.call() arguments instead of using the shell.
Collin Funk ffde9905 2024-05-01T01:12:18 gnulib-tool.py: Use the GLModule's name variable directly. * pygnulib/GLModuleSystem.py (GLModule.getName): Remove function. (GLModule.__str__, GLModule.__repr__, GLModule.isNonTests) (GLModule.repeatModuleInTests, GLModule.getDependenciesRecursively) (GLModule.getShellFunc, GLModule.getShellVar) (GLModule.getConditionalName, GLModule.getApplicability) (GLModule.getDependencies, GLModule.getAutomakeSnippet_Unconditional) (GLModule.getLicense, GLModuleSystem.find) (GLModuleTable.transitive_closure): Use the GLModule's name instance variable instead of using str() or removed getName() function. * pygnulib/GLEmiter.py (GLEmiter.autoconfSnippet) (GLEmiter.preEarlyMacros, GLEmiter.lib_Makefile_am) (GLEmiter.tests_Makefile_am): Likewise. * pygnulib/GLImport.py (GLImport.gnulib_comp, GLImport.prepare): Likewise. * pygnulib/GLTestDir.py (GLTestDir.execute, GLMegaTestDir.execute): Likewise.
Collin Funk 134f6b8a 2024-04-30T01:09:55 gnulib-tool.py: Remove remaining unused instance variables. * pygnulib/GLModuleSystem.py (GLModule.__init__) (GLModuleTable.__init__): Remove the unused GLFileSystem variable. These classes perform lookups with a GLModuleSystem. * pygnulib/GLTestDir.py (GLTestDir.__init__): Remove the unused GLFileAssistant variable. The transformations it performs are not needed in testdirs.
Collin Funk 20061b49 2024-04-29T22:20:31 gnulib-tool.py: Add type hints to classes. * pygnulib/*.py: Add type hints for all instance and class variables. * pygnulib/GLMakefileTable.py (GLMakefileTable.__getitem__): Fix return type hint since the dictionary has str values.
Collin Funk afca3c77 2024-04-29T22:15:56 gnulib-tool.py: Emit libtests in testdirs generated Makefile.am. Reported by Bruno Haible in <https://lists.gnu.org/archive/html/bug-gnulib/2024-04/msg00463.html>. * pygnulib/GLTestDir.py (GLTestDir.execute): Modify the GLEmiter's config variable instead of the GLTestDir's so that it can be accessed when emitting the Makefile.am.
Collin Funk dba810f6 2024-04-27T15:01:24 gnulib-tool.py: Preserve module ordering in --create-megatestdir. * pygnulib/GLTestDir.py (GLMegaTestDir.execute): Use a separate set to remove duplicates from the original list without sorting.
Collin Funk f306be62 2024-04-26T01:58:09 gnulib-tool.py: Remove some unused instance variables. * pygnulib/GLTestDir.py (GLMegaTestDir.__init__): Don't define instance variables that are never used.
Collin Funk 9af79f66 2024-04-25T15:30:29 gnulib-tool.py: Reduce code duplication in file name transformations. * pygnulib/functions.py: New file for shared functions between modules. Add a function based on functions removed from GLImport and GLTestDir. Accepts a single file name instead of a list. * pygnulib/GLImport.py (GLImport.prepare): Use the new function. (GLImport.rewrite_new_files, GLImport.rewrite_old_files): Remove functions. * pygnulib/GLTestDir.py (GLTestDir.execute): Use the new function. (GLTestDir.rewrite_files): Remove functions. * pygnulib/main.py (main): Remove unused function import. Use the new function.
Collin Funk 962397de 2024-04-24T16:04:25 gnulib-tool.py: Add a new GLFileTable class. * pygnulib/GLFileTable.py: New file. Define the GLFileTable class with five attributes which can be individually typed. * pygnulib/GLTestDir.py (GLTestDir.execute): Use the GLFileTable class. * pygnulib/GLImport.py (GLImport.gnulib_comp, GLImport.prepare) (GLImport.execute): Likewise. Update type hints and doc strings.
Collin Funk 379b3a02 2024-04-23T11:28:19 gnulib-tool.py: Make better use of imports. * pygnulib/*.py: Import functions from constants.py directly instead of assigning them to module-specific variable. Keep the module prefix for standard library functions.
Collin Funk 5b1dcad0 2024-04-20T20:29:44 gnulib-tool.py: Don't fail when given a bad module name. * pygnulib/GLTestDir.py (GLTestDir.execute): Don't include None in the list of GLModule objects. * pygnulib/GLModuleSystem.py (GLModuleSystem.find): Document the meaning of the None return.
Collin Funk 544b6f6e 2024-04-19T23:42:24 gnulib-tool.py: Remove duplicate per-module definitions. * pygnulib/constants.py: Remove duplicate __authors__, __license__, and __copyright__ definitions. * pygnulib/GLInfo.py: Use the value of __authors__ and __copyright__ from __init__.py for output. * pygnulib/*.py: Remove unused references to the constant.py definitions.
Bruno Haible a114a97b 2024-04-20T21:55:45 gnulib-tool.py: Fix output of --create-megatestdir. * pygnulib/GLTestDir.py (GLMegaTestDir.execute): Remove stray backslash from output.
Bruno Haible 3cdd0b36 2024-04-18T00:44:19 gnulib-tool.py: Use same warning style as gnulib-tool.sh. * pygnulib/GLTestDir.py (GLTestDir.execute): Prefix the "incompatible license" message with "gnulib-tool: warning: ".
Collin Funk 3e5ac2fc 2024-04-15T09:16:25 gnulib-tool.py: Optimize directory creation. * pygnulib/GLTestDir.py (GLTestDir.execute): Use a list of possible subdirectories and create them upfront instead of checking every file.
Collin Funk aaabd2eb 2024-04-14T10:18:03 gnulib-tool.py: Don't perform newline conversions. * pygnulib/constants.py (nlconvert): Remove function. Remove unused platform import. * pygnulib/GLImport.py (GLImport.gnulib_cache): Remove calls to nlconvert(). * pygnulib/GLModuleSystem.py (GLModule.getAutomakeSnippet_Unconditional): Likewise. * pygnulib/GLTestDir.py (GLTestDir.execute, GLMegaTestDir.execute): Likewise.
Bruno Haible 3258dcae 2024-04-13T12:55:44 gnulib-tool.py: Stop using codecs.open. * pygnulib/*.py: To open a file, consistently use open(..., mode='[rwa]', newline='\n', encoding='utf-8').
Bruno Haible d018f537 2024-04-13T12:06:34 gnulib-tool.py: Refactor directory tree removals. * pygnulib/constants.py (rmtree): New function. * pygnulib/GLImport.py (GLImport.execute): Use it instead of calling 'rm -rf' directly or shutil.rmtree. * pygnulib/GLTestDir.py (GLTestDir.execute, GLMegaTestDir.execute): Likewise. * pygnulib/main.py (main): Likewise.
Collin Funk 3bb200bb 2024-04-11T11:27:34 gnulib-tool.py: Remove redundant backslashes from regexps. * pygnulib/GLTestDir.py (GLTestDir.execute): Don't backslash ']' when it is outside of a set. * pygnulib/GLImport.py (GLImport.__init__): Don't use a backslash when ']' is at the start of a '[...]' set. Don't backslash special characters in a '[...]' set since they have their meaning dropped. * pygnulib/main.py (main): Likewise.
Collin Funk d4520b5b 2024-04-10T08:24:58 gnulib-tool.py: Use function arguments instead of magic numbers. * pygnulib/GLEmiter.py (GLEmiter.autoconfSnippets): Remove the 'verifier' integer flag argument. Add the 'module_filter' function argument. Use it to determine if Autoconf snippets should be printed for each module. * pygnulib/GLImport.py (GLImport.gnulib_comp): Update call to use a lambda function. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
Collin Funk f41781a9 2024-04-08T16:37:48 gnulib-tool.py: Use single-quotes for strings. * pygnulib/*.py: Change double-quoted strings to use single-quotes unless doing so would require adding backslashes.
Collin Funk 965b5c72 2024-04-08T16:08:50 gnulib-tool.py: Prefer 'list.append(item)' over 'list += [item]'. * pygnulib/*.py: Change occurrences '+= [item]' to use '.append(item)' where item is a single element added to the list. See discussion here: <https://lists.gnu.org/archive/html/bug-gnulib/2024-04/msg00091.html>
Collin Funk 5ac9d876 2024-04-07T18:49:24 gnulib-tool.py: Omit some unnecessary list() calls around sorted(). * pygnulib/GLEmiter.py (GLEmiter.lib_Makefile_am): Remove the list() call in the argument to sorted. The sorted() function works on any iterable and always returns a list. * pygnulib/GLImport.py (GLImport.rewrite_old_files) (GLImport.rewrite_new_files): Likewise. * pygnulib/GLModuleSystem.py (GLModuleTable.transitive_closure) (GLModuleTable.transitive_closure_separately): Likewise. * pygnulib/GLTestDir.py (GLTestDir.rewrite_files): Likewise.
Collin Funk 6b97d904 2024-04-04T14:56:12 gnulib-tool.py: Fix pylint 'raise-missing-from' warnings. * pygnulib/*.py: Use explicit exception chaining so that stack trace messages do not seem like bugs. See examples in: <https://lists.gnu.org/archive/html/bug-gnulib/2024-04/msg00056.html>
Collin Funk 51e46581 2024-04-03T02:56:42 gnulib-tool.py: Modernize class declarations to Python 3. * pygnulib/GLConfig.py: Remove the explicit object inheritance from class declarations. This is previously required in Python 2. * pygnulib/GLEmiter.py: Likewise. * pygnulib/GLFileSystem.py: Likewise. * pygnulib/GLImport.py: Likewise. * pygnulib/GLInfo.py: Likewise. * pygnulib/GLMakefileTable.py: Likewise. * pygnulib/GLModuleSystem.py: Likewise. * pygnulib/GLTestDir.py: Likewise.
Collin Funk 519a00ed 2024-04-02T11:35:51 gnulib-tool.py: Use [] instead of list() to initialize empty lists. * pygnulib/*.py: Change occurrences of list() to [].
Collin Funk bd7a7a93 2024-04-02T03:58:37 gnulib-tool.py: Accept valid make syntax for escaped newlines. * pygnulib/GLModuleSystem.py (GLModuleTable.add_dummy): Use combine_lines instead of remove remove_backslash_newline so spaces are added between each combined line. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise. * pygnulib/constants.py (remove_backslash_newline): Remove unused function.
Bruno Haible 52a5f9e3 2024-04-02T13:42:53 gnulib-tool: Remove unused variables. * pygnulib/GLConfig.py: Remove unused variables. * pygnulib/GLEmiter.py: Likewise. * pygnulib/GLFileSystem.py: Likewise. * pygnulib/GLImport.py: Likewise. * pygnulib/GLInfo.py: Likewise. * pygnulib/GLModuleSystem.py: Likewise. * pygnulib/GLTestDir.py: Likewise. * pygnulib/main.py: Likewise. * gnulib-tool.sh (func_emit_tests_Makefile_am): Remove unused variable perhapsLT.
Bruno Haible bf2f5662 2024-04-01T21:28:23 gnulib-tool.py: Simplify imports. * pygnulib/enums.py: New file, extracted from pygnulib/GLFileSystem.py. * pygnulib/classes.py: Remove file. * pygnulib/GLFileSystem.py: Remove class CopyAction. Update imports. * pygnulib/GLTestDir.py: Update imports. * pygnulib/GLConfig.py: Update imports and remove 'classes.' prefix. * pygnulib/main.py: Likewise.
Bruno Haible ca54b4ae 2024-03-29T22:48:37 gnulib-tool: Use bold output on Linux, NetBSD, OpenBSD, OmniOS consoles. Reported by Pádraig Brady in <https://lists.gnu.org/archive/html/bug-gnulib/2024-03/msg00399.html>. * gnulib-tool.sh (func_show_module_list): Use 'tput' to determine the "bold" capability of terminal types other than xterm*. * pygnulib/constants.py (get_terminfo_string, bold_escapes): New functions. * pygnulib/GLTestDir.py (GLTestDir.execute): Invoke constants.bold_escapes. * pygnulib/GLImport.py (GLImport.prepare): Likewise.
Collin Funk 89be3fb0 2024-03-29T06:09:20 gnulib-tool.py: Display specified modules in bold. * pygnulib/GLImport.py (GLImport.prepare): Detect terminals starting with 'xterm'. Change hexadecimal numbers to octal, matching gnulib-tool.sh. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
Bruno Haible 628aa8a8 2024-03-28T23:33:56 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.
Collin Funk 148b623a 2024-03-27T00:56:29 gnulib-tool.py: Add type hints to all functions. * pygnulib/*.py: Add type hints and remove duplicate function signatures from docstrings.
Bruno Haible 8c988753 2024-03-25T15:48:19 gnulib-tool.py: Print "executing mkdir ..." messages. * pygnulib/GLTestDir.py (GLTestDir.execute, GLMegaTestDir.execute): Print a message before creating a 'build-aux' directory.
Bruno Haible 50a20932 2024-03-25T00:07:49 gnulib-tool.py: Use Python raw strings for regular expressions. * pygnulib/*.py: Use raw string syntax for regular expression pattern strings and repl strings.
Bruno Haible 99a74afb 2024-03-24T22:46:44 gnulib-tool.py: Bring the output into the right order. * pygnulib/constants.py (force_output): New function. (execute): Flush stdout after printing the "executing ..." line. * pygnulib/GLTestDir.py (GLTestDir.execute, GLMegaTestDir.execute): Invoke force_output. * pygnulib/main.py (test, megatest): Likewise.
Bruno Haible 4bdc4f17 2024-03-24T12:06:50 gnulib-tool.py: Fix output of notices. * pygnulib/GLTestDir.py (GLTestDir.execute): Don't print notices if the verbosity is < -1. Strip newlines from each notice. * pygnulib/GLImport.py (GLImport.prepare): Don't print notices if the verbosity is < -1. Strip only newlines, not spaces.
Bruno Haible 2fd2e464 2024-03-24T03:18:24 gnulib-tool.py: Fix the modules indentation in --create-testdir' output. * pygnulib/GLTestDir.py (GLTestDir.execute): Use specified_modules instead of self.config.getModules(), since the latter may be empty.
Bruno Haible b6f402eb 2024-03-23T19:17:59 gnulib-tool.py: Don't unnecessarily run configure && make in testdirs. * pygnulib/GLTestDir.py (GLTestDir.execute): Correct the value of tests_distributed_built_sources.
Bruno Haible dfc45474 2024-03-23T18:54:19 gnulib-tool.py: Fix autoconf snippets inclusion if --single-configure. * pygnulib/GLTestDir.py (GLTestDir.execute): Correct the arguments passed to autoconfSnippets.
Bruno Haible cf13dc68 2024-03-23T18:10:13 gnulib-tool.py: Produce same diagnostics regardless of Automake version. * pygnulib/GLTestDir.py (_patch_test_driver): Suppress the diagnostics from 'patch', and instead provide our own diagnostics.
Bruno Haible 84966543 2024-03-23T17:53:36 gnulib-tool.py: Print "executing touch config.h.in". * pygnulib/GLTestDir.py (GLTestDir.execute): Print "executing touch config.h.in", like gnulib-tool.sh does.
Collin Funk d55e7f77 2024-03-22T12:57:01 gnulib-tool.py: Don't remove newlines in testdir's Automake snippets. * pygnulib/GLTestDir.py (GLTestDir.execute): Don't strip newlines from Automake snippets.
Collin Funk 53c447b2 2024-03-22T12:19:28 gnulib-tool.py: Fix empty newline output in test directories. * pygnulib/GLTestDir.py (GLTestDir.execute, GLMegaTestDir.execute): Match newlines printed by gnulib-tool.sh.
Bruno Haible d384d69e 2024-03-22T16:10:29 gnulib-tool: Remove test-driver.{orig,rej} if patching succeeded. * gnulib-tool.sh (func_create_testdir, func_create_megatestdir): After a 'patch' command failed, remove the leftover files test-driver.orig and test-driver.rej. * pygnulib/GLTestDir.py (_patch_test_driver): Likewise.
Bruno Haible b1226a18 2024-03-22T16:01:39 gnulib-tool.py: Fix an error in --create-testdir. * pygnulib/GLTestDir.py (GLTestDir.execute): Fix chdir calls at the end.
Bruno Haible 948b591d 2024-03-20T00:27:27 gnulib-tool: Make it work in the test suite. * gnulib-tool.sh (gnulib_dir): Make absolute. (func_create_megatestdir): If .git/refs/heads/master does not exist, use ChangeLog instead. * pygnulib/main.py (main): Make gnulib_dir absolute. * pygnulib/GLTestDir.py (GLMegaTestDir.execute): If .git/refs/heads/master does not exist, use ChangeLog instead.
Collin Funk 0bfce9c5 2024-03-18T16:26:34 gnulib-tool.py: Follow gnulib-tool changes, part 66. Follow gnulib-tool change 2021-12-25 Bruno Haible <bruno@clisp.org> gnulib-tool: Fix handling of module libtextstyle-optional. * pygnulib/GLModuleSystem.py (GLModule.repeatModuleInTests): New function. * pygnulib/GLEmiter.py (GLEmiter.tests_Makefile_am): Use it for creating the tests/Makefile.am. * pygnulib/GLTestDir.py (GLTestDir.execute): Use it when creating the file list.
Bruno Haible 2d1da7b3 2024-03-18T00:43:53 gnulib-tool.py: Handle empty lists of lines consistently. * pygnulib/constants.py (lines_to_multiline): New function. (nlremove): Remove unused function. * pygnulib/GLEmiter.py (_eliminate_NMD): Use lines_to_multiline instead of the '\n'.join idiom. (GLEmiter.autoconfSnippet, GLEmiter.autoconfSnippets, GLEmiter.lib_Makefile_am): Likewise. * pygnulib/GLImport.py (GLImport._update_ignorelist_, GLImport.execute): Likewise. * pygnulib/GLModuleSystem.py (GLModule.getDependenciesRecursively, GLModule.getLinkDirectiveRecursively, GLModuleTable.remove_if_blocks): Likewise. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise. * pygnulib/main.py (main): Likewise.
Collin Funk d64fd23b 2024-03-17T10:03:54 gnulib-tool.py: Follow gnulib-tool changes, part 62. Follow gnulib-tool change 2020-02-22 Bruno Haible <bruno@clisp.org> gnulib-tool: Ensure copied files are writable. * pygnulib/constants.py (ensure_writable): New function. Make sure files are writable. (symlink_relative, hardlink): Use it. * pygnulib/GLFileSystem.py (GLFileSystem.lookup) (GLFileAssistant.add_or_update): Likewise. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise. * pygnulib/main.py (main): Likewise.
Collin Funk 92b4f293 2024-03-16T14:52:21 gnulib-tool.py: Follow gnulib-tool changes, part 59. Follow gnulib-tool change 2017-10-29 Bruno Haible <bruno@clisp.org> gnulib-tool: Avoid unnecessary config.h.in remaking in testdirs. * pygnulib/GLTestDir.py (GLTestDir.execute): Touch the 'config.h.in' file after executing 'autoheader' to update it's timestamps.
Collin Funk cb626876 2024-03-15T19:58:27 gnulib-tool.py: Follow gnulib-tool changes, part 58. Follow gnulib-tool change 2017-05-21 Bruno Haible <bruno@clisp.org> gnulib-tool: Add options to create hard links. * pygnulib/GLConfig.py (GLConfig.__init__): Add 'copymode' and 'lcopymode' to the parameter list. Initialize them. (GLConfig.default): Don't use symbolic or hard links by default. (GLConfig.checkCopyMode, GLConfig.setCopyMode, GLConfig.resetCopyMode): New functions to modify and check the method for copying non --local-dir files. (GLConfig.checkLCopyMode, GLConfig.setLCopyMode) (GLConfig.resetLCopyMode): New functions to modify and check the method for copying --local-dir files. (GLConfig.checkSymbolic, GLConfig.resetSymbolic, GLConfig.setSymbolic) (GLConfig.checkLSymbolic, GLConfig.resetLSymbolic) (GLConfig.setLSymbolic): Remove unused functions. The functionality of these are now implemented in the *CopyMode() and *LCopyMode() variants. * pygnulib/GLFileSystem.py (CopyAction.Hardlink): New Enum value to describe hard links. (GLFileSystem.shouldLink): Check if hard links should be used. (GLFileAssistant.add, GLFileAssistant.update): Try to hard link if enabled. Copy the file if linking fails. (GLFileAssistant.add_or_update): Remove temporary files unconditionally. * pygnulib/GLInfo.py (GLInfo.usage): Document new options in the usage message. * pygnulib/GLTestDir.py (GLTestDir.execute): Try to hard link if enabled. Copy the file if linking fails. * pygnulib/classes.py: Importy the CopyAction Enum. * pygnulib/constants.py (hardlink): New function based on symlink_relative. * pygnulib/main.py (main): Add new options --hardlink and --local-hardlink. Invoke 'git update-index --refresh' to mitigate the effects of the hard links on git.
Collin Funk 270c20cb 2024-03-10T14:07:35 gnulib-tool.py: Follow gnulib-tool changes, part 51. Follow gnulib-tool change 2021-12-15 Bruno Haible <bruno@clisp.org> Accommodate non-recursive Automake in a less hacky way. * pygnulib/GLConfig.py (GLConfig.__init__): Add 'automake_subdir' to the parameter list. (GLConfig.default): Set the default value of automake_subdir to a boolean False. (GLConfig.getAutomakeSubdir, GLConfig.setAutomakeSubdir) (GLConfig.resetAutomakeSubdir): New functions to access and manipulate the automake_subdir option. * pygnulib/GLEmiter.py (GLEmiter.shellvars_init): New function. (GLEmiter.initmacro_end): Add second parameter 'gentests'. Use it to prefix each object file name in *_LIBOBJS and *_LTLIBOBJS. * pygnulib/GLError.py (GLError.__init__, GLError.__repr__): Add new error for if --automake-subdir is used without the 'subdir-objects' Automake option. * pygnulib/GLImport.py (GLImport.__init__): Check for 'subdir-objects' in Makefile.am. (GLImport.actioncmd): Emit --automake-subdir in actioncmd. (GLImport.gnulib_cache): Add gl_AUTOMAKE_SUBDIR to gnulib-cache.m4 if --automake-subdir is used. (GLImport.gnulib_comp): Update calls to GLEmiter.initmacro_end. Call GLEmiter.shellvars_init. (GLImport.execute): Likewise. Use the build-aux/prefix-gnulib-mk script. * pygnulib/GLInfo.py (GLInfo.usage): Add --automake-subdir to the usage message. * pygnulib/GLTestDir.py (GLTestDir.execute): Update calls to GLEmiter.initmacro_end. Call GLEmiter.shellvars_init. * pygnulib/main.py (main): Add support for --automake-subdir.
Collin Funk 45479be7 2024-03-08T22:30:03 gnulib-tool.py: Follow gnulib-tool changes, part 49. Follow gnulib-tool change 2021-08-07 Bruno Haible <bruno@clisp.org> gnulib-tool: Add support for Automake 1.16.4. * pygnulib/GLTestDir.py (_patch_test_driver): If patching build-aux/test-driver fails with build-aux/test-driver.diff try again with build-aux/test-driver-1.16.3.diff.
Collin Funk 49c7d53c 2024-03-08T20:59:16 gnulib-tool.py: Follow gnulib-tool changes, part 48. Follow gnulib-tool change 2019-01-23 Bruno Haible <bruno@clisp.org> gnulib-tool: Support running testdirs on Android. * pygnulib/GLError.py (GLError.__init__, GLError.__repr__): Add errno 20 to print an error if patching build-aux/test-driver fails. * pygnulib/main.py (main): Likewise. * pygnulib/GLTestDir.py (_patch_test_driver): New private function which runs patch on build-aux/test-driver with build-aux/test-driver.diff. (GLTestDir.execute, GLMegaTestDir.execute): Check for build-aux/test-driver in each testdir and patch it after running automake.
Collin Funk a98aceb8 2024-03-07T03:11:55 gnulib-tool.py: Fix errors when executing --create-megatestdir. * pygnulib/GLTestDir.py (GLMegaTestDir.execute): Create a testdir for each module in its own subdirectory. Create a testdir with all modules in 'ALL'. Add missing join call on str object. Don't emit 'configure.ac' into 'Makefile.am'. Make sure commands are executed in the proper directory.
Collin Funk 1a54a8c0 2024-03-05T23:47:08 gnulib-tool.py: Follow gnulib-tool changes, part 43. Follow gnulib-tool change 2021-06-10 Bruno Haible <bruno@clisp.org> Clarify that compiler warnings in the Gnulib tests can be ignored. * pygnulib/GLEmiter.py (GLEmiter.initmacro_start): Add boolean argument to control whether gl_CC_ALLOW_WARNINGS and gl_CXX_ALLOW_WARNINGS should be required. (GLEmiter.tests_Makefile_am): Emit overrides for CFLAGS and CXXFLAGS. Emit a dependency of 'all' on 'all-notice' that prints a warning that compiler warnings can be ignored for tests. * pygnulib/GLImport.py (GLImport.gnulib_comp): Add boolean argument to tell whether a tests Makefile.am is being emitted. Update calls to GLEmiter.initmacro_start. (GLImport.execute): Update calls to GLEmiter.initmacro_start. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
Collin Funk 2ef79f83 2024-03-04T12:35:15 gnulib-tool.py: Follow gnulib-tool changes, part 39. Follow gnulib-tool change 2017-12-28 Bruno Haible <bruno@clisp.org> 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.
Collin Funk 3ff6335c 2024-03-01T23:39:26 gnulib-tool.py: Follow gnulib-tool changes, part 38. Follow gnulib-tool change 2020-12-26 Bruno Haible <bruno@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.
Collin Funk 227b36e4 2024-02-29T18:15:19 gnulib-tool.py: Follow gnulib-tool changes, part 37. Follow gnulib-tool change 2018-10-22 Bruno Haible <bruno@clisp.org> Assume Automake >= 1.11. * pygnulib/GLEmiter.py (GLEmiter.lib_Makefile_am) (GLEmiter.tests_Makefile_am): Emit a Makefile.am that requires Automake >= 1.11. * pygnulib/GLTestDir.py (GLTestDir.execute, GLMegaTestDir.execute): Likewise. * pygnulib/constants.py: Update comment.
Collin Funk 5c6f6acd 2024-02-28T16:35:36 gnulib-tool.py: Follow gnulib-tool changes, part 32. Follow gnulib-tool change 2018-10-22 Bruno Haible <bruno@clisp.org> Fix failure of 'gnulib-tool --create-testdir' with all modules. * pygnulib/GLTestDir.py (GLTestDir.execute): Exclude the 'timevar' module from --create-testdir with all modules. Update comment.
Collin Funk fa13cc7a 2024-02-26T21:46:30 gnulib-tool.py: Follow gnulib-tool changes, part 30. Follow gnulib-tool change 2021-05-30 Bruno Haible <bruno@clisp.org> Write 'LGPLv3+ or GPLv2+' instead of 'LGPLv3+ or GPLv2'. * pygnulib/GLImport.py (GLImport.prepare): Change. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
Collin Funk ac36c297 2024-02-21T21:32:10 gnulib-tool.py: Follow gnulib-tool changes, part 25. Follow gnulib-tool change 2017-06-11 Bruno Haible <bruno@clisp.org> gnulib-tool: Clean up after autotools. * pygnulib/GLTestDir.py (GLTestDir.execute): Remove unnessecary autom4te.cache directory generated by Autotools. (GLMegaTestDir.execute): Likewise.
Collin Funk bf49ad6c 2024-02-21T08:54:51 gnulib-tool.py: Fix undefined variable while emitting testdir. * pygnulib/GLTestDir.py (GLTestDir.execute): Fix undefined variable refrence caused by commit 01cd78f9d682ff75cc5ab1c2d21b911bdd9215b8. Restore the previous auxdir when finished writing the configure.ac file in the test directory.
Simon Josefsson 5b92dd0a 2024-01-01T10:31:48 maint: run 'make update-copyright'
Bruno Haible 5c51e14a 2023-07-27T23:15:09 gnulib-tool: Include ftruncate in testdirs. * gnulib-tool (func_create_testdir): Don't exclude module 'ftruncate' from testdirs by default. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
Paul Eggert 295cc7fb 2023-06-08T14:53:51 Spelling fixes Most of these were reported by Josh Soref <jsoref@gmail.com> in: https://lists.gnu.org/r/bug-gnulib/2023-06/msg00057.html except that some are omitted because the original is OK (e.g., "obsolescent"), and some are omitted because they are upstream files and I've fixed them upstream or have filed bug reports, and I made a few nearby corrections to grammar.
Simon Josefsson 32a72f45 2023-01-01T01:14:21 maint: run 'make update-copyright'
Bruno Haible 01cd78f9 2022-08-13T13:18:06 gnulib-tool.py: Reduce code duplication. * pygnulib/constants.py (relinverse): New function. * pygnulib/GLEmiter.py (GLEmiter.po_Makevars, GLEmiter.tests_Makefile_am): Use it. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
Bruno Haible 62fa8fc7 2022-08-10T00:51:59 gnulib-tool.py: Finish implementing option --conditional-dependencies. * gnulib-tool.py (main) Accept options --conditional-dependencies, --no-conditional-dependencies. * pygnulib/GLModuleSystem.py (GLModuleTable.addConditional): Use str(module), not module, as key. Fix logic bug. (GLModuleTable.getCondition): Simplify. (GLModuleTable.transitive_closure): Show a warning when there are duplicate dependencies. Fix logic bug. (GLModuleTable.transitive_closure_separately): Simplify. (GLModuleTable.add_dummy): Ignore tests modules. Cope with multiple lib_SOURCES augmentation lines. Cope with comments at the end of a lib_SOURCES augmentation line. Add the dummy module at the end of the modules list. * pygnulib/GLTestDir.py (GLTestDir.execute): Remove the code that forces the dummy module to the end of the list. * pygnulib/GLEmiter.py (GLEmiter.autoconfSnippets): Add code to terminate the shell functions. Add code for the dependencies from the unconditional to the conditional modules. Don't emit AM_CONDITIONAL for unconditional modules.
Bruno Haible bc3d94bb 2022-08-09T23:59:40 gnulib-tool.py: Don't do license replacements in the autoconf snippets. * pygnulib/GLEmiter.py (GLEmiter.autoconfSnippet): Remove fileassistant argument. Don't invoke the 'aux' transformer here. Don't produce Windows CR-LFs on Windows. (GLEmiter.autoconfSnippets): Remove fileassistant argument. * pygnulib/GLImport.py (GLImport.gnulib_comp): Update all callers. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
Bruno Haible d528738a 2022-08-07T22:59:08 gnulib-tool.py: Rename a method. * pygnulib/GLModuleSystem.py (GLModule.getAutoconfEarlySnippet): Renamed from GLModule.getAutoconfSnippet_Early. * pygnulib/GLImport.py: Update. * pygnulib/GLTestDir.py: Likewise.
Bruno Haible 6a795cb6 2022-08-07T13:49:49 gnulib-tool.py: Fix some regexes. * pygnulib/GLEmiter.py (GLEmiter.lib_Makefile_am): Use an equivalent regex as gnulib-tool. * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
Bruno Haible 54bf87fe 2022-08-07T13:29:59 gnulib-tool.py: Make regex uses more straightforward. * pygnulib/GLModuleSystem.py: Don't use flag re.S on regular expressions that are meant to match a single line only, and remove the use of the "minimal matching" *? construct whose only purpose was to neutralize the re.S flag. * pygnulib/GLEmiter.py: Likewise. * pygnulib/GLImport.py: Likewise. * pygnulib/GLTestDir.py: Likewise.
Bruno Haible 45b39787 2022-08-05T17:13:20 gnulib-tool.py: Fix 'Unused import' warnings. * gnulib-tool.py: Remove unused imports. * pygnulib/*.py: Likewise.
Bruno Haible eb194fa7 2022-08-05T15:15:16 gnulib-tool.py: Fix 'Undefined variable' errors. * pygnulib/constants.py: Import codecs. * pygnulib/GLConfig.py (GLConfig.setLibName): Fix local variable reference. * pygnulib/GLFileSystem.py (GLFileSystem.lookup, GLFileAssistant.update): Fix local variable references. * pygnulib/GLEmiter.py (GLEmiter.po_POTFILES_in): Fix reference. * pygnulib/GLTestDir.py (GLMegaTestDir.execute): Define missing local variables.
Bruno Haible 276725c4 2022-08-05T04:05:04 gnulib-tool.py: Simplify. * pygnulib/constants.py (compiler): Remove function. * gnulib-tool.py: Use re.compile directly instead. * pygnulib/*.py: Likewise.
Bruno Haible 362f779b 2022-08-04T21:53:51 gnulib-tool.py: Coding style: Revisit line breaks. * gnulib-tool.py: Avoid line breaks at arbitrary points inside expressions. Use line breaks to clarify [... for ...] iterations. * pygnulib/*.py: Likewise.
Bruno Haible 895f7af0 2022-08-04T19:10:27 gnulib-tool.py: Simplify boolean setters. * pygnulib/GLConfig.py (setLibtool): New method, replaces enableLibtool and disableLibtool. (setCondDeps): New method, replaces enableCondDeps and disableCondDeps. (setVCFiles): New method, replaces enableVCFiles and disableVCFiles. (setSymbolic): New method, replaces enableSymbolic and disableSymbolic. (setLSymbolic): New method, replaces enableLSymbolic and disableLSymbolic. (setLibtests): New method, replaces enableLibtests and disableLibtests. (setSingleConfigure): New method, replaces enableSingleConfigure and disableSingleConfigure. (setDryRun): New method, replaces enableDryRun and disableDryRun. (setErrors): New method, replaces enableErrors and disableErrors. (__init__): Update. * pygnulib/GLImport.py: Likewise. * pygnulib/GLTestDir.py: Likewise.
Bruno Haible 2a33db96 2022-08-04T18:26:08 gnulib-tool.py: Use mainstream/GNU coding style. * gnulib-tool.py: Break lines before the % operator, not after. * pygnulib/*.py: Likewise. Avoid line breaks when the resulting lines are not too long.
Bruno Haible 948345cc 2022-08-04T13:02:13 gnulib-tool.py: Follow gnulib-tool changes, part 24. Follow gnulib-tool change 2017-02-19 Bruno Haible <bruno@clisp.org> gnulib-tool: Avoid conflict of havelib-tests with --single-configure. * pygnulib/GLTestDir.py (GLTestDir.__init__): Don't allocate the GLModuleTable here. (GLTestDir.execute): Do it here. Avoid havelib-tests when --with-tests --single-configure is specified.
Bruno Haible aaeb4b01 2022-08-04T12:48:56 gnulib-tool.py: Respect the specified module list. * pygnulib/GLTestDir.py (GLTestDir.execute): Don't remove specific modules (ftruncate, mountlist, etc.) from the specified module list.
Bruno Haible f04b5c3a 2022-08-03T22:42:25 gnulib-tool.py: Implement option --single-configure. * gnulib-tool.py (main): Accept option --single-configure. Pass its value to the GLConfig constructor. * pygnulib/GLTestDir.py (GLTestDir.execute): Remove debugging output.
Bruno Haible de028fc3 2022-08-03T22:29:52 gnulib-tool.py: Implement options --without-c++-tests etc. * gnulib-tool.py (main): Accept options --without-c++-tests, --without-longrunning-tests, --without-privileged-tests, --without-unportable-tests. Improve error message for --copy-file with invalid number of arguments. Check for invalid options given in --import, --add-import, --remove-import, --update modes. Pass both sets of test categories to the GLConfig constructor. * pygnulib/GLConfig.py (GLConfig.__init__): Accept incl_test_categories and excl_test_categories instead of testflags. (checkInclTestCategory): Renamed from checkTestFlag. (enableInclTestCategory): Renamed from enableTestFlag. (disableInclTestCategory): Renamed from disableTestFlag. (getInclTestCategories): Renamed from getTestFlags. (setInclTestCategories): Renamed from setTestFlags. (resetInclTestCategories): Renamed from resetTestFlags. (setInclTestCategory, checkExclTestCategory, enableExclTestCategory, disableExclTestCategory, getExclTestCategories, setExclTestCategories, resetExclTestCategories): New methods. * pygnulib/GLModuleSystem.py (GLModuleTable.__init__): Accept two booleans as second and third constructor arguments. (transitive_closure): Correct the determination of whether to include each module, depending on the with-* and without-* options. (transitive_closure_separately): Update. * pygnulib/GLMakefileTable.py: Update. * pygnulib/GLImport.py (__init__, actioncmd, gnulib_cache, execute): Update. * pygnulib/GLTestDir.py (GLTestDir.__init__, GLTestDir.execute, GLMegaTestDir.__init__): Update.
Bruno Haible e2d15e5c 2022-08-03T16:49:15 gnulib-tool.py: Follow gnulib-tool changes, part 23. Follow gnulib-tool changes 2016-11-11 Bruno Haible <bruno@clisp.org> gnulib-tool: Support for the dual "LGPLv3+ or GPLv2" license. 2016-12-02 Nikos Mavrogiannopoulos <nmav@gnutls.org> gnulib-tool (func_import): Adhere to the license guideline ... 2016-12-02 Daiki Ueno <ueno@gnu.org> gnulib-tool (func_import): Relax the regex ... * gnulib-tool.py: For --lgpl, accept value 3orGPLv2. * pygnulib/GLInfo.py (GLInfo.usage): Update. * pygnulib/GLConfig.py (GLConfig.setLGPL): Update argument check. * pygnulib/GLImport.py (GLImport.__init__, GLImport.gnulib_cache): Update gl_LGPL handling. (GLImport.prepare): Update license compatibility checks and license header rewriting. * pygnulib/GLTestDir.py (GLTestDir.execute): Update license compatibility checks. Handle also the licenses GPLv3+, GPL, LGPLv3+.
Bruno Haible 65301e07 2022-08-03T15:51:35 gnulib-tool.py: Fix unjustified "incompatible license" warnings. * pygnulib/GLTestDir.py (GLTestDir.execute): Don't emit a warning when the dependency module has a license such as "public domain" or "unlimited".
Bruno Haible 10aa0eb7 2022-08-03T14:43:40 gnulib-tool.py: Follow gnulib-tool changes, part 21. Follow gnulib-tool change 2016-10-16 Bruno Haible <bruno@clisp.org> gnulib-tool: Make --create-testdir on all modules work again. * pygnulib/GLTestDir.py (GLTestDir.execute): Don't include the non-recursive-gnulib-prefix-hack module.
Bruno Haible ed7b3d9b 2022-08-03T14:27:51 gnulib-tool.py: Avoid errors when writing to a VFAT file system, part 2. * pygnulib/constants.py (movefile): New function. * pygnulib/*.py: Use it instead of shutil.
Bruno Haible dbc9a4b3 2022-08-03T11:27:21 gnulib-tool.py: Avoid errors when writing to a VFAT file system. * pygnulib/constants.py (copyfile, copyfile2): New functions. * gnulib-tool.py: Use them instead of shutil. * pygnulib/*.py: Likewise.
Bruno Haible f9b39c4e 2022-07-31T23:28:18 gnulib-tool.py: Fix typo. * pygnulib/GLTestDir.py (GLMegaTestDir.execute): Invoke os.mkdir as intended.
Bruno Haible 6bdf668e 2022-07-31T18:39:19 gnulib-tool.py: Follow gnulib-tool changes, part 19. Follow gnulib-tool changes 2015-12-09 Pavel Raiskup <praiskup@redhat.com> gnulib-tool: allow multiple --local-dir usage 2019-02-14 Bruno Haible <bruno@clisp.org> gnulib-tool: Improve handling of multiple --local-dir options. * gnulib-tool (func_reconstruct_cached_dir): When the argument is absolute, return it unmodified. (func_compute_relative_local_gnulib_path): Renamed from func_count_relative_local_gnulib_path. Add comment. * gnulib-tool.py: Accept multiple --local-dir options and collect the values into localpath. * pygnulib/GLConfig.py: Take a localpath argument instead of a localdir argument. (getLocalDir, setLocalDir, resetLocalDir): Remove methods. (getLocalPath, setLocalPath, resetLocalPath): New methods. * pygnulib/GLFileSystem.py (CopyAction): New class. (GLFileSystem.lookup): Consider all dirs in localpath. (GLFileSystem.shouldLink): New method. (GLFileAssistant): Use shouldLink. * pygnulib/GLModuleSystem.py (GLModuleSystem.exists): Iterate over all dirs in localpath. (GLModuleSystem.list): Likewise. * pygnulib/GLEmiter.py: Update. * pygnulib/GLImport.py (GLImport.__init__): Put the argument of gl_LOCAL_DIR into localpath, not localdir. (GLImport.actioncmd): Consider all dirs in localpath. (GLImport.relative_to_destdir, GLImport.relative_to_currdir): New methods. (GLImport.gnulib_cache): Combine all dirs in localpath. Use self.relative_to_destdir. * pygnulib/GLTestDir.py (GLTestDir.execute): Use shouldLink.