>From 9812027a9afa87b12eb3b7e3c28600e6eff7ca98 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 6 Aug 2022 23:01:36 +0200 Subject: [PATCH 02/19] gnulib-tool.py: Finish implementing options --vc-files, --no-vc-files. * gnulib-tool.py (main): Accept options --vc-files, --no-vc-files. * pygnulib/GLImport.py (GLImport.__init__): Correct parsing of gl_VC_FILES directive. (GLImport.gnulib_cache): Don't treat the value False like None. (GLImport.execute): Skip the .gitignore file manipulations if vc_files is False. --- ChangeLog | 8 ++++++ gnulib-tool.py | 13 ++++++++-- gnulib-tool.py.TODO | 4 +-- pygnulib/GLConfig.py | 2 +- pygnulib/GLImport.py | 62 ++++++++++++++++++++++---------------------- 5 files changed, 53 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0043103914..29da7a3a6e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2022-08-06 Bruno Haible + gnulib-tool.py: Finish implementing options --vc-files, --no-vc-files. + * gnulib-tool.py (main): Accept options --vc-files, --no-vc-files. + * pygnulib/GLImport.py (GLImport.__init__): Correct parsing of + gl_VC_FILES directive. + (GLImport.gnulib_cache): Don't treat the value False like None. + (GLImport.execute): Skip the .gitignore file manipulations if vc_files + is False. + gnulib-tool.py: Finish implementing option --witness-c-macro. * gnulib-tool.py (main): Accept option --witness-c-macro. * pygnulib/GLConfig.py (GLConfig.__init__): Remove wrong type check of diff --git a/gnulib-tool.py b/gnulib-tool.py index 0bf72bf3a0..bb763a2245 100755 --- a/gnulib-tool.py +++ b/gnulib-tool.py @@ -363,6 +363,15 @@ def main(): dest='witness_c_macro', default=None, nargs=1) + # vc-files + parser.add_argument('--vc-files', + dest='vc_files', + default=None, + action='store_true') + parser.add_argument('--no-vc-files', + dest='vc_files', + default=None, + action='store_false') # single-configure parser.add_argument('--single-configure', dest='single_configure', @@ -553,7 +562,7 @@ def main(): or cmdargs.avoids != None or cmdargs.lgpl != None or cmdargs.makefile_name != None or cmdargs.macro_prefix != None or cmdargs.podomain != None - or cmdargs.witness_c_macro != None))): + or cmdargs.witness_c_macro != None or cmdargs.vc_files != None))): message = '%s: *** ' % constants.APP['name'] message += 'invalid options for --%s mode\n' % mode message += 'Try \'gnulib-tool --help\' for more information.\n' @@ -649,6 +658,7 @@ def main(): witness_c_macro = cmdargs.witness_c_macro if witness_c_macro != None: witness_c_macro = witness_c_macro[0] + vc_files = cmdargs.vc_files avoids = cmdargs.avoids if avoids != None: avoids = [ module @@ -659,7 +669,6 @@ def main(): single_configure = cmdargs.single_configure docbase = None conddeps = None - vc_files = None # Create pygnulib configuration. config = classes.GLConfig( diff --git a/gnulib-tool.py.TODO b/gnulib-tool.py.TODO index c37fcbeebf..53915662b8 100644 --- a/gnulib-tool.py.TODO +++ b/gnulib-tool.py.TODO @@ -29,14 +29,14 @@ Implement the options: --gnu-make --tests-makefile-name --automake-subdir - --vc-files - --no-vc-files -h | --hardlink --local-hardlink -S | --more-symlinks -H | --more-hardlinks --help (same output) +Remove exit() in GLImport.py. + -------------------------------------------------------------------------------- commit 76c7703cb2e9e0e803d1296618d8ab9e86e13d6c diff --git a/pygnulib/GLConfig.py b/pygnulib/GLConfig.py index 5f30a80797..216f2e05fa 100644 --- a/pygnulib/GLConfig.py +++ b/pygnulib/GLConfig.py @@ -276,7 +276,7 @@ class GLConfig(object): elif key in ['libtool', 'lgpl', 'conddeps', 'symbolic', 'lsymbolic', 'libtests', 'dryrun']: return False - if key == 'vc_files': + elif key == 'vc_files': return None elif key == 'errors': return True diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py index 9de4b3b93c..b06fc5b603 100644 --- a/pygnulib/GLImport.py +++ b/pygnulib/GLImport.py @@ -141,9 +141,6 @@ class GLImport(object): if 'gl_CONDITIONAL_DEPENDENCIES' in data: self.cache.setCondDeps(True) data = data.replace('gl_CONDITIONAL_DEPENDENCIES', '') - if 'gl_VC_FILES' in data: - self.cache.setVCFiles(True) - data = data.replace('gl_VC_FILES', '') if 'gl_WITH_TESTS' in data: self.cache.enableInclTestCategory(TESTS['tests']) data = data.replace('gl_WITH_TESTS', '') @@ -202,6 +199,8 @@ class GLImport(object): self.cache.setPoDomain(cleaner(tempdict['gl_PO_DOMAIN'])) if tempdict['gl_WITNESS_C_MACRO']: self.cache.setWitnessCMacro(cleaner(tempdict['gl_WITNESS_C_MACRO'])) + if tempdict['gl_VC_FILES']: + self.cache.setVCFiles(cleaner(tempdict['gl_VC_FILES'])) # Get cached filelist from gnulib-comp.m4. destdir, m4base = self.config.getDestDir(), self.config.getM4Base() @@ -542,7 +541,7 @@ class GLImport(object): emit += 'gl_MACRO_PREFIX([%s])\n' % macro_prefix emit += 'gl_PO_DOMAIN([%s])\n' % podomain emit += 'gl_WITNESS_C_MACRO([%s])\n' % witness_c_macro - if vc_files: + if vc_files != None: emit += 'gl_VC_FILES([%s])\n' % vc_files return constants.nlconvert(emit) @@ -1334,33 +1333,34 @@ AC_DEFUN([%s_FILE_LIST], [\n''' % macro_prefix if isfile(tmpfile): os.remove(tmpfile) - # Update the .cvsignore and .gitignore files. - ignorelist = list() - filetable['added'] = sorted(set(filetable['added'])) - filetable['removed'] = sorted(set(filetable['added'])) - for file in filetable['added']: - directory, basename = os.path.split(file) - ignorelist += [tuple([directory, '|A|', basename])] - for file in filetable['removed']: - directory, basename = os.path.split(file) - ignorelist += [tuple([directory, '|R|', basename])] - last_dir = '' - last_dirs_added = list() - last_dirs_removed = list() - for row in ignorelist: - next_dir = row[0] - operand = row[1] - filename = row[2] - if next_dir != last_dir: - self._done_dir_(last_dir, last_dirs_added, last_dirs_removed) - last_dir = next_dir - last_dirs_added = list() - last_dirs_removed = list() - if operand == '|A|': - last_dirs_added += [filename] - elif operand == '|R|': - last_dirs_removed += [filename] - self._done_dir_(last_dir, last_dirs_added, last_dirs_removed) + if vc_files != False: + # Update the .cvsignore and .gitignore files. + ignorelist = list() + filetable['added'] = sorted(set(filetable['added'])) + filetable['removed'] = sorted(set(filetable['added'])) + for file in filetable['added']: + directory, basename = os.path.split(file) + ignorelist += [tuple([directory, '|A|', basename])] + for file in filetable['removed']: + directory, basename = os.path.split(file) + ignorelist += [tuple([directory, '|R|', basename])] + last_dir = '' + last_dirs_added = list() + last_dirs_removed = list() + for row in ignorelist: + next_dir = row[0] + operand = row[1] + filename = row[2] + if next_dir != last_dir: + self._done_dir_(last_dir, last_dirs_added, last_dirs_removed) + last_dir = next_dir + last_dirs_added = list() + last_dirs_removed = list() + if operand == '|A|': + last_dirs_added += [filename] + elif operand == '|R|': + last_dirs_removed += [filename] + self._done_dir_(last_dir, last_dirs_added, last_dirs_removed) exit() # Finish the work. -- 2.34.1