summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-03-13 10:12:39 (GMT)
committerGeorg Brandl <georg@python.org>2010-03-13 10:12:39 (GMT)
commit3446583976e2eed07d70778baa54c5dca97f9d3e (patch)
treeefd55413b0f1edad6e0603a04f83eff6a3919273
parenteb6d43004134dc8b1c346b77abd1566b2d60b917 (diff)
downloadcpython-3446583976e2eed07d70778baa54c5dca97f9d3e.zip
cpython-3446583976e2eed07d70778baa54c5dca97f9d3e.tar.gz
cpython-3446583976e2eed07d70778baa54c5dca97f9d3e.tar.bz2
Add Makefile targets for automatic doc build. Add script that will be used for daily build.
-rw-r--r--Doc/Makefile41
-rwxr-xr-xDoc/tools/dailybuild.py81
2 files changed, 112 insertions, 10 deletions
diff --git a/Doc/Makefile b/Doc/Makefile
index 31670ad..cdc97a3 100644
--- a/Doc/Makefile
+++ b/Doc/Makefile
@@ -14,20 +14,27 @@ DISTVERSION = $(shell $(PYTHON) tools/sphinxext/patchlevel.py)
ALLSPHINXOPTS = -b $(BUILDER) -d build/doctrees -D latex_paper_size=$(PAPER) \
$(SPHINXOPTS) . build/$(BUILDER) $(SOURCES)
-.PHONY: help checkout update build html htmlhelp clean coverage dist check
+.PHONY: help checkout update build html htmlhelp latex text changes linkcheck \
+ suspicious coverage doctest pydoc-topics htmlview clean dist check serve \
+ autobuild-dev autobuild-stable
help:
@echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make standalone HTML files"
- @echo " htmlhelp to make HTML files and a HTML help project"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " text to make plain text files"
- @echo " changes to make an overview over all changed/added/deprecated items"
- @echo " linkcheck to check all external links for integrity"
+ @echo " clean to remove build files"
+ @echo " update to update build tools"
+ @echo " html to make standalone HTML files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " text to make plain text files"
+ @echo " changes to make an overview over all changed/added/deprecated items"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " coverage to check documentation coverage for library and C API"
+ @echo " doctest to run doctests in the documentation"
+ @echo " pydoc-topics to regenerate the pydoc topics file"
+ @echo " dist to create a \"dist\" directory with archived docs for download"
@echo " suspicious to check for suspicious markup in output text"
- @echo " coverage to check documentation coverage for library and C API"
- @echo " dist to create a \"dist\" directory with archived docs for download"
- @echo " serve to serve the documentation on the localhost (8000)"
+ @echo " check to run a check for frequent markup errors"
+ @echo " serve to serve the documentation on the localhost (8000)"
# Note: if you update versions here, do the same in make.bat and README.txt
checkout:
@@ -153,3 +160,17 @@ check:
serve:
../Tools/scripts/serve.py build/html
+
+# Targets for automatic doc build
+
+# for development releases: always build
+autobuild-dev:
+ make update
+ make dist
+
+# for stable releases: only build if not in development mode
+autobuild-stable:
+ @case $(DISTVERSION) in *[abc]*) \
+ echo "Not building; not a release version."; exit 1;; \
+ esac
+ @make autobuild-dev
diff --git a/Doc/tools/dailybuild.py b/Doc/tools/dailybuild.py
new file mode 100755
index 0000000..6291d90
--- /dev/null
+++ b/Doc/tools/dailybuild.py
@@ -0,0 +1,81 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Runs the daily build of the Python docs on dinsdale.python.org.
+#
+# Usages:
+#
+# dailybuild.py
+#
+# without any arguments builds docs for all branches configured in the global
+# BRANCHES value.
+#
+# dailybuild.py [-d] <checkout> <target>
+#
+# builds one version, where <checkout> is an SVN checkout directory of the
+# Python branch to build docs for, and <target> is the directory where the
+# result should be placed. If -d is given, the docs are built even if the
+# branch is in development mode (i.e. version contains a, b or c).
+#
+# This script is not run from the checkout, so if you want to change how the
+# daily build is run, you must replace it on dinsdale. This is necessary, for
+# example, after the release of a new minor version.
+#
+# 03/2010, Georg Brandl
+
+import os
+import sys
+import getopt
+
+
+BUILDROOT = '/home/gbrandl/docbuild'
+WWWROOT = '/data/ftp.python.org/pub/docs.python.org'
+
+BRANCHES = [
+ # checkout, target, isdev
+ (BUILDROOT + '/python26', WWWROOT, False),
+ (BUILDROOT + '/python31', WWWROOT + '/py3k', False),
+ (BUILDROOT + '/python27', WWWROOT + '/dev', True),
+ (BUILDROOT + '/python32', WWWROOT + '/dev/py3k', True),
+]
+
+
+def build_one(checkout, target, isdev):
+ print 'Doc autobuild started in %s' % checkout
+ os.chdir(checkout)
+ print 'Running svn update'
+ os.system('svn update')
+ print 'Running make autobuild'
+ if os.WEXITSTATUS(os.system(
+ 'cd Doc; make autobuild-%s' % (isdev and 'dev' or 'stable'))) == 2:
+ print '*' * 80
+ return
+ print 'Copying HTML files'
+ os.system('cp -a Doc/build/html/* %s' % target)
+ print 'Copying dist files'
+ os.system('cp -a Doc/dist %s/dist' % target)
+ print 'Finished'
+ print '=' * 80
+
+def usage():
+ print 'Usage:'
+ print ' %s' % sys.argv[0]
+ print 'or'
+ print ' %s [-d] <checkout> <target>' % sys.argv[0]
+ sys.exit(1)
+
+
+if __name__ == '__main__':
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], 'd')
+ except getopt.error:
+ usage()
+ if opts and not args:
+ usage()
+ if args:
+ if len(args) != 2:
+ usage()
+ build_one(args[0], args[1], bool(opts))
+ else:
+ for branch in BRANCHES:
+ build_one(*branch)