From 299e2220e9546e7dca1ba5e56bdcfbbf97530fba Mon Sep 17 00:00:00 2001 From: Andre Alves Date: Thu, 14 Nov 2024 01:15:00 -0300 Subject: [PATCH 1/2] gen-manpages: implement --skip-missing-binaries With --skip-missing-binaries, instead of stopping the execution of gen-manpages.py when a binary is not found, continue generating manpages for the available binaries and skip the missing ones. --- contrib/devtools/gen-manpages.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/contrib/devtools/gen-manpages.py b/contrib/devtools/gen-manpages.py index 92acd9a4037..5675e6b11f7 100755 --- a/contrib/devtools/gen-manpages.py +++ b/contrib/devtools/gen-manpages.py @@ -6,6 +6,7 @@ import subprocess import sys import tempfile +import argparse BINARIES = [ 'src/bitcoind', @@ -16,6 +17,18 @@ 'src/qt/bitcoin-qt', ] +parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, +) +parser.add_argument( + "-s", + "--skip-missing-binaries", + action="store_true", + default=False, + help="skip generation for binaries that are not found in the build path", +) +args = parser.parse_args() + # Paths to external utilities. git = os.getenv('GIT', 'git') help2man = os.getenv('HELP2MAN', 'help2man') @@ -38,8 +51,12 @@ try: r = subprocess.run([abspath, "--version"], stdout=subprocess.PIPE, check=True, text=True) except IOError: - print(f'{abspath} not found or not an executable', file=sys.stderr) - sys.exit(1) + if(args.skip_missing_binaries): + print(f'{abspath} not found or not an executable. Skipping...', file=sys.stderr) + continue + else: + print(f'{abspath} not found or not an executable', file=sys.stderr) + sys.exit(1) # take first line (which must contain version) verstr = r.stdout.splitlines()[0] # last word of line is the actual version e.g. v22.99.0-5c6b3d5b3508 From ee6185372fc317d3948690997117e42f6b79a5ff Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 26 Nov 2024 21:35:50 -0300 Subject: [PATCH 2/2] gen-manpages: Prompt error if no binaries are found --- contrib/devtools/gen-manpages.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contrib/devtools/gen-manpages.py b/contrib/devtools/gen-manpages.py index 5675e6b11f7..14c8c408e83 100755 --- a/contrib/devtools/gen-manpages.py +++ b/contrib/devtools/gen-manpages.py @@ -68,6 +68,10 @@ versions.append((abspath, verstr, copyright)) +if not versions: + print(f'No binaries found in {builddir}. Please ensure the binaries are present in {builddir}, or set another build path using the BUILDDIR env variable.') + sys.exit(1) + if any(verstr.endswith('-dirty') for (_, verstr, _) in versions): print("WARNING: Binaries were built from a dirty tree.") print('man pages generated from dirty binaries should NOT be committed.')