diff options
author | Aaron Carlisle <carlisle.b3d@gmail.com> | 2021-02-12 21:00:22 +0300 |
---|---|---|
committer | Aaron Carlisle <carlisle.b3d@gmail.com> | 2021-02-12 21:14:43 +0300 |
commit | 95cba371903febe2f39a3c86eca264e0a688cd52 (patch) | |
tree | 3115859af2b48cbb7342a8fa9e33bae1ad1db770 | |
parent | 432b758ae3d0fa623f7a728c11abdf8301213739 (diff) |
Py Doc: Delete old deployment scripts
Now, the API docs are deployed via the new devops pipeline developed by
James.
-rwxr-xr-x | doc/python_api/sphinx_doc_gen.sh | 156 | ||||
-rwxr-xr-x | doc/python_api/sphinx_doc_update.py | 216 |
2 files changed, 0 insertions, 372 deletions
diff --git a/doc/python_api/sphinx_doc_gen.sh b/doc/python_api/sphinx_doc_gen.sh deleted file mode 100755 index 26c3701f3e0..00000000000 --- a/doc/python_api/sphinx_doc_gen.sh +++ /dev/null @@ -1,156 +0,0 @@ -#!/bin/sh -# run from the blender source dir -# bash doc/python_api/sphinx_doc_gen.sh -# ssh upload means you need an account on the server - -# ---------------------------------------------------------------------------- -# Upload vars - -# disable for testing -DO_UPLOAD=true -DO_EXE_BLENDER=true -DO_OUT_HTML=true -DO_OUT_HTML_ZIP=true -DO_OUT_PDF=false - -if [ -z $BLENDER_BIN ] ; then - BLENDER_BIN="./blender.bin" -fi - -if [ "$1" == "" ] ; then - echo "Expected a single argument for the username on blender.org, skipping upload step!" - DO_UPLOAD=false -else - SSH_USER=$1 - SSH_HOST=$SSH_USER"@blender.org" - SSH_UPLOAD="/data/www/vhosts/www.blender.org/api" # blender_python_api_VERSION, added after -fi - - -# ---------------------------------------------------------------------------- -# Blender Version & Info - -# 'Blender 2.53 (sub 1) Build' --> '2_53_1' as a shell script. -# "_".join(str(v) for v in bpy.app.version) -# custom blender vars -blender_srcdir=$(dirname -- $0)/../.. -blender_version_header="$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" -blender_version=$(grep "BLENDER_VERSION\s" "$blender_version_header" | awk '{print $3}') -blender_version_cycle=$(grep "BLENDER_VERSION_CYCLE\s" "$blender_version_header" | awk '{print $3}') -unset blender_version_header - -BLENDER_VERSION=$(expr $blender_version / 100)_$(expr $blender_version % 100) - -SSH_UPLOAD_FULL=$SSH_UPLOAD/"blender_python_api_"$BLENDER_VERSION - -SPHINXBASE=doc/python_api - -SPHINX_WORKDIR="$(mktemp --directory --suffix=.sphinx)" - - -# ---------------------------------------------------------------------------- -# Generate reStructuredText (blender/python only) - -if $DO_EXE_BLENDER ; then - # Don't delete existing docs, now partial updates are used for quick builds. - # - # Disable ASAN error halt since it results in nonzero exit code on any minor issue. - ASAN_OPTIONS=halt_on_error=0:${ASAN_OPTIONS} \ - $BLENDER_BIN \ - --background \ - -noaudio \ - --factory-startup \ - --python-exit-code 1 \ - --python $SPHINXBASE/sphinx_doc_gen.py \ - -- \ - --output=$SPHINX_WORKDIR - - - if (($? != 0)) ; then - echo "Generating documentation failed, aborting" - exit 1 - fi -fi - -# ---------------------------------------------------------------------------- -# Generate HTML (sphinx) - -if $DO_OUT_HTML ; then - sphinx-build -b html -j auto $SPHINX_WORKDIR/sphinx-in $SPHINX_WORKDIR/sphinx-out - - # XXX, saves space on upload and zip, should move HTML outside - # and zip up there, for now this is OK - rm -rf sphinx-out/.doctrees - - # in case we have a zip already - rm -f blender_python_reference_$BLENDER_VERSION.zip - - # ------------------------------------------------------------------------ - # ZIP the HTML dir for upload - - if $DO_OUT_HTML_ZIP ; then - # lame, temp rename dir - mv sphinx-out blender_python_reference_$BLENDER_VERSION - zip -r -9 blender_python_reference_$BLENDER_VERSION.zip blender_python_reference_$BLENDER_VERSION - mv blender_python_reference_$BLENDER_VERSION sphinx-out - fi - - cd - -fi - - -# ---------------------------------------------------------------------------- -# Generate PDF (sphinx/laytex) - -if $DO_OUT_PDF ; then - sphinx-build -n -b latex -j auto $SPHINX_WORKDIR/sphinx-in $SPHINX_WORKDIR/sphinx-out - make -C $SPHINX_WORKDIR/sphinx-out - mv $SPHINX_WORKDIR/sphinx-out/contents.pdf \ - $SPHINX_WORKDIR/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf -fi - -# ---------------------------------------------------------------------------- -# Upload to blender servers, comment this section for testing - -if $DO_UPLOAD ; then - - ssh $SSH_USER@blender.org 'rm -rf '$SSH_UPLOAD_FULL'/*' - rsync --progress -ave "ssh -p 22" $SPHINX_WORKDIR/sphinx-out/* $SSH_HOST:$SSH_UPLOAD_FULL/ - - ## symlink the dir to a static URL - #ssh $SSH_USER@blender.org 'rm '$SSH_UPLOAD'/250PythonDoc && ln -s '$SSH_UPLOAD_FULL' '$SSH_UPLOAD'/250PythonDoc' - if [ "$blender_version_cycle" = "release" ] ; then - ssh $SSH_USER@blender.org 'rm '$SSH_UPLOAD'/blender_python_api_current && ln -s '$SSH_UPLOAD_FULL' '$SSH_UPLOAD'/blender_python_api_current' - fi - - # better redirect - ssh $SSH_USER@blender.org 'echo "<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\" content=\"0;url=../blender_python_api_'$BLENDER_VERSION'/\"></head><body>Redirecting...</body></html>" > '$SSH_UPLOAD'/250PythonDoc/index.html' - - # redirect for release only so wiki can point here - if [ "$blender_version_cycle" = "release" ] ; then - ssh $SSH_USER@blender.org 'echo "<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\" content=\"0;url=../blender_python_api_'$BLENDER_VERSION'/\"></head><body>Redirecting...</body></html>" > '$SSH_UPLOAD'/blender_python_api/index.html' - fi - - if $DO_OUT_PDF ; then - # rename so local PDF has matching name. - rsync --progress -ave "ssh -p 22" \ - $SPHINX_WORKDIR/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf \ - $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.pdf - fi - - if $DO_OUT_HTML_ZIP ; then - rsync --progress -ave "ssh -p 22" \ - $SPHINX_WORKDIR/blender_python_reference_$BLENDER_VERSION.zip \ - $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.zip - fi - -fi - - -# ---------------------------------------------------------------------------- -# Print some useful text - -echo "" -echo "Finished! view the docs from: " -if $DO_OUT_HTML ; then echo " html:" $SPHINX_WORKDIR/sphinx-out/index.html ; fi -if $DO_OUT_PDF ; then echo " pdf:" $SPHINX_WORKDIR/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf ; fi diff --git a/doc/python_api/sphinx_doc_update.py b/doc/python_api/sphinx_doc_update.py deleted file mode 100755 index 71b49d4949d..00000000000 --- a/doc/python_api/sphinx_doc_update.py +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env python3 - -# ##### BEGIN GPL LICENSE BLOCK ##### -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# <pep8 compliant> - -""" -This is a helper script to generate Blender Python API documentation (using Sphinx), and update server data using rsync. - -You'll need to specify your user login and password, obviously. - -Example usage: - - ./sphinx_doc_update.py --jobs 16 --mirror ../../../docs/remote_api_backup/ --source ../.. --blender ../../../build_cmake/bin/blender --user foobar --password barfoo - -""" - -import os -import shutil -import subprocess -import sys -import tempfile -import zipfile - - -DEFAULT_RSYNC_SERVER = "docs.blender.org" -DEFAULT_RSYNC_ROOT = "/api/" -DEFAULT_SYMLINK_ROOT = "/data/www/vhosts/docs.blender.org/api" - - -def argparse_create(): - import argparse - global __doc__ - - # When --help or no args are given, print this help - usage_text = __doc__ - - parser = argparse.ArgumentParser(description=usage_text, - formatter_class=argparse.RawDescriptionHelpFormatter) - - parser.add_argument( - "--mirror", dest="mirror_dir", - metavar='PATH', required=True, - help="Path to local rsync mirror of api doc server") - parser.add_argument( - "--source", dest="source_dir", - metavar='PATH', required=True, - help="Path to Blender git repository") - parser.add_argument( - "--blender", dest="blender", - metavar='PATH', required=True, - help="Path to Blender executable") - parser.add_argument( - "--rsync-server", dest="rsync_server", default=DEFAULT_RSYNC_SERVER, - metavar='RSYNCSERVER', type=str, required=False, - help=("rsync server address")) - parser.add_argument( - "--rsync-root", dest="rsync_root", default=DEFAULT_RSYNC_ROOT, - metavar='RSYNCROOT', type=str, required=False, - help=("Root path of API doc on rsync server")) - parser.add_argument( - "--user", dest="user", - metavar='USER', type=str, required=True, - help=("User to login on rsync server")) - parser.add_argument( - "--password", dest="password", - metavar='PASSWORD', type=str, required=True, - help=("Password to login on rsync server")) - parser.add_argument( - "--jobs", dest="jobs_nr", - metavar='NR', type=int, required=False, default=1, - help="Number of sphinx building jobs to launch in parallel") - - return parser - - -def main(): - # ---------- - # Parse Args - - args = argparse_create().parse_args() - - rsync_base = "rsync://%s@%s:%s" % (args.user, args.rsync_server, args.rsync_root) - - blenver = api_blenver = api_blenver_zip = "" - api_name = "" - branch = "" - is_release = is_beta = False - - # I) Update local mirror using rsync. - rsync_mirror_cmd = ("rsync", "--delete-after", "-avzz", rsync_base, args.mirror_dir) - subprocess.run(rsync_mirror_cmd, env=dict(os.environ, RSYNC_PASSWORD=args.password)) - - with tempfile.TemporaryDirectory() as tmp_dir: - # II) Generate doc source in temp dir. - doc_gen_cmd = ( - args.blender, "--background", "-noaudio", "--factory-startup", "--python-exit-code", "1", - "--python", "%s/doc/python_api/sphinx_doc_gen.py" % args.source_dir, "--", - "--output", tmp_dir - ) - subprocess.run(doc_gen_cmd) - - # III) Get Blender version info. - getver_file = os.path.join(tmp_dir, "blendver.txt") - getver_script = (r"""import sys, bpy -with open(sys.argv[-1], 'w') as f: - is_release = bpy.app.version_cycle in {'rc', 'release'} - is_beta = bpy.app.version_cycle in {'beta'} - branch = bpy.app.build_branch.split()[0].decode() - f.write('%d\n' % is_release) - f.write('%d\n' % is_beta) - f.write('%s\n' % branch) - f.write('%d.%d\n' % (bpy.app.version[0], bpy.app.version[1])) - f.write('%d.%d\n' % (bpy.app.version[0], bpy.app.version[1]) - if (is_release or is_beta) else '%s\n' % branch) - f.write('%d_%d' % (bpy.app.version[0], bpy.app.version[1])) -""") - get_ver_cmd = (args.blender, "--background", "-noaudio", "--factory-startup", "--python-exit-code", "1", - "--python-expr", getver_script, "--", getver_file) - subprocess.run(get_ver_cmd) - with open(getver_file) as f: - is_release, is_beta, branch, blenver, api_blenver, api_blenver_zip = f.read().split("\n") - is_release = bool(int(is_release)) - is_beta = bool(int(is_beta)) - os.remove(getver_file) - - # IV) Build doc. - curr_dir = os.getcwd() - os.chdir(tmp_dir) - sphinx_cmd = ("sphinx-build", "-j", str(args.jobs_nr), "-b", "html", "sphinx-in", "sphinx-out") - subprocess.run(sphinx_cmd) - shutil.rmtree(os.path.join("sphinx-out", ".doctrees")) - os.chdir(curr_dir) - - # V) Cleanup existing matching dir in server mirror (if any), and copy new doc. - api_name = api_blenver - api_dir = os.path.join(args.mirror_dir, api_name) - if os.path.exists(api_dir): - if os.path.islink(api_dir): - os.remove(api_dir) - else: - shutil.rmtree(api_dir) - os.rename(os.path.join(tmp_dir, "sphinx-out"), api_dir) - - # VI) Create zip archive. - zip_name = "blender_python_reference_%s" % api_blenver_zip # We can't use 'release' postfix here... - zip_path = os.path.join(args.mirror_dir, zip_name) - with zipfile.ZipFile(zip_path, 'w') as zf: - for dirname, _, filenames in os.walk(api_dir): - for filename in filenames: - filepath = os.path.join(dirname, filename) - zip_filepath = os.path.join(zip_name, os.path.relpath(filepath, api_dir)) - zf.write(filepath, arcname=zip_filepath) - os.rename(zip_path, os.path.join(api_dir, "%s.zip" % zip_name)) - - # VII) Create symlinks and html redirects. - if is_release: - symlink = os.path.join(args.mirror_dir, "current") - if os.path.exists(symlink): - if os.path.islink(symlink): - os.remove(symlink) - else: - shutil.rmtree(symlink) - os.symlink("./%s" % api_name, symlink) - with open(os.path.join(args.mirror_dir, "250PythonDoc/index.html"), 'w') as f: - f.write("<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\"" - "content=\"0;url=../%s/\"></head><body>Redirecting...</body></html>" % api_name) - elif is_beta: - # We do not have any particular symlink for that stage. - pass - elif branch == "master": - # Also create a symlink from version number to actual master api doc. - symlink = os.path.join(args.mirror_dir, blenver) - if os.path.exists(symlink): - if os.path.islink(symlink): - os.remove(symlink) - else: - shutil.rmtree(symlink) - os.symlink("./%s" % api_name, symlink) - with open(os.path.join(args.mirror_dir, "blender_python_api/index.html"), 'w') as f: - f.write("<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\"" - "content=\"0;url=../%s/\"></head><body>Redirecting...</body></html>" % api_name) - - # VIII) Upload (first do a dry-run so user can ensure everything is OK). - print("Doc generated in local mirror %s, please check it before uploading " - "(hit [Enter] to continue, [Ctrl-C] to exit):" % api_dir) - sys.stdin.read(1) - - rsync_mirror_cmd = ("rsync", "--dry-run", "--delete-after", "-avzz", args.mirror_dir, rsync_base) - subprocess.run(rsync_mirror_cmd, env=dict(os.environ, RSYNC_PASSWORD=args.password)) - - print("Rsync upload simulated, please check every thing is OK (hit [Enter] to continue, [Ctrl-C] to exit):") - sys.stdin.read(1) - - rsync_mirror_cmd = ("rsync", "--delete-after", "-avzz", args.mirror_dir, rsync_base) - subprocess.run(rsync_mirror_cmd, env=dict(os.environ, RSYNC_PASSWORD=args.password)) - - -if __name__ == "__main__": - main() |