Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#30986: contrib: skip missing binaries in gen-ma…
Browse files Browse the repository at this point in the history
…npages

ee61853 gen-manpages: Prompt error if no binaries are found (Andre)
299e222 gen-manpages: implement --skip-missing-binaries (Andre Alves)

Pull request description:

  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.

  A new argument, `--skip-missing-binaries`, has been added to enable this behavior.

  ```sh
  ➜  bitcoin git:(fix-gen-manpages) ✗ ./contrib/devtools/gen-manpages.py --help
  usage: gen-manpages.py [-h] [-s]

  options:
    -h, --help            show this help message and exit
    -s, --skip-missing-binaries
                          skip generation for binaries that are not found

  ```

  closes #30985

  This PR also includes an error prompt if no binaries are found in the build path.

ACKs for top commit:
  achow101:
    ACK ee61853
  laanwj:
    re-ACK ee61853

Tree-SHA512: af4a0a5e26e508a51ab63f8aa9f98a6d6af9d7682a16791d8a6a61d49e44cb0147453f628ad5910f65d4efa6e3c7b6605c007259c23230b54888845bfaeb050c
  • Loading branch information
achow101 committed Nov 27, 2024
2 parents b2af068 + ee61853 commit 7590e93
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions contrib/devtools/gen-manpages.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import subprocess
import sys
import tempfile
import argparse

BINARIES = [
'src/bitcoind',
Expand All @@ -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')
Expand All @@ -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
Expand All @@ -51,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.')
Expand Down

0 comments on commit 7590e93

Please sign in to comment.