summaryrefslogtreecommitdiff
path: root/compare_mandata.py
diff options
context:
space:
mode:
Diffstat (limited to 'compare_mandata.py')
-rw-r--r--compare_mandata.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/compare_mandata.py b/compare_mandata.py
new file mode 100644
index 0000000..08d4c6b
--- /dev/null
+++ b/compare_mandata.py
@@ -0,0 +1,83 @@
+'''Check whether the manpage extensions and directories list hardcoded in brp-compress
+are the same as the lists stored in pyproject_save_files.py.
+There is an open issue for RPM to provide them both as macros:
+https://github.com/rpm-software-management/rpm/issues/1865
+Once that happens, this script can be removed.
+'''
+
+import argparse
+import re
+import sys
+
+from pathlib import PosixPath
+
+from pyproject_buildrequires import print_err
+from pyproject_save_files import prepend_mandirs, MANPAGE_EXTENSIONS
+
+
+
+def read_brp_compress(filename):
+
+ contents = filename.read_text()
+ # To avoid duplicity of the manpage extensions which are listed a few times
+ # in the source file, they are stored in set and then retyped to a sorted list
+ manpage_exts = sorted(
+ set(re.findall(r'\(?(\w+)\\+\)?\$?', contents))
+ )
+
+ # Get rid of ${PREFIX} when extracting the manpage directories
+ mandirs = [
+ entry.replace('.${PREFIX}', '/PREFIX')
+ for entry in contents.split()
+ if entry.startswith('.${PREFIX}')
+ ]
+
+ return manpage_exts, sorted(mandirs)
+
+
+def compare_mandirs(brp_compress_mandirs):
+ '''
+ Check whether each of brp-compress mandirs entry is present in the list
+ stored in pyproject_save_files.py
+ '''
+
+ pyp_save_files_mandirs = sorted(prepend_mandirs(prefix='/PREFIX'))
+ if brp_compress_mandirs == pyp_save_files_mandirs:
+ return True
+ else:
+ print_err('Mandir lists don\'t match, update the list in pyproject_save_files.py')
+ print_err('brp-compress list:', brp_compress_mandirs)
+ print_err('pyproject_save_files list:', pyp_save_files_mandirs)
+ return False
+
+
+def compare_manpage_extensions(brp_compress_manpage_exts):
+ '''
+ Check whether each of brp-compress manpage extension is present in the list
+ stored in pyproject_save_files.py
+ '''
+
+ if brp_compress_manpage_exts == sorted(MANPAGE_EXTENSIONS):
+ return True
+ else:
+ print_err('Manpage extension lists don\'t match, update the list in pyproject_save_files.py')
+ print_err('brp-compress list:', brp_compress_manpage_exts)
+ print_err('pyproject_save_files list:', sorted(MANPAGE_EXTENSIONS))
+ return False
+
+
+def main(args):
+ src_manpage_exts, src_mandirs = read_brp_compress(args.filename)
+ extension_check_successful = compare_manpage_extensions(src_manpage_exts)
+ mandir_check_successful = compare_mandirs(src_mandirs)
+ if extension_check_successful and mandir_check_successful:
+ sys.exit(0)
+ else:
+ sys.exit(1)
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-f', '--filename', type=PosixPath, required=True,
+ help='Provide location of brp-compress file')
+ main(parser.parse_args())