public inbox for gcc-cvs@sourceware.org help / color / mirror / Atom feed
From: Martin Liska <marxin@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/marxin/heads/sphinx-final)] FIXME: sphinx: add update_web_docs_git.py script Date: Tue, 8 Nov 2022 14:36:40 +0000 (GMT) [thread overview] Message-ID: <20221108143653.85A953858025@sourceware.org> (raw) https://gcc.gnu.org/g:b509732f0a01b937a9b6be0e7ffec3300a4f2f5b commit b509732f0a01b937a9b6be0e7ffec3300a4f2f5b Author: Martin Liska <mliska@suse.cz> Date: Mon Nov 7 22:07:47 2022 +0100 FIXME: sphinx: add update_web_docs_git.py script maintainer-scripts/ChangeLog: * update_web_docs_git.py: New file. Diff: --- maintainer-scripts/update_web_docs_git.py | 81 +++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/maintainer-scripts/update_web_docs_git.py b/maintainer-scripts/update_web_docs_git.py new file mode 100755 index 00000000000..a02d0d1e6b0 --- /dev/null +++ b/maintainer-scripts/update_web_docs_git.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 + +# Generate documentation from Sphinx files. + +import argparse +import os +import shutil +import subprocess +import tempfile +from pathlib import Path + +GITROOT = '/git/gcc.git' +BUGURL = 'https://gcc.gnu.org/bugs/' + +parser = argparse.ArgumentParser(description='Update web documentation.') +parser.add_argument('output_folder', help='Output folder') +parser.add_argument('--gitrepo', help=f'Git repository (default: {GITROOT})', + default=GITROOT) +parser.add_argument('--sphinx-build', help='Path to sphinx-build binary') +args = parser.parse_args() + + +def find_configs(): + for root, _, files in os.walk('.'): + for f in files: + full = os.path.join(root, f) + if f == 'conf.py': + # find name of the documentation + lines = open(full).read().splitlines() + docname = None + for line in lines: + if line.startswith('name = '): + docname = line.split()[-1].strip("'") + break + assert docname + yield (Path(root).resolve(), docname) + + +with tempfile.TemporaryDirectory() as folder: + print(f'Using {folder} as temporary directory') + os.chdir(folder) + subprocess.check_output(f'git clone {args.gitrepo} --depth=1', shell=True) + # TODO: remove + os.chdir('gcc') + cmd = 'git fetch origin refs/users/marxin/heads/sphinx-final --depth=1' + subprocess.check_output(cmd, shell=True) + subprocess.check_output('git checkout FETCH_HEAD', shell=True) + configs = list(find_configs()) + + # Prepare folders + output = Path(args.output_folder) + if not output.exists(): + output.mkdir() + + temp = Path('tmp').resolve() + temp.mkdir() + + # Prepare default env. variables + childenv = os.environ.copy() + childenv['BUGURL'] = BUGURL + + # Build and copy the documentation + for config_folder, docname in sorted(configs): + print('=== BUILDING:', config_folder, docname, '===') + + # Build HTML + cmd = f'make -C doc html SOURCEDIR={config_folder} BUILDDIR={temp}/{docname}' + if args.sphinx_build: + cmd += f' SPHINXBUILD={args.sphinx_build}' + subprocess.check_output(cmd, shell=True, env=childenv) + os.unlink(f'{temp}/{docname}/html/.buildinfo') + shutil.copytree(f'{temp}/{docname}/html', f'{output}/{docname}', + dirs_exist_ok=True) + + # Build PDF + cmd = f'make -C doc latexpdf SOURCEDIR={config_folder} BUILDDIR={temp}/pdf/{docname}' + if args.sphinx_build: + cmd += f' SPHINXBUILD={args.sphinx_build}' + subprocess.check_output(cmd, shell=True, env=childenv) + shutil.copyfile(f'{temp}/pdf/{docname}/latex/{docname}.pdf', + f'{output}/{docname}.pdf')
next reply other threads:[~2022-11-08 14:36 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-11-08 14:36 Martin Liska [this message] -- strict thread matches above, loose matches on Subject: below -- 2022-11-08 14:54 Martin Liska 2022-11-08 14:43 Martin Liska 2022-11-08 14:35 Martin Liska 2022-11-08 12:07 Martin Liska 2022-11-08 11:43 Martin Liska 2022-11-08 11:39 Martin Liska 2022-11-08 11:24 Martin Liska
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20221108143653.85A953858025@sourceware.org \ --to=marxin@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).