#!/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] # # builds one version, where is an SVN checkout directory of the # Python branch to build docs for, and 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('mkdir %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] ' % 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)