[Python-checkins] r78908 - in python/trunk/Doc: Makefile tools/dailybuild.py

georg.brandl python-checkins at python.org
Sat Mar 13 11:12:39 CET 2010


Author: georg.brandl
Date: Sat Mar 13 11:12:39 2010
New Revision: 78908

Log:
Add Makefile targets for automatic doc build.  Add script that will be used for daily build.

Added:
   python/trunk/Doc/tools/dailybuild.py   (contents, props changed)
Modified:
   python/trunk/Doc/   (props changed)
   python/trunk/Doc/Makefile

Modified: python/trunk/Doc/Makefile
==============================================================================
--- python/trunk/Doc/Makefile	(original)
+++ python/trunk/Doc/Makefile	Sat Mar 13 11:12:39 2010
@@ -14,20 +14,27 @@
 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 @@
 
 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

Added: python/trunk/Doc/tools/dailybuild.py
==============================================================================
--- (empty file)
+++ python/trunk/Doc/tools/dailybuild.py	Sat Mar 13 11:12:39 2010
@@ -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)


More information about the Python-checkins mailing list