public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/marxin/heads/sphinx-final)] sphinx: add update_web_docs_git.py script
@ 2022-11-07 21:08 Martin Liska
0 siblings, 0 replies; 2+ messages in thread
From: Martin Liska @ 2022-11-07 21:08 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:8654f8e76a9b6700762f97b0445d599655d7e491
commit 8654f8e76a9b6700762f97b0445d599655d7e491
Author: Martin Liska <mliska@suse.cz>
Date: Mon Nov 7 22:07:47 2022 +0100
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 | 75 +++++++++++++++++++++++++++++++
1 file changed, 75 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..81fe22087f1
--- /dev/null
+++ b/maintainer-scripts/update_web_docs_git.py
@@ -0,0 +1,75 @@
+#!/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='Git repository', default=GITROOT)
+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}'
+ 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}'
+ subprocess.check_output(cmd, shell=True, env=childenv)
+ shutil.copyfile(f'{temp}/pdf/{docname}/latex/{docname}.pdf',
+ f'{output}/{docname}.pdf')
^ permalink raw reply [flat|nested] 2+ messages in thread
* [gcc(refs/users/marxin/heads/sphinx-final)] sphinx: add update_web_docs_git.py script
@ 2022-11-08 10:21 Martin Liska
0 siblings, 0 replies; 2+ messages in thread
From: Martin Liska @ 2022-11-08 10:21 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:5562f1d9e96fd4b12bedfa462c805fa1a0776504
commit 5562f1d9e96fd4b12bedfa462c805fa1a0776504
Author: Martin Liska <mliska@suse.cz>
Date: Mon Nov 7 22:07:47 2022 +0100
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')
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-11-08 10:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-07 21:08 [gcc(refs/users/marxin/heads/sphinx-final)] sphinx: add update_web_docs_git.py script Martin Liska
2022-11-08 10:21 Martin Liska
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).