Hi,
Recently I got frustrated again about how much time the creation of a
gnulib testdir takes. I found out that
1) There is not much difference between "bash gnulib-tool ..." and
"dash gnulib-tool ...". Although bash is generally slower than other
Bourne-compatible shells, for gnulib-tool is does not matter much.
2) Two thirds of the runtime is spent in the license compatibility checks,
because for each module, we compute func_modules_transitive_closure
and then extract the license of each module in this transitive closure.
So, it's clear that what needs speedup is the string and list processing
of func_verify_module, func_acceptable, func_get_dependencies,
func_get_tests_module, and so on.
This was also confirmed by doing bash profiling.
So, it becomes clear again that a shell script — because it has a relatively
small library of built-ins — is not suitable for massive string and list
processing. In other words, a shell script is useful for connecting programs
together (through files, pipes, sockets), but shell is just *NOT* a decent
_application_ programming language.
I considered splitting the low-level parts (dealing with module description
files and module description fields) to a C part, leaving the upper layer in
shell.
(a) by compiling the C part as a shared library — but that is not future-
proof because the interface between bash extensions and bash is not
documented.
(b) by compiling the C part as a program, run as bash 'coproc'. This is
more solid. gnulib-tool would send strings that look like function
invocations to the C coprocess, and this one would respond with strings
sent back, that gnulib-tool would read into bash variables through
"IFS= read -r -delim ''". Still, the amount of process communication
frightens me.
Then I ran gnulib-tool.py again, found that it is faster than I expected
(maybe Python 3 has a better compiler now than 10 years ago?). Also, Python
is more popular than ever (but that helps us only if we don't have idio-
syncracies in our Python code).
So, I am now restarting the effort to bring gnulib-tool.py up-to-date with
gnulib-tool.
Today's changes:
2022-07-29 Bruno Haible <[email protected]>
gnulib-tool.py: Follow gnulib-tool changes, part 17.
Follow gnulib-tool change
2015-10-06 Pavel Raiskup <[email protected]>
gnulib-tool: fix tests of 'extensions' module
* pygnulib/GLEmiter.py (GLEmiter.preEarlyMacros): New function.
* pygnulib/GLImport.py (GLImport.gnulib_comp): Invoke it.
* pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
gnulib-tool.py: Follow gnulib-tool changes, part 16.
Follow gnulib-tool change
2015-09-25 Pavel Raiskup <[email protected]>
gnulib-common.m4: fix gl_PROG_AR_RANLIB/AM_PROG_AR clash
* pygnulib/GLImport.py (GLImport.gnulib_comp): Put the
gl_USE_SYSTEM_EXTENSIONS right before gl_PROG_AR_RANLIB into
gnulib-comp.m4 (if the 'extensions' module is used).
gnulib-tool.py: Modernize coding style.
* pygnulib/*.py: Remove parentheses around return value expressions.
gnulib-tool.py: Modernize the file headers.
* pygnulib/*.py: Remove '#!/usr/bin/python' (not needed) and
'encoding: UTF-8' lines (default in Python 3). Add copyright notice.
gnulib-tool.py: Use mainstream coding style.
* gnulib-tool.py: Clarify the coding style. Fix some pycodestyle
warnings.
* pygnulib/constants.py: Likewise.
* pygnulib/GLEmiter.py: Likewise.
* pygnulib/GLImport.py: Likewise.
* pygnulib/GLMakefileTable.py: Likewise.
>From f00ef30ee0a68bf91cfd081afc784cb8ffd00656 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Fri, 29 Jul 2022 16:35:28 +0200
Subject: [PATCH 1/5] gnulib-tool.py: Use mainstream coding style.
* gnulib-tool.py: Clarify the coding style. Fix some pycodestyle
warnings.
* pygnulib/constants.py: Likewise.
* pygnulib/GLEmiter.py: Likewise.
* pygnulib/GLImport.py: Likewise.
* pygnulib/GLMakefileTable.py: Likewise.
---
ChangeLog | 10 ++++++++++
gnulib-tool.py | 10 ++++++++--
pygnulib/GLEmiter.py | 6 +++---
pygnulib/GLImport.py | 2 +-
pygnulib/GLMakefileTable.py | 6 +++---
pygnulib/constants.py | 10 ++++++----
6 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 5ebb0f1dc2..20cf23f499 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2022-07-29 Bruno Haible <[email protected]>
+
+ gnulib-tool.py: Use mainstream coding style.
+ * gnulib-tool.py: Clarify the coding style. Fix some pycodestyle
+ warnings.
+ * pygnulib/constants.py: Likewise.
+ * pygnulib/GLEmiter.py: Likewise.
+ * pygnulib/GLImport.py: Likewise.
+ * pygnulib/GLMakefileTable.py: Likewise.
+
2022-07-29 Bruno Haible <[email protected]>
gnulib-tool.py: Fix error (regression 2021-04-11).
diff --git a/gnulib-tool.py b/gnulib-tool.py
index f81501b9c0..860487a934 100755
--- a/gnulib-tool.py
+++ b/gnulib-tool.py
@@ -19,6 +19,13 @@
# This program is meant for authors or maintainers which want to import
# modules from gnulib into their packages.
+# CODING STYLE for this file and its companions:
+# Like PEP 8 <https://peps.python.org/pep-0008/>, except
+# - Line length is not limited to 79 characters.
+# - Line breaking before or after binary operators? Better before, like in GNU.
+# You can use this command to check the style:
+# $ pycodestyle --max-line-length=128 --ignore=E265,W503,E241,E711,E712 gnulib-tool.py pygnulib/*.py
+
#===============================================================================
# Define global imports
@@ -993,8 +1000,7 @@ if __name__ == '__main__':
with codecs.open(tempname, 'wb', 'UTF-8') as file:
file.write(incompatibilities)
sed_table = 's,^\\([^ ]*\\) ,\\1' + ' ' * 51 + ',\n'
- sed_table += 's,^\\(' + '.' * 49 + \
- '[^ ]*\) *,' + ' ' * 17 + '\\1 ,'
+ sed_table += 's,^\\(' + '.' * 49 + '[^ ]*\\) *,' + ' ' * 17 + '\\1 ,'
args = ['sed', '-e', sed_table, tempname]
incompatibilities = sp.check_output(
args).decode(ENCS['default'])
diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py
index 6d523bda3c..3009214c9d 100644
--- a/pygnulib/GLEmiter.py
+++ b/pygnulib/GLEmiter.py
@@ -516,7 +516,7 @@ USE_MSGCTXT = no\n"""
# arguments. The check is performed only when autoconf is run from the
# directory where the configure.ac resides; if it is run from a different
# directory, the check is skipped.
- emit += """\
+ emit += r"""\
m4_ifval(%V1%_LIBSOURCES_LIST, [
m4_syscmd([test ! -d ]m4_defn([%V1%_LIBSOURCES_DIR])[ ||
for gl_file in ]%V1%_LIBSOURCES_LIST[ ; do
@@ -733,8 +733,8 @@ AC_DEFUN([%V1%_LIBSOURCES], [
amsnippet1 += '%s_%s_DEPENDENCIES += @%sALLOCA@\n' % \
(libname, libext, perhapsLT)
amsnippet1 = constants.combine_lines_matching(
- compiler('%s_%s_SOURCES' % (libname, libext)),
- amsnippet1)
+ compiler('%s_%s_SOURCES' % (libname, libext)),
+ amsnippet1)
# Get unconditional snippet, edit it and save to amsnippet2.
amsnippet2 = module.getAutomakeSnippet_Unconditional()
diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py
index 4fa00259e7..3acf94c463 100644
--- a/pygnulib/GLImport.py
+++ b/pygnulib/GLImport.py
@@ -105,7 +105,7 @@ class GLImport(object):
self.config.setAuxDir(self.cache['auxdir'])
# Guess autoconf version.
- pattern = compiler('.*AC_PREREQ\((.*?)\)', re.S | re.M)
+ pattern = compiler(r'.*AC_PREREQ\((.*?)\)', re.S | re.M)
versions = cleaner(pattern.findall(data))
if versions:
version = sorted(set([float(version) for version in versions]))[-1]
diff --git a/pygnulib/GLMakefileTable.py b/pygnulib/GLMakefileTable.py
index 74e6fe7d7d..1e848395d0 100644
--- a/pygnulib/GLMakefileTable.py
+++ b/pygnulib/GLMakefileTable.py
@@ -117,9 +117,9 @@ class GLMakefileTable(object):
mfx = makefile
dir2 = string()
while dir1 and \
- (joinpath(self.config['destdir'], dir1, mfd) or
- joinpath(dir1, mfd) == joinpath(sourcebase, mfx) or
- (inctests and joinpath(dir1, mfd) == joinpath(testsbase, mfx))):
+ (joinpath(self.config['destdir'], dir1, mfd)
+ or joinpath(dir1, mfd) == joinpath(sourcebase, mfx)
+ or (inctests and joinpath(dir1, mfd) == joinpath(testsbase, mfx))):
dir2 = joinpath(os.path.basename(dir1), dir2)
dir1 = os.path.dirname(dir1)
self.editor(dir1, 'EXTRA_DIST', joinpath(dir2, 'gnulib-cache.m4'))
diff --git a/pygnulib/constants.py b/pygnulib/constants.py
index 39fe08f002..7b37a5241c 100644
--- a/pygnulib/constants.py
+++ b/pygnulib/constants.py
@@ -13,6 +13,7 @@ import sys
import platform
import tempfile
import subprocess as sp
+import __main__ as interpreter
#===============================================================================
@@ -68,7 +69,6 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ\
0123456789' # Alphanumeric characters
# Set ENCS dictionary
-import __main__ as interpreter
if not hasattr(interpreter, '__file__'):
if sys.stdout.encoding != None:
ENCS['default'] = sys.stdout.encoding
@@ -443,12 +443,14 @@ def remove_backslash_newline(text):
line to it.'''
return text.replace('\\\n', '')
+
def combine_lines(text):
'''Given a multiline string text, join lines by spaces:
When a line ends in a backslash, remove the backslash and join the next
line to it, inserting a space between them.'''
return text.replace('\\\n', ' ')
+
def combine_lines_matching(pattern, text):
'''Given a multiline string text, join lines by spaces, when the first
such line matches a given RegexObject pattern.
@@ -461,9 +463,9 @@ def combine_lines_matching(pattern, text):
while match:
(startpos, pos) = match.span()
# Look how far the continuation lines extend.
- pos = text.find('\n',pos)
- while pos > 0 and text[pos-1] == '\\':
- pos = text.find('\n',pos+1)
+ pos = text.find('\n', pos)
+ while pos > 0 and text[pos - 1] == '\\':
+ pos = text.find('\n', pos + 1)
if pos < 0:
pos = len(text)
# Perform a combine_lines throughout the continuation lines.
--
2.34.1
>From 3e44e3bb0c1a91faa5b31b257c9f32fb752f8c2d Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Fri, 29 Jul 2022 16:41:28 +0200
Subject: [PATCH 2/5] gnulib-tool.py: Modernize the file headers.
* pygnulib/*.py: Remove '#!/usr/bin/python' (not needed) and
'encoding: UTF-8' lines (default in Python 3). Add copyright notice.
---
ChangeLog | 4 ++++
pygnulib/GLConfig.py | 16 ++++++++++++++--
pygnulib/GLEmiter.py | 16 ++++++++++++++--
pygnulib/GLError.py | 16 ++++++++++++++--
pygnulib/GLFileSystem.py | 16 ++++++++++++++--
pygnulib/GLImport.py | 16 ++++++++++++++--
pygnulib/GLInfo.py | 16 ++++++++++++++--
pygnulib/GLMakefileTable.py | 16 ++++++++++++++--
pygnulib/GLModuleSystem.py | 16 ++++++++++++++--
pygnulib/GLTestDir.py | 16 ++++++++++++++--
pygnulib/__init__.py | 17 ++++++++++++++++-
pygnulib/classes.py | 16 ++++++++++++++--
pygnulib/constants.py | 16 ++++++++++++++--
13 files changed, 174 insertions(+), 23 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 20cf23f499..01c73c251f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2022-07-29 Bruno Haible <[email protected]>
+ gnulib-tool.py: Modernize the file headers.
+ * pygnulib/*.py: Remove '#!/usr/bin/python' (not needed) and
+ 'encoding: UTF-8' lines (default in Python 3). Add copyright notice.
+
gnulib-tool.py: Use mainstream coding style.
* gnulib-tool.py: Clarify the coding style. Fix some pycodestyle
warnings.
diff --git a/pygnulib/GLConfig.py b/pygnulib/GLConfig.py
index fe219a36f6..aea34720de 100644
--- a/pygnulib/GLConfig.py
+++ b/pygnulib/GLConfig.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py
index 3009214c9d..261d94ec88 100644
--- a/pygnulib/GLEmiter.py
+++ b/pygnulib/GLEmiter.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/GLError.py b/pygnulib/GLError.py
index 0727e2f38f..93604999d6 100644
--- a/pygnulib/GLError.py
+++ b/pygnulib/GLError.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/GLFileSystem.py b/pygnulib/GLFileSystem.py
index d5e253f965..1edd6d7776 100644
--- a/pygnulib/GLFileSystem.py
+++ b/pygnulib/GLFileSystem.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py
index 3acf94c463..61f700b8c5 100644
--- a/pygnulib/GLImport.py
+++ b/pygnulib/GLImport.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/GLInfo.py b/pygnulib/GLInfo.py
index 46f1dcc2d8..b3cc59dc07 100644
--- a/pygnulib/GLInfo.py
+++ b/pygnulib/GLInfo.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/GLMakefileTable.py b/pygnulib/GLMakefileTable.py
index 1e848395d0..00050b2723 100644
--- a/pygnulib/GLMakefileTable.py
+++ b/pygnulib/GLMakefileTable.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/GLModuleSystem.py b/pygnulib/GLModuleSystem.py
index 11ff4c7963..01e7188c74 100644
--- a/pygnulib/GLModuleSystem.py
+++ b/pygnulib/GLModuleSystem.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/GLTestDir.py b/pygnulib/GLTestDir.py
index fded6d7656..c0657acc0d 100644
--- a/pygnulib/GLTestDir.py
+++ b/pygnulib/GLTestDir.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
#===============================================================================
# Define global imports
diff --git a/pygnulib/__init__.py b/pygnulib/__init__.py
index 129061be6a..5e916b2e2b 100644
--- a/pygnulib/__init__.py
+++ b/pygnulib/__init__.py
@@ -1,3 +1,18 @@
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
'''Gnulib - The GNU Portability Library
GNU software has a well-deserved reputation for running on many different types
of systems. While our primary goal is to write software for the GNU system, many
@@ -15,6 +30,6 @@ coding standards, the GNU maintainer information, the GPL and other licenses (in
Texinfo), assorted configuration scripts, and more. The goal is to provide all
the common infrastructure needed by GNU packages.'''
-__copyright__ = '2012-2017 Free Software Foundation, Inc.'
+__copyright__ = '2012-2022 Free Software Foundation, Inc.'
__author__ = 'Dmitriy Selyutin'
__license__ = 'GNU GPLv3+'
diff --git a/pygnulib/classes.py b/pygnulib/classes.py
index 9e8a65851a..575e0b08c3 100644
--- a/pygnulib/classes.py
+++ b/pygnulib/classes.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
'''An easy access to pygnulib classes.'''
diff --git a/pygnulib/constants.py b/pygnulib/constants.py
index 7b37a5241c..f36a9e0a7d 100644
--- a/pygnulib/constants.py
+++ b/pygnulib/constants.py
@@ -1,5 +1,17 @@
-#!/usr/bin/python
-# encoding: UTF-8
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
'''An easy access to pygnulib constants.'''
--
2.34.1
>From 0bc144f96608c17963d021468f278a8d0c577894 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Fri, 29 Jul 2022 18:45:33 +0200
Subject: [PATCH 3/5] gnulib-tool.py: Modernize coding style.
* pygnulib/*.py: Remove parentheses around return value expressions.
---
ChangeLog | 3 +
pygnulib/GLConfig.py | 104 ++++++++++++++++----------------
pygnulib/GLEmiter.py | 22 +++----
pygnulib/GLError.py | 2 +-
pygnulib/GLFileSystem.py | 12 ++--
pygnulib/GLImport.py | 14 ++---
pygnulib/GLInfo.py | 16 ++---
pygnulib/GLMakefileTable.py | 4 +-
pygnulib/GLModuleSystem.py | 114 ++++++++++++++++++------------------
pygnulib/GLTestDir.py | 2 +-
pygnulib/constants.py | 18 +++---
11 files changed, 157 insertions(+), 154 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 01c73c251f..01d8df2e13 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2022-07-29 Bruno Haible <[email protected]>
+ gnulib-tool.py: Modernize coding style.
+ * pygnulib/*.py: Remove parentheses around return value expressions.
+
gnulib-tool.py: Modernize the file headers.
* pygnulib/*.py: Remove '#!/usr/bin/python' (not needed) and
'encoding: UTF-8' lines (default in Python 3). Add copyright notice.
diff --git a/pygnulib/GLConfig.py b/pygnulib/GLConfig.py
index aea34720de..d925e7b2b3 100644
--- a/pygnulib/GLConfig.py
+++ b/pygnulib/GLConfig.py
@@ -284,7 +284,7 @@ class GLConfig(object):
# Define special methods.
def __repr__(self):
'''x.__repr__() <==> repr(x)'''
- return('<pygnulib.GLConfig>')
+ return '<pygnulib.GLConfig>'
def __getitem__(self, y):
'''x.__getitem__(y) <==> x[y]'''
@@ -296,18 +296,18 @@ class GLConfig(object):
if self.table['auxdir']:
return self.table['auxdir']
return "build-aux"
- return(self.table[y])
+ return self.table[y]
else: # if y not in self.table
raise(KeyError('GLConfig does not contain key: %s' % repr(y)))
def dictionary(self):
'''Return the configuration as a dict object.'''
- return(dict(self.table))
+ return dict(self.table)
def copy(self):
'''Return the copy of the configuration.'''
table = copy.deepcopy(self)
- return(table)
+ return table
def update(self, dictionary):
'''Specify the dictionary whose keys will be used to update config.'''
@@ -346,28 +346,28 @@ class GLConfig(object):
'''Return default value for the given key.'''
if key in self.table:
if key == 'libname':
- return(string('libgnu'))
+ return string('libgnu')
elif key == 'macro_prefix':
- return(string('gl'))
+ return string('gl')
elif key == 'include_guard_prefix':
- return(string('GL'))
+ return string('GL')
elif key == 'ac_version':
- return(2.59)
+ return 2.59
elif key == 'verbosity':
- return(0)
+ return 0
elif key == 'copyrights':
- return(True)
+ return True
elif key in ['modules', 'avoids', 'tests', 'testflags']:
- return(list())
+ return list()
elif key in ['libtool', 'lgpl', 'conddeps', 'modcache', 'symbolic',
'lsymbolic', 'libtests', 'dryrun']:
- return(False)
+ return False
if key == 'vc_files':
- return(None)
+ return None
elif key == 'errors':
- return(True)
+ return True
else: # otherwise
- return(string())
+ return string()
else: # if key not in self.table
raise(KeyError('GLConfig does not contain key: %s' % repr(key)))
@@ -375,23 +375,23 @@ class GLConfig(object):
'''Check whether the value for the given key is a default value.'''
if key in self.table:
default = self.default(key)
- return(value == default)
+ return value == default
else: # if key not in self.table
raise(KeyError('GLConfig does not contain key: %s' % repr(key)))
def keys(self):
'''Return list of keys.'''
- return(list(self.table.keys()))
+ return list(self.table.keys())
def values(self):
'''Return list of values.'''
- return(list(self.table.values()))
+ return list(self.table.values())
# Define destdir methods.
def getDestDir(self):
'''Return the target directory. For --import, this specifies where your
configure.ac can be found. Defaults to current directory.'''
- return(self.table['destdir'])
+ return self.table['destdir']
def setDestDir(self, destdir):
'''Specify the target directory. For --import, this specifies where your
@@ -414,7 +414,7 @@ class GLConfig(object):
def getLocalDir(self):
'''Return a local override directory where to look up files before looking
in gnulib's directory.'''
- return(self.table['localdir'])
+ return self.table['localdir']
def setLocalDir(self, localdir):
'''Specify a local override directory where to look up files before looking
@@ -461,7 +461,7 @@ class GLConfig(object):
# Define sourcebase methods.
def getSourceBase(self):
'''Return directory relative to destdir where source code is placed.'''
- return(self.table['sourcebase'])
+ return self.table['sourcebase']
def setSourceBase(self, sourcebase):
'''Specify directory relative to destdir where source code is placed.'''
@@ -481,7 +481,7 @@ class GLConfig(object):
# Define m4base methods.
def getM4Base(self):
'''Return directory relative to destdir where *.m4 macros are placed.'''
- return(self.table['m4base'])
+ return self.table['m4base']
def setM4Base(self, m4base):
'''Specify directory relative to destdir where *.m4 macros are placed.'''
@@ -501,7 +501,7 @@ class GLConfig(object):
# Define pobase methods.
def getPoBase(self):
'''Return directory relative to destdir where *.po files are placed.'''
- return(self.table['pobase'])
+ return self.table['pobase']
def setPoBase(self, pobase):
'''Specify directory relative to destdir where *.po files are placed.'''
@@ -522,7 +522,7 @@ class GLConfig(object):
def getDocBase(self):
'''Return directory relative to destdir where doc files are placed.
Default value for this variable is 'doc').'''
- return(self.table['docbase'])
+ return self.table['docbase']
def setDocBase(self, docbase):
'''Specify directory relative to destdir where doc files are placed.
@@ -545,7 +545,7 @@ class GLConfig(object):
def getTestsBase(self):
'''Return directory relative to destdir where unit tests are placed.
Default value for this variable is 'tests').'''
- return(self.table['testsbase'])
+ return self.table['testsbase']
def setTestsBase(self, testsbase):
'''Specify directory relative to destdir where unit tests are placed.
@@ -589,7 +589,7 @@ class GLConfig(object):
def getModules(self):
'''Return the modules list.'''
- return(list(self.table['modules']))
+ return list(self.table['modules'])
def setModules(self, modules):
'''Set the modules list.'''
@@ -639,7 +639,7 @@ class GLConfig(object):
def getAvoids(self):
'''Return the list of the avoided modules.'''
- return(list(self.table['avoids']))
+ return list(self.table['avoids'])
def setAvoids(self, modules):
'''Specify the modules which will be avoided.'''
@@ -688,7 +688,7 @@ class GLConfig(object):
def getFiles(self):
'''Return the list of the fileed files.'''
- return(list(self.table['files']))
+ return list(self.table['files'])
def setFiles(self, files):
'''Specify the list of files.'''
@@ -716,7 +716,7 @@ class GLConfig(object):
def checkTestFlag(self, flag):
'''Return the status of the test flag.'''
if flag in TESTS.values():
- return(flag in self.table['testflags'])
+ return flag in self.table['testflags']
else: # if flag is not in TESTS
raise(TypeError('unknown flag: %s' % repr(flag)))
@@ -738,7 +738,7 @@ class GLConfig(object):
def getTestFlags(self):
'''Return test flags. You can get flags from TESTS variable.'''
- return(list(self.table['testflags']))
+ return list(self.table['testflags'])
def setTestFlags(self, testflags):
'''Specify test flags. You can get flags from TESTS variable.'''
@@ -763,7 +763,7 @@ class GLConfig(object):
# Define libname methods.
def getLibName(self):
'''Return the library name.'''
- return(self.table['libname'])
+ return self.table['libname']
def setLibName(self, libname):
'''Specify the library name.'''
@@ -783,7 +783,7 @@ class GLConfig(object):
# Define libtool methods.
def checkLibtool(self):
'''Check if user enabled libtool rules.'''
- return(self.table['libtool'])
+ return self.table['libtool']
def enableLibtool(self):
'''Enable libtool rules.'''
@@ -800,7 +800,7 @@ class GLConfig(object):
# Define conddeps methods.
def checkCondDeps(self):
'''Check if user enabled cond. dependencies.'''
- return(self.table['conddeps'])
+ return self.table['conddeps']
def enableCondDeps(self):
'''Enable cond. dependencies (may save configure time and object code).'''
@@ -818,7 +818,7 @@ class GLConfig(object):
def getLGPL(self):
'''Check for abort if modules aren't available under the LGPL.
Default value is False, which means that lgpl is disabled.'''
- return(self.table['lgpl'])
+ return self.table['lgpl']
def setLGPL(self, lgpl):
'''Abort if modules aren't available under the LGPL.
@@ -835,17 +835,17 @@ class GLConfig(object):
def getIncludeGuardPrefix(self):
'''Return include_guard_prefix to use inside GLEmiter class.'''
- return(self.table['include_guard_prefix'])
+ return self.table['include_guard_prefix']
def getModuleIndicatorPrefix(self):
'''Return module_indicator_prefix to use inside GLEmiter class.'''
- return(self.getIncludeGuardPrefix())
+ return self.getIncludeGuardPrefix()
# Define macro_prefix methods.
def getMacroPrefix(self):
'''Return the prefix of the macros 'gl_EARLY' and 'gl_INIT'.
Default macro_prefix is 'gl'.'''
- return(self.table['macro_prefix'])
+ return self.table['macro_prefix']
def setMacroPrefix(self, macro_prefix):
'''Specify the prefix of the macros 'gl_EARLY' and 'gl_INIT'.
@@ -879,7 +879,7 @@ class GLConfig(object):
def getMakefile(self):
'''Return the name of makefile in automake syntax in the source-base and
tests-base directories. Default is 'Makefile.am'.'''
- return(self.table['makefile'])
+ return self.table['makefile']
def setMakefile(self, makefile):
'''Specify the name of makefile in automake syntax in the source-base and
@@ -902,7 +902,7 @@ class GLConfig(object):
def getPoDomain(self):
'''Return the prefix of the i18n domain. Usually use the package name.
A suffix '-gnulib' is appended.'''
- return(self.table['podomain'])
+ return self.table['podomain']
def setPoDomain(self, podomain):
'''Specify the prefix of the i18n domain. Usually use the package name.
@@ -925,7 +925,7 @@ class GLConfig(object):
def getWitnessCMacro(self):
'''Return the C macro that is defined when the sources in this directory
are compiled or used.'''
- return(self.table['witness_c_macro'])
+ return self.table['witness_c_macro']
def setWitnessCMacro(self, witness_c_macro):
'''Specify the C macro that is defined when the sources in this directory
@@ -947,7 +947,7 @@ class GLConfig(object):
# Define vc_files methods.
def checkVCFiles(self):
'''Check if update of the version control files is enabled or disabled.'''
- return(self.table['vc_files'])
+ return self.table['vc_files']
def enableVCFiles(self):
'''Enable update of the version control files.'''
@@ -964,7 +964,7 @@ class GLConfig(object):
# Define modcache methods.
def checkModuleCaching(self):
'''Get status of module caching optimization.'''
- return(self.table['modcache'])
+ return self.table['modcache']
def enableModuleCaching(self):
'''Enable module caching optimization.'''
@@ -981,7 +981,7 @@ class GLConfig(object):
# Define configure_ac methods.
def getAutoconfFile(self):
'''Return path of autoconf file relative to destdir.'''
- return(self.table['configure_ac'])
+ return self.table['configure_ac']
def setAutoconfFile(self, configure_ac):
'''Specify path of autoconf file relative to destdir.'''
@@ -1007,7 +1007,7 @@ class GLConfig(object):
# Define ac_version methods.
def getAutoconfVersion(self):
'''Return preferred autoconf version. Default value is 2.59.'''
- return(self.table['ac_version'])
+ return self.table['ac_version']
def setAutoconfVersion(self, ac_version):
'''Specify preferred autoconf version. Default value is 2.59.'''
@@ -1024,11 +1024,11 @@ class GLConfig(object):
# Define symbolic methods.
def checkCopyrights(self):
'''Check if copyright notices in files should be replaced.'''
- return(self.table['copyrights'])
+ return self.table['copyrights']
def checkSymbolic(self):
'''Check if pygnulib will make symbolic links instead of copying files.'''
- return(self.table['symbolic'])
+ return self.table['symbolic']
def enableSymbolic(self):
'''Enable creation of the symbolic links instead of copying files.'''
@@ -1049,7 +1049,7 @@ class GLConfig(object):
def checkLSymbolic(self):
'''Check if pygnulib will make symbolic links instead of copying files, only
for files from the local override directory.'''
- return(self.table['lsymbolic'])
+ return self.table['lsymbolic']
def enableLSymbolic(self):
'''Enable creation of symbolic links instead of copying files, only for
@@ -1069,7 +1069,7 @@ class GLConfig(object):
# Define verbosity methods.
def getVerbosity(self):
'''Get verbosity level.'''
- return(self.table['verbosity'])
+ return self.table['verbosity']
def decreaseVerbosity(self):
'''Decrease verbosity level.'''
@@ -1103,7 +1103,7 @@ class GLConfig(object):
# Define libtests methods.
def checkLibtests(self):
'''Return True if a testsbase/libtests.a is needed.'''
- return(self.table['libtests'])
+ return self.table['libtests']
def enableLibtests(self):
'''If libtests is enabled, then testsbase/libtests.a is needed.'''
@@ -1120,7 +1120,7 @@ class GLConfig(object):
# Define single_configure methods.
def checkSingleConfigure(self):
'''Check whether single configure file should be generated.'''
- return(self.table['single_configure'])
+ return self.table['single_configure']
def enableSingleConfigure(self):
'''Enable generation of the single configure file.'''
@@ -1137,7 +1137,7 @@ class GLConfig(object):
# Define dryrun methods.
def checkDryRun(self):
'''Check whether dryrun is enabled.'''
- return(self.table['dryrun'])
+ return self.table['dryrun']
def enableDryRun(self):
'''Enable dryrun mode.'''
@@ -1154,7 +1154,7 @@ class GLConfig(object):
# Define errors methods.
def checkErrors(self):
'''Check if GLError will be raised in non-critical situations.'''
- return(self.table['errors'])
+ return self.table['errors']
def enableErrors(self):
'''Raise GLError in non-critical situations.'''
diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py
index 261d94ec88..8f20990f16 100644
--- a/pygnulib/GLEmiter.py
+++ b/pygnulib/GLEmiter.py
@@ -82,7 +82,7 @@ class GLEmiter(object):
def __repr__(self):
'''x.__repr__() <==> repr(x)'''
result = '<pygnulib.GLEmiter %s>' % hex(id(self))
- return(result)
+ return result
def copyright_notice(self):
'''GLEmiter.copyright_notice() -> string
@@ -113,7 +113,7 @@ class GLEmiter(object):
# Generated by gnulib-tool.\n"""
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(constants.nlconvert(emit))
+ return constants.nlconvert(emit)
def autoconfSnippet(self, module, fileassistant, toplevel,
disable_libtool, disable_gettext, replace_auxdir, indentation):
@@ -213,7 +213,7 @@ add AM_GNU_GETTEXT([external]) or similar to configure.ac.')
emit = constants.nlconvert(emit)
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(emit)
+ return emit
def autoconfSnippets(self, modules, moduletable, fileassistant,
verifier, toplevel, disable_libtool, disable_gettext, replace_auxdir):
@@ -371,7 +371,7 @@ add AM_GNU_GETTEXT([external]) or similar to configure.ac.')
emit = constants.nlconvert(emit)
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(emit)
+ return emit
def po_Makevars(self):
'''GLEmiter.po_Makevars() -> string
@@ -438,7 +438,7 @@ EXTRA_LOCALE_CATEGORIES =
USE_MSGCTXT = no\n"""
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(constants.nlconvert(emit))
+ return constants.nlconvert(emit)
def po_POTFILES_in(self, files):
'''GLEmiter.po_POTFILES_in(files) -> string
@@ -459,7 +459,7 @@ USE_MSGCTXT = no\n"""
emit += '\n'
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(constants.nlconvert(emit))
+ return constants.nlconvert(emit)
def initmacro_start(self, macro_prefix_arg):
'''GLEmiter.initmacro_start(macro_prefix_arg) -> string
@@ -511,7 +511,7 @@ USE_MSGCTXT = no\n"""
emit = emit.replace('%V1%', macro_prefix_arg)
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(constants.nlconvert(emit))
+ return constants.nlconvert(emit)
def initmacro_end(self, macro_prefix_arg):
'''GLEmiter.initmacro_end(macro_prefix_arg) -> string
@@ -566,7 +566,7 @@ found])])
emit = emit.replace('%V1%', macro_prefix_arg)
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(constants.nlconvert(emit))
+ return constants.nlconvert(emit)
def initmacro_done(self, macro_prefix_arg, sourcebase_arg):
'''GLEmiter.initmacro_done(macro_prefix_arg, sourcebase_arg) -> string
@@ -618,7 +618,7 @@ AC_DEFUN([%V1%_LIBSOURCES], [
emit = emit.replace('%V2%', sourcebase_arg)
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(constants.nlconvert(emit))
+ return constants.nlconvert(emit)
def lib_Makefile_am(self, destfile, modules,
moduletable, makefiletable, actioncmd, for_test):
@@ -910,7 +910,7 @@ AC_DEFUN([%V1%_LIBSOURCES], [
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
result = tuple([emit, uses_subdirs])
- return(result)
+ return result
def tests_Makefile_am(self, destfile, modules, makefiletable,
witness_macro, for_test):
@@ -1199,4 +1199,4 @@ AC_DEFUN([%V1%_LIBSOURCES], [
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
result = tuple([emit, uses_subdirs])
- return(result)
+ return result
diff --git a/pygnulib/GLError.py b/pygnulib/GLError.py
index 93604999d6..66838e56e6 100644
--- a/pygnulib/GLError.py
+++ b/pygnulib/GLError.py
@@ -124,4 +124,4 @@ class GLError(Exception):
else: # if PYTHON3
self.message = ('[Errno %d] %s' %
(self.errno, errors[self.errno - 1]))
- return(self.message)
+ return self.message
diff --git a/pygnulib/GLFileSystem.py b/pygnulib/GLFileSystem.py
index 1edd6d7776..9d8d2b0cf7 100644
--- a/pygnulib/GLFileSystem.py
+++ b/pygnulib/GLFileSystem.py
@@ -78,7 +78,7 @@ class GLFileSystem(object):
def __repr__(self):
'''x.__repr__ <==> repr(x)'''
result = '<pygnulib.GLFileSystem %s>' % hex(id(self))
- return(result)
+ return result
def lookup(self, name):
'''GLFileSystem.lookup(name) -> tuple
@@ -121,7 +121,7 @@ class GLFileSystem(object):
result = (path_gnulib, False)
else: # if path_gnulib does not exist
raise(GLError(1, name))
- return(result)
+ return result
#===============================================================================
@@ -160,7 +160,7 @@ class GLFileAssistant(object):
def __repr__(self):
'''x.__repr__() <==> repr(x)'''
result = '<pygnulib.GLFileAssistant %s>' % hex(id(self))
- return(result)
+ return result
def tmpfilename(self, path):
'''GLFileAssistant.tmpfilename() -> string
@@ -189,7 +189,7 @@ class GLFileAssistant(object):
os.makedirs(dirname)
if type(result) is bytes:
result = bytes.decode(ENCS['default'])
- return(result)
+ return result
def setOriginal(self, original):
'''GLFileAssistant.setOriginal(original)
@@ -231,7 +231,7 @@ class GLFileAssistant(object):
def getFiles(self):
'''Return list of the added files.'''
- return(list(self.added))
+ return list(self.added)
def add(self, lookedup, tmpflag, tmpfile):
'''GLFileAssistant.add(lookedup, tmpflag, tmpfile)
@@ -415,4 +415,4 @@ class GLFileAssistant(object):
else: # if self.config['dryrun']
os.remove(tmpfile)
result = tuple([basename, backupname, result_flag])
- return(result)
+ return result
diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py
index 61f700b8c5..10ad069271 100644
--- a/pygnulib/GLImport.py
+++ b/pygnulib/GLImport.py
@@ -286,7 +286,7 @@ class GLImport(object):
def __repr__(self):
'''x.__repr__ <==> repr(x)'''
result = '<pygnulib.GLImport %s>' % hex(id(self))
- return(result)
+ return result
def rewrite_old_files(self, files):
'''GLImport.rewrite_old_files(files) -> list
@@ -333,7 +333,7 @@ class GLImport(object):
path = file
result += [os.path.normpath(path)]
result = sorted(set(result))
- return(list(result))
+ return list(result)
def rewrite_new_files(self, files):
'''GLImport.rewrite_new_files(files)
@@ -379,7 +379,7 @@ class GLImport(object):
path = file
result += [os.path.normpath(path)]
result = sorted(set(result))
- return(list(result))
+ return list(result)
def actioncmd(self):
'''Return command-line invocation comment.'''
@@ -460,7 +460,7 @@ class GLImport(object):
actioncmd += ' --no-vc-files'
actioncmd += ' ' # Add a space
actioncmd += ' '.join(modules)
- return(actioncmd)
+ return actioncmd
def gnulib_cache(self):
'''GLImport.gnulib_cache() -> string
@@ -547,7 +547,7 @@ gnulib-tool.m4 macro invocations:\n''' % actioncmd
emit += 'gl_VC_FILES([%s])\n' % vc_files
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(constants.nlconvert(emit))
+ return constants.nlconvert(emit)
def gnulib_comp(self, files):
'''GLImport.gnulib_comp(files) -> string
@@ -692,7 +692,7 @@ AC_DEFUN([%s_FILE_LIST], [\n''' % macro_prefix
emit += '])\n'
if type(emit) is bytes:
emit = emit.decode(ENCS['default'])
- return(emit)
+ return emit
def _done_dir_(self, directory, dirs_added, dirs_removed):
'''GLImport._done_dir_(directory, dirs_added, dirs_removed)
@@ -973,7 +973,7 @@ AC_DEFUN([%s_FILE_LIST], [\n''' % macro_prefix
# Return the result.
result = tuple([filetable, transformers])
- return(result)
+ return result
def execute(self, filetable, transformers):
'''Perform operations on the lists of files, which are given in a special
diff --git a/pygnulib/GLInfo.py b/pygnulib/GLInfo.py
index b3cc59dc07..d21e09f43d 100644
--- a/pygnulib/GLInfo.py
+++ b/pygnulib/GLInfo.py
@@ -67,12 +67,12 @@ class GLInfo(object):
def __repr__(self):
'''x.__repr__ <==> repr(x)'''
result = '<pygnulib.GLInfo %s>' % hex(id(self))
- return(result)
+ return result
def package(self):
'''Return formatted string which contains name of the package.'''
result = 'GNU gnulib'
- return(result)
+ return result
def authors(self):
'''Return formatted string which contains authors.
@@ -85,7 +85,7 @@ class GLInfo(object):
result += 'and %s' % item
else:
result += '%s, ' % item
- return(result)
+ return result
def license(self):
'''Return formatted string which contains license and its description.'''
@@ -94,13 +94,13 @@ class GLInfo(object):
result += 'This is free software: you are free'
result += ' to change and redistribute it.\n'
result += 'There is NO WARRANTY, to the extent permitted by law.'
- return(result)
+ return result
def copyright(self):
'''Return formatted string which contains copyright.
The special __copyright__ variable is used (type is str).'''
result = 'Copyright (C) %s' % __copyright__
- return(result)
+ return result
def date(self):
'''Return formatted string which contains date and time in GMT format.'''
@@ -120,7 +120,7 @@ class GLInfo(object):
proc = sp.check_output(args)
result = string(proc, "UTF-8")
result = result.rstrip(os.linesep)
- return(result)
+ return result
def usage(self):
'''Show help message.'''
@@ -299,7 +299,7 @@ Options for --import, --add/remove-import, --update:
-S, --more-symlinks Deprecated; equivalent to --symlink.
Report bugs to <[email protected]>.'''
- return(result)
+ return result
def version(self):
'''Return formatted string which contains git version.'''
@@ -310,4 +310,4 @@ Report bugs to <[email protected]>.'''
result = result.strip()
if result == 'UNKNOWN':
result = string()
- return(result)
+ return result
diff --git a/pygnulib/GLMakefileTable.py b/pygnulib/GLMakefileTable.py
index 00050b2723..cff9ff34f9 100644
--- a/pygnulib/GLMakefileTable.py
+++ b/pygnulib/GLMakefileTable.py
@@ -82,7 +82,7 @@ class GLMakefileTable(object):
raise(TypeError('indices must be integers, not %s' %
type(y).__name__))
result = self.table[y]
- return(dict(result))
+ return dict(result)
def editor(self, dir, var, val):
'''GLMakefileTable.editor(dir, var, val)
@@ -140,4 +140,4 @@ class GLMakefileTable(object):
'''GLMakefileTable.count() -> int
Count number of edits which were applied.'''
- return(len(self.table))
+ return len(self.table)
diff --git a/pygnulib/GLModuleSystem.py b/pygnulib/GLModuleSystem.py
index 01e7188c74..d599755ee9 100644
--- a/pygnulib/GLModuleSystem.py
+++ b/pygnulib/GLModuleSystem.py
@@ -82,7 +82,7 @@ class GLModuleSystem(object):
def __repr__(self):
'''x.__repr__ <==> repr(x)'''
result = '<pygnulib.GLModuleSystem %s>' % hex(id(self))
- return(result)
+ return result
def exists(self, module):
'''GLModuleSystem.exists(module) -> bool
@@ -107,7 +107,7 @@ class GLModuleSystem(object):
]): # Close all(iterable) function
if module not in badnames:
result = True
- return(result)
+ return result
def find(self, module):
'''GLModuleSystem.find(module) -> GLModule
@@ -122,7 +122,7 @@ class GLModuleSystem(object):
if self.exists(module):
path, istemp = self.filesystem.lookup(joinpath('modules', module))
result = GLModule(self.config, path, istemp)
- return(result)
+ return result
else: # if not self.exists(module)
if self.config['errors']:
raise(GLError(3, module))
@@ -184,7 +184,7 @@ class GLModuleSystem(object):
os.remove(path)
listing = [line for line in result.split('\n') if line.strip()]
listing = sorted(set(listing))
- return(listing)
+ return listing
#===============================================================================
@@ -233,7 +233,7 @@ Include:|Link:|License:|Maintainer:)'
if type(module) is GLModule:
if self.module == module.module:
result = True
- return(result)
+ return result
def __ne__(self, module):
'''x.__ne__(y) <==> x!=y'''
@@ -241,7 +241,7 @@ Include:|Link:|License:|Maintainer:)'
if type(module) is GLModule:
if self.module != module.module:
result = True
- return(result)
+ return result
def __ge__(self, module):
'''x.__ge__(y) <==> x>=y'''
@@ -249,7 +249,7 @@ Include:|Link:|License:|Maintainer:)'
if type(module) is GLModule:
if self.module >= module.module:
result = True
- return(result)
+ return result
def __gt__(self, module):
'''x.__gt__(y) <==> x>y'''
@@ -257,14 +257,14 @@ Include:|Link:|License:|Maintainer:)'
if type(module) is GLModule:
if self.module > module.module:
result = True
- return(result)
+ return result
def __hash__(self):
'''x.__hash__() <==> hash(x)'''
module = hash(self.module)
patched = hash(self.patched)
result = module ^ patched
- return(result)
+ return result
def __le__(self, module):
'''x.__le__(y) <==> x<=y'''
@@ -272,7 +272,7 @@ Include:|Link:|License:|Maintainer:)'
if type(module) is GLModule:
if self.module <= module.module:
result = True
- return(result)
+ return result
def __lt__(self, module):
'''x.__lt__(y) <==> x<y'''
@@ -280,18 +280,18 @@ Include:|Link:|License:|Maintainer:)'
if type(module) is GLModule:
if self.module < module.module:
result = True
- return(result)
+ return result
def __str__(self):
'''x.__str__() <==> str(x)'''
result = self.getName()
- return(result)
+ return result
def __repr__(self):
'''x.__repr__ <==> repr(x)'''
result = '<pygnulib.GLModule %s %s>' % \
(repr(self.getName()), hex(id(self)))
- return(result)
+ return result
def getName(self):
'''GLModule.getName() -> string
@@ -299,39 +299,39 @@ Include:|Link:|License:|Maintainer:)'
Return the name of the module.'''
pattern = compiler(joinpath('modules', '(.*?)$'))
result = pattern.findall(self.module)[0]
- return(result)
+ return result
def isPatched(self):
'''GLModule.isPatched() -> bool
Check whether module was created after applying patch.'''
- return(self.patched)
+ return self.patched
def isTests(self):
'''GLModule.isTests() -> bool
Check whether module is a -tests version of module.'''
result = self.getName().endswith('-tests')
- return(result)
+ return result
def isNonTests(self):
'''GLModule.isTests() -> bool
Check whether module is not a -tests version of module.'''
result = not(self.isTests())
- return(result)
+ return result
def getTestsName(self):
'''Return -tests version of the module name.'''
result = self.getName()
if not result.endswith('-tests'):
result += '-tests'
- return(result)
+ return result
def getTestsModule(self):
'''Return -tests version of the module as GLModule.'''
result = self.modulesystem.find(self.getTestsName())
- return(result)
+ return result
def getShellFunc(self):
'''GLModule.getShellFunc() -> string
@@ -354,7 +354,7 @@ Include:|Link:|License:|Maintainer:)'
result = 'func_%s_gnulib_m4code_%s' % (macro_prefix, module)
if type(result) is bytes:
result = result.decode(ENCS['default'])
- return(result)
+ return result
def getShellVar(self):
'''GLModule.getShellVar() -> string
@@ -377,7 +377,7 @@ Include:|Link:|License:|Maintainer:)'
result = '%s_gnulib_enabled_%s' % (macro_prefix, module)
if type(result) is bytes:
result = result.decode(ENCS['default'])
- return(result)
+ return result
def getConditionalName(self):
'''GLModule.getConditionalName() -> string
@@ -398,7 +398,7 @@ Include:|Link:|License:|Maintainer:)'
result = '%s_GNULIB_ENABLED_%s' % (macro_prefix, name)
if type(result) is bytes:
result = result.decode(ENCS['default'])
- return(result)
+ return result
def getDescription(self):
'''GLModule.getDescription() -> string
@@ -419,7 +419,7 @@ Include:|Link:|License:|Maintainer:)'
result = result[-1]
result = result.strip()
self.cache['description'] = result
- return(self.cache['description'])
+ return self.cache['description']
def getComment(self):
'''GLModule.getComment() -> string
@@ -440,7 +440,7 @@ Include:|Link:|License:|Maintainer:)'
result = result[-1]
result = result.strip()
self.cache['comment'] = result
- return(self.cache['comment'])
+ return self.cache['comment']
def getStatus(self):
'''GLModule.getStatus() -> string
@@ -466,7 +466,7 @@ Include:|Link:|License:|Maintainer:)'
parts += [line]
result = [part.strip() for part in parts if part.strip()]
self.cache['status'] = list(result)
- return(list(self.cache['status']))
+ return list(self.cache['status'])
def getNotice(self):
'''GLModule.getNotice() -> string
@@ -492,7 +492,7 @@ Include:|Link:|License:|Maintainer:)'
parts += [line]
result = ''.join(parts)
self.cache['notice'] = result
- return(self.cache['notice'])
+ return self.cache['notice']
def getApplicability(self):
'''GLModule.getApplicability() -> string
@@ -527,7 +527,7 @@ Include:|Link:|License:|Maintainer:)'
result = result.decode(ENCS['default'])
result = result.strip()
self.cache['applicability'] = result
- return(self.cache['applicability'])
+ return self.cache['applicability']
def getFiles(self):
'''GLModule.getFiles() -> list
@@ -559,7 +559,7 @@ Include:|Link:|License:|Maintainer:)'
result += [joinpath('m4', 'zzgnulib.m4')]
result += [joinpath('m4', 'gnulib-common.m4')]
self.cache['files'] = list(result)
- return(list(self.cache['files']))
+ return list(self.cache['files'])
def getDependencies(self):
'''GLModule.getDependencies() -> list
@@ -603,7 +603,7 @@ Include:|Link:|License:|Maintainer:)'
condition = condition.decode(ENCS['default'])
result += [tuple([self.modulesystem.find(module), condition])]
self.cache['dependencies'] = result
- return(list(self.cache['dependencies']))
+ return list(self.cache['dependencies'])
def getAutoconfSnippet_Early(self):
'''GLModule.getAutoconfSnippet_Early() -> string
@@ -629,7 +629,7 @@ Include:|Link:|License:|Maintainer:)'
parts += [line]
result = ''.join(parts)
self.cache['autoconf-early'] = result
- return(self.cache['autoconf-early'])
+ return self.cache['autoconf-early']
def getAutoconfSnippet(self):
'''GLModule.getAutoconfSnippet() -> string
@@ -655,7 +655,7 @@ Include:|Link:|License:|Maintainer:)'
parts += [line]
result = ''.join(parts)
self.cache['autoconf'] = result
- return(self.cache['autoconf'])
+ return self.cache['autoconf']
def getAutomakeSnippet(self):
'''getAutomakeSnippet() -> string
@@ -669,7 +669,7 @@ Include:|Link:|License:|Maintainer:)'
else: # if not conditional.strip()
result += '\n'
result += self.getAutomakeSnippet_Unconditional()
- return(result)
+ return result
def getAutomakeSnippet_Conditional(self):
'''GLModule.getAutomakeSnippet_Conditional() -> string
@@ -695,7 +695,7 @@ Include:|Link:|License:|Maintainer:)'
parts += [line]
result = ''.join(parts)
self.cache['makefile-conditional'] = result
- return(self.cache['makefile-conditional'])
+ return self.cache['makefile-conditional']
def getAutomakeSnippet_Unconditional(self):
'''GLModule.getAutomakeSnippet_Unconditional() -> string
@@ -767,7 +767,7 @@ Include:|Link:|License:|Maintainer:)'
result += '\n\n'
result = constants.nlconvert(result)
self.cache['makefile-unconditional'] = result
- return(self.cache['makefile-unconditional'])
+ return self.cache['makefile-unconditional']
def getInclude(self):
'''GLModule.getInclude() -> string
@@ -796,7 +796,7 @@ Include:|Link:|License:|Maintainer:)'
pattern = compiler('^(["<].*?[>"])', re.S | re.M)
result = pattern.sub('#include \\1', result)
self.cache['include'] = result
- return(self.cache['include'])
+ return self.cache['include']
def getLink(self):
'''GLModule.getLink() -> string
@@ -821,7 +821,7 @@ Include:|Link:|License:|Maintainer:)'
parts = [part.strip() for part in parts if part.strip()]
# result = ' '.join(parts)
self.cache['link'] = parts
- return(self.cache['link'])
+ return self.cache['link']
def getLicense(self):
'''GLModule.getLicense(self) -> string
@@ -837,7 +837,7 @@ Include:|Link:|License:|Maintainer:)'
sys.stderr.write('module %s lacks a license\n' % str(self))
if not license:
license = 'GPL'
- return(license)
+ return license
def getLicense_Raw(self):
'''GLModule.getLicense_Raw() -> string
@@ -858,7 +858,7 @@ Include:|Link:|License:|Maintainer:)'
result = result[-1]
result = result.strip()
self.cache['license'] = result
- return(self.cache['license'])
+ return self.cache['license']
def getMaintainer(self):
'''GLModule.getMaintainer() -> string
@@ -885,7 +885,7 @@ Include:|Link:|License:|Maintainer:)'
result = ''.join(parts)
result = result.strip()
self.cache['maintainer'] = result
- return(self.cache['maintainer'])
+ return self.cache['maintainer']
#===============================================================================
@@ -927,21 +927,21 @@ class GLModuleTable(object):
def __repr__(self):
'''x.__repr__() <==> repr(x)'''
result = '<pygnulib.GLModuleTable %s>' % hex(id(self))
- return(result)
+ return result
def __getitem__(self, y):
'''x.__getitem__(y) <==> x[y]'''
if y in ['base', 'final', 'main', 'tests', 'avoids']:
if y == 'base':
- return(self.getBaseModules())
+ return self.getBaseModules()
elif y == 'final':
- return(self.getFinalModules())
+ return self.getFinalModules()
elif y == 'main':
- return(self.getMainModules())
+ return self.getMainModules()
elif y == 'tests':
- return(self.getTestsModules())
+ return self.getTestsModules()
else: # if y == 'avoids'
- return(self.getAvoids())
+ return self.getAvoids()
else: # if y is not in list
raise(KeyError('GLModuleTable does not contain key: %s' % repr(y)))
@@ -988,7 +988,7 @@ class GLModuleTable(object):
raise(TypeError('module must be a GLModule, not %s' %
type(module).__name__))
result = str(module) in self.dependers
- return(result)
+ return result
def getCondition(self, parent, module):
'''GLModuleTable.getCondition(module) -> string or True
@@ -1005,7 +1005,7 @@ class GLModuleTable(object):
result = None
if key in self.conditionals:
result = self.conditionals[key]
- return(result)
+ return result
def transitive_closure(self, modules):
'''GLModuleTable.transitive_closure(modules) -> list
@@ -1101,7 +1101,7 @@ class GLModuleTable(object):
inmodules = sorted(set(inmodules))
modules = sorted(set(outmodules))
self.modules = modules
- return(list(modules))
+ return list(modules)
def transitive_closure_separately(self, basemodules, finalmodules):
'''GLModuleTable.transitive_closure_separately(*args, **kwargs) -> tuple
@@ -1143,7 +1143,7 @@ class GLModuleTable(object):
set(self.config['testflags'] + [TESTS['tests']]))
self.config.setTestFlags(testflags)
result = tuple([main_modules, tests_modules])
- return(result)
+ return result
def add_dummy(self, modules):
'''GLModuleTable.add_dummy(modules) -> list
@@ -1171,7 +1171,7 @@ class GLModuleTable(object):
if not have_lib_sources:
dummy = self.modulesystem.find('dummy')
modules = sorted(set(modules + [dummy]))
- return(list(modules))
+ return list(modules)
def filelist(self, modules):
'''GLModuleTable.filelist(modules) -> list
@@ -1189,7 +1189,7 @@ class GLModuleTable(object):
for file in listing:
if file not in filelist:
filelist += [file]
- return(filelist)
+ return filelist
def filelist_separately(self, main_modules, tests_modules):
'''GLModuleTable.filelist_separately(**kwargs) -> list
@@ -1208,13 +1208,13 @@ class GLModuleTable(object):
for file in tests_filelist
] # Finish to sort filelist
result = tuple([main_filelist, tests_filelist])
- return(result)
+ return result
def getAvoids(self):
'''GLModuleTable.getAvoids() -> list
Return list of avoids.'''
- return(list(self.avoids))
+ return list(self.avoids)
def setAvoids(self, modules):
'''GLModuleTable.setAvoids(modules)
@@ -1229,7 +1229,7 @@ class GLModuleTable(object):
'''GLModuleTable.getBaseModules() -> list
Return list of base modules.'''
- return(list(self.base_modules))
+ return list(self.base_modules)
def setBaseModules(self, modules):
'''GLModuleTable.setBaseModules(modules)
@@ -1244,7 +1244,7 @@ class GLModuleTable(object):
'''GLModuleTable.getFinalModules() -> list
Return list of final modules.'''
- return(list(self.final_modules))
+ return list(self.final_modules)
def setFinalModules(self, modules):
'''GLModuleTable.setFinalModules(modules)
@@ -1259,7 +1259,7 @@ class GLModuleTable(object):
'''GLModuleTable.getMainModules() -> list
Return list of main modules.'''
- return(list(self.main_modules))
+ return list(self.main_modules)
def setMainModules(self, modules):
'''GLModuleTable.setMainModules(modules)
@@ -1274,7 +1274,7 @@ class GLModuleTable(object):
'''GLModuleTable.getTestsModules() -> list
Return list of tests modules.'''
- return(list(self.tests_modules))
+ return list(self.tests_modules)
def setTestsModules(self, modules):
'''GLModuleTable.setTestsModules(modules)
diff --git a/pygnulib/GLTestDir.py b/pygnulib/GLTestDir.py
index c0657acc0d..6433a0d78c 100644
--- a/pygnulib/GLTestDir.py
+++ b/pygnulib/GLTestDir.py
@@ -152,7 +152,7 @@ class GLTestDir(object):
path = file
result += [os.path.normpath(path)]
result = sorted(set(result))
- return(list(result))
+ return list(result)
def execute(self):
'''GLTestDir.execute()
diff --git a/pygnulib/constants.py b/pygnulib/constants.py
index f36a9e0a7d..235f5d8891 100644
--- a/pygnulib/constants.py
+++ b/pygnulib/constants.py
@@ -269,7 +269,7 @@ def compiler(pattern, flags=0):
pattern = re.compile(pattern, re.UNICODE | flags)
else: # if PYTHON3
pattern = re.compile(pattern, flags)
- return(pattern)
+ return pattern
def cleaner(sequence):
@@ -285,7 +285,7 @@ def cleaner(sequence):
sequence = [False if value == 'false' else value for value in sequence]
sequence = [True if value == 'true' else value for value in sequence]
sequence = [value.strip() for value in sequence]
- return(sequence)
+ return sequence
def joinpath(head, *tail):
@@ -304,7 +304,7 @@ def joinpath(head, *tail):
result = os.path.normpath(os.path.join(head, *tail))
if type(result) is bytes:
result = result.decode(ENCS['default'])
- return(result)
+ return result
def relativize(dir1, dir2):
@@ -338,7 +338,7 @@ def relativize(dir1, dir2):
dir0 = joinpath(dir0, first)
dir1 = dir1[dir1.find(os.path.sep) + 1:]
result = os.path.normpath(dir2)
- return(result)
+ return result
def link_relative(src, dest):
@@ -405,7 +405,7 @@ def filter_filelist(separator, filelist,
(added_prefix, added_suffix), filename)
listing += [result]
result = separator.join(listing)
- return(result)
+ return result
def substart(orig, repl, data):
@@ -416,7 +416,7 @@ def substart(orig, repl, data):
result = data
if data.startswith(orig):
result = repl + data[len(orig):]
- return(result)
+ return result
def subend(orig, repl, data):
@@ -427,7 +427,7 @@ def subend(orig, repl, data):
result = data
if data.endswith(orig):
result = data[:-len(orig)] + repl
- return(result)
+ return result
def nlconvert(text):
@@ -436,7 +436,7 @@ def nlconvert(text):
text = text.replace('\r\n', '\n')
if system == 'windows':
text = text.replace('\n', '\r\n')
- return(text)
+ return text
def nlremove(text):
@@ -446,7 +446,7 @@ def nlremove(text):
lines = [line for line in text.split('\n') if line != '']
text = '\n'.join(lines)
text = nlconvert(text)
- return(text)
+ return text
def remove_backslash_newline(text):
--
2.34.1
>From 4bccc91c6bd9d73d3473d909023995e59119152e Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Fri, 29 Jul 2022 22:58:27 +0200
Subject: [PATCH 4/5] gnulib-tool.py: Follow gnulib-tool changes, part 16.
Follow gnulib-tool change
2015-09-25 Pavel Raiskup <[email protected]>
gnulib-common.m4: fix gl_PROG_AR_RANLIB/AM_PROG_AR clash
* pygnulib/GLImport.py (GLImport.gnulib_comp): Put the
gl_USE_SYSTEM_EXTENSIONS right before gl_PROG_AR_RANLIB into
gnulib-comp.m4 (if the 'extensions' module is used).
---
ChangeLog | 8 ++++++++
gnulib-tool.py.TODO | 28 ----------------------------
pygnulib/GLImport.py | 6 ++++--
3 files changed, 12 insertions(+), 30 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 01d8df2e13..1ddf2822ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2022-07-29 Bruno Haible <[email protected]>
+ gnulib-tool.py: Follow gnulib-tool changes, part 16.
+ Follow gnulib-tool change
+ 2015-09-25 Pavel Raiskup <[email protected]>
+ gnulib-common.m4: fix gl_PROG_AR_RANLIB/AM_PROG_AR clash
+ * pygnulib/GLImport.py (GLImport.gnulib_comp): Put the
+ gl_USE_SYSTEM_EXTENSIONS right before gl_PROG_AR_RANLIB into
+ gnulib-comp.m4 (if the 'extensions' module is used).
+
gnulib-tool.py: Modernize coding style.
* pygnulib/*.py: Remove parentheses around return value expressions.
diff --git a/gnulib-tool.py.TODO b/gnulib-tool.py.TODO
index 7017d15a05..bcb811b5df 100644
--- a/gnulib-tool.py.TODO
+++ b/gnulib-tool.py.TODO
@@ -1134,34 +1134,6 @@ Date: Tue Oct 6 13:20:05 2015 +0200
(func_import, func_create_testdir): All dumps of gl_PROG_AR_RANLIB
replaced with func_emit_pre_early_macros call.
-commit f8fe25fab60e3c687a12446984bb475342956bb8
-Author: Pavel Raiskup <[email protected]>
-Date: Fri Sep 25 11:25:03 2015 -0700
-
- gnulib-common.m4: fix gl_PROG_AR_RANLIB/AM_PROG_AR clash
-
- The gl_PROG_AR_RANLIB (it is always called by gl_EARLY) sets AR
- and ARFLAGS variables. Doing this unconditionally could break
- later Automake's AM_PROG_AR invocation (at least it's
- AC_CHECK_TOOLS call to detect correct 'ar' binary).
-
- Original purpose of the gl_PROG_AR_RANLIB was only to handle the
- Amsterdam Compiler Kit, so make the previous code to have effects
- only on ACK, and rather automatically call the Automake's
- AM_PROG_AR as soon as possible to decide other cases.
-
- References:
- http://lists.gnu.org/archive/html/bug-gnulib/2015-07/msg00001.html
-
- * m4/gnulib-common.m4 (gl_PROG_AR_RANLIB): AC_BEFORE AM_PROG_AR.
- Set the AR/ARFLAGS to ACK defaults OR call AM_PROG_AR. If neither
- is possible, keep setting AR/ARFLAGS to reasonable defaults.
- * gnulib-tool (func_import): Put the gl_USE_SYSTEM_EXTENSIONS
- right before gl_PROG_AR_RANLIB into gnulib-comp.m4 (if the
- 'extensions' module is used.
- * modules/extensions (configure.ac-early): Remove as this snippet
- is added to gnulib-comp.m4 earlier anyway.
-
commit 9bdf6c8a0cdeb13c12e4b65dee9538c5468dbe1d
Author: Bruno Haible <[email protected]>
Date: Sun Aug 19 14:06:50 2012 +0200
diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py
index 10ad069271..c51b5036df 100644
--- a/pygnulib/GLImport.py
+++ b/pygnulib/GLImport.py
@@ -598,8 +598,10 @@ AC_DEFUN([%s_EARLY],
m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
m4_pattern_allow([^gl_ES$])dnl a valid locale name
m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
- m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
- AC_REQUIRE([gl_PROG_AR_RANLIB])\n''' % (configure_ac, macro_prefix)
+ m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable\n''' % (configure_ac, macro_prefix)
+ if any(str(module) == 'extensions' for module in moduletable['final']):
+ emit += ' AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])\n'
+ emit += ' AC_REQUIRE([gl_PROG_AR_RANLIB])\n'
uses_subdirs = False
for module in moduletable['main']:
# Test whether there are some source files in subdirectories.
--
2.34.1
>From 1b4313a18a42c6796b3064e82d45e41c51fcfa7a Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Fri, 29 Jul 2022 23:29:23 +0200
Subject: [PATCH 5/5] gnulib-tool.py: Follow gnulib-tool changes, part 17.
Follow gnulib-tool change
2015-10-06 Pavel Raiskup <[email protected]>
gnulib-tool: fix tests of 'extensions' module
* pygnulib/GLEmiter.py (GLEmiter.preEarlyMacros): New function.
* pygnulib/GLImport.py (GLImport.gnulib_comp): Invoke it.
* pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
---
ChangeLog | 8 ++++++++
gnulib-tool.py.TODO | 13 -------------
pygnulib/GLEmiter.py | 25 +++++++++++++++++++++++++
pygnulib/GLImport.py | 4 +---
pygnulib/GLTestDir.py | 6 +++---
5 files changed, 37 insertions(+), 19 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 1ddf2822ad..16119afe29 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2022-07-29 Bruno Haible <[email protected]>
+ gnulib-tool.py: Follow gnulib-tool changes, part 17.
+ Follow gnulib-tool change
+ 2015-10-06 Pavel Raiskup <[email protected]>
+ gnulib-tool: fix tests of 'extensions' module
+ * pygnulib/GLEmiter.py (GLEmiter.preEarlyMacros): New function.
+ * pygnulib/GLImport.py (GLImport.gnulib_comp): Invoke it.
+ * pygnulib/GLTestDir.py (GLTestDir.execute): Likewise.
+
gnulib-tool.py: Follow gnulib-tool changes, part 16.
Follow gnulib-tool change
2015-09-25 Pavel Raiskup <[email protected]>
diff --git a/gnulib-tool.py.TODO b/gnulib-tool.py.TODO
index bcb811b5df..8f535f6897 100644
--- a/gnulib-tool.py.TODO
+++ b/gnulib-tool.py.TODO
@@ -1121,19 +1121,6 @@ Date: Sat Nov 21 14:09:15 2015 +0100
--------------------------------------------------------------------------------
-commit 63ce1a2103dd4452f7bd5bc873a982e03ed52427
-Author: Pavel Raiskup <[email protected]>
-Date: Tue Oct 6 13:20:05 2015 +0200
-
- gnulib-tool: fix tests of 'extensions' module
-
- This complements f8fe25fab60e3c687a124 commit.
-
- * gnulib-tool (func_emit_pre_early_macros): New function, it wraps
- emitting of initial gl_EARLY macros.
- (func_import, func_create_testdir): All dumps of gl_PROG_AR_RANLIB
- replaced with func_emit_pre_early_macros call.
-
commit 9bdf6c8a0cdeb13c12e4b65dee9538c5468dbe1d
Author: Bruno Haible <[email protected]>
Date: Sun Aug 19 14:06:50 2012 +0200
diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py
index 8f20990f16..0d57b6177b 100644
--- a/pygnulib/GLEmiter.py
+++ b/pygnulib/GLEmiter.py
@@ -373,6 +373,31 @@ add AM_GNU_GETTEXT([external]) or similar to configure.ac.')
emit = emit.decode(ENCS['default'])
return emit
+ def preEarlyMacros(self, require, indentation, modules):
+ '''GLEmiter.preEarlyMacros(require, indentation, modules) -> string
+
+ Collect and emit the pre-early section.
+
+ require parameter can be True (AC_REQUIRE) or False (direct call).
+ indentation parameter is a string.
+ modules argument represents list of modules; every module in this list must
+ be a GLModule instance.'''
+ emit = string()
+ emit += '\n' + indentation + '# Pre-early section.\n'
+ # We need to call gl_USE_SYSTEM_EXTENSIONS before gl_PROG_AR_RANLIB.
+ # Doing AC_REQUIRE in configure-ac.early is not early enough.
+ if any(str(module) == 'extensions' for module in modules):
+ if require:
+ emit += indentation + 'AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])\n'
+ else:
+ emit += indentation + 'gl_USE_SYSTEM_EXTENSIONS\n'
+ if require:
+ emit += indentation + 'AC_REQUIRE([gl_PROG_AR_RANLIB])\n'
+ else:
+ emit += indentation + 'gl_PROG_AR_RANLIB\n'
+ emit += '\n'
+ return emit
+
def po_Makevars(self):
'''GLEmiter.po_Makevars() -> string
diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py
index c51b5036df..06c122e780 100644
--- a/pygnulib/GLImport.py
+++ b/pygnulib/GLImport.py
@@ -599,9 +599,7 @@ AC_DEFUN([%s_EARLY],
m4_pattern_allow([^gl_ES$])dnl a valid locale name
m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable\n''' % (configure_ac, macro_prefix)
- if any(str(module) == 'extensions' for module in moduletable['final']):
- emit += ' AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])\n'
- emit += ' AC_REQUIRE([gl_PROG_AR_RANLIB])\n'
+ emit += self.emiter.preEarlyMacros(True, ' ', moduletable['final'])
uses_subdirs = False
for module in moduletable['main']:
# Test whether there are some source files in subdirectories.
diff --git a/pygnulib/GLTestDir.py b/pygnulib/GLTestDir.py
index 6433a0d78c..0a403c993f 100644
--- a/pygnulib/GLTestDir.py
+++ b/pygnulib/GLTestDir.py
@@ -441,7 +441,7 @@ class GLTestDir(object):
emit += 'AC_PROG_CC\n'
emit += 'AC_PROG_INSTALL\n'
emit += 'AC_PROG_MAKE_SET\n'
- emit += 'gl_PROG_AR_RANLIB\n\n'
+ emit += self.emiter.preEarlyMacros(False, '', modules)
if uses_subdirs:
emit += 'AM_PROG_CC_C_O\n\n'
snippets = list()
@@ -561,8 +561,8 @@ class GLTestDir(object):
emit += 'm4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace\n'
emit += 'm4_pattern_allow([^gl_ES$])dnl a valid locale name\n'
emit += 'm4_pattern_allow([^gl_LIBOBJS$])dnl a variable\n'
- emit += 'm4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable\n\n'
- emit += 'gl_PROG_AR_RANLIB\n\n'
+ emit += 'm4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable\n'
+ emit += self.emiter.preEarlyMacros(False, '', modules)
if any_uses_subdirs:
emit += 'AM_PROG_CC_C_O\n'
snippets = list()
--
2.34.1