You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.7 KiB
83 lines
2.7 KiB
'''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())
|
|
|