c3a20e9a33
Compressed manpages have different extension than those listed in the RECORD file, so they were not recognized when %%pyproject_save_files '+auto' flag was provided. To enable the path recognition, if the manpage extension matches the one listed in brp-compres, the extension is removed, and an asterisk is now added to the manpages filenames. Source: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_manpages Fixes: https://bugzilla.redhat.com/2033254
84 lines
2.7 KiB
Python
84 lines
2.7 KiB
Python
'''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())
|