| #!/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 + '/python33', WWWROOT + '/dev', True), |
| (BUILDROOT + '/python27', WWWROOT, False), |
| (BUILDROOT + '/python32', WWWROOT + '/py3k', False), |
| ] |
| |
| |
| 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('mkdir -p %s/archives' % target) |
| os.system('cp -a Doc/dist/* %s/archives' % 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) |