[388] | 1 | #!/usr/bin/env python
|
---|
| 2 | # -*- coding: utf-8 -*-
|
---|
| 3 |
|
---|
| 4 | # Runs the daily build of the Python docs on dinsdale.python.org.
|
---|
| 5 | #
|
---|
| 6 | # Usages:
|
---|
| 7 | #
|
---|
| 8 | # dailybuild.py [-q]
|
---|
| 9 | #
|
---|
| 10 | # without any arguments builds docs for all branches configured in the global
|
---|
| 11 | # BRANCHES value. -q selects "quick build", which means to build only HTML.
|
---|
| 12 | #
|
---|
| 13 | # dailybuild.py [-q] [-d] <checkout> <target>
|
---|
| 14 | #
|
---|
| 15 | # builds one version, where <checkout> is an SVN checkout directory of the
|
---|
| 16 | # Python branch to build docs for, and <target> is the directory where the
|
---|
| 17 | # result should be placed. If -d is given, the docs are built even if the
|
---|
| 18 | # branch is in development mode (i.e. version contains a, b or c).
|
---|
| 19 | #
|
---|
| 20 | # This script is not run from the checkout, so if you want to change how the
|
---|
| 21 | # daily build is run, you must replace it on dinsdale. This is necessary, for
|
---|
| 22 | # example, after the release of a new minor version.
|
---|
| 23 | #
|
---|
| 24 | # 03/2010, Georg Brandl
|
---|
| 25 |
|
---|
| 26 | import os
|
---|
| 27 | import sys
|
---|
| 28 | import getopt
|
---|
| 29 |
|
---|
| 30 |
|
---|
| 31 | BUILDROOT = '/home/gbrandl/docbuild'
|
---|
| 32 | WWWROOT = '/data/ftp.python.org/pub/docs.python.org'
|
---|
| 33 |
|
---|
| 34 | BRANCHES = [
|
---|
| 35 | # checkout, target, isdev
|
---|
| 36 | (BUILDROOT + '/python33', WWWROOT + '/3.3', False),
|
---|
| 37 | (BUILDROOT + '/python34', WWWROOT + '/3.4', True),
|
---|
| 38 | (BUILDROOT + '/python27', WWWROOT + '/2.7', False),
|
---|
| 39 | ]
|
---|
| 40 |
|
---|
| 41 |
|
---|
| 42 | def build_one(checkout, target, isdev, quick):
|
---|
| 43 | print 'Doc autobuild started in %s' % checkout
|
---|
| 44 | os.chdir(checkout)
|
---|
| 45 | print 'Running hg pull --update'
|
---|
| 46 | os.system('/usr/local/bin/hg pull --update')
|
---|
| 47 | print 'Running make autobuild'
|
---|
| 48 | maketarget = 'autobuild-' + ('html' if quick else
|
---|
| 49 | ('dev' if isdev else 'stable'))
|
---|
| 50 | if os.WEXITSTATUS(os.system('cd Doc; make %s' % maketarget)) == 2:
|
---|
| 51 | print '*' * 80
|
---|
| 52 | return
|
---|
| 53 | print 'Copying HTML files to %s' % target
|
---|
| 54 | os.system('cp -a Doc/build/html/* %s' % target)
|
---|
| 55 | if not quick:
|
---|
| 56 | print 'Copying dist files'
|
---|
| 57 | os.system('mkdir -p %s/archives' % target)
|
---|
| 58 | os.system('cp -a Doc/dist/* %s/archives' % target)
|
---|
| 59 | print 'Finished'
|
---|
| 60 | print '=' * 80
|
---|
| 61 |
|
---|
| 62 | def usage():
|
---|
| 63 | print 'Usage:'
|
---|
| 64 | print ' %s' % sys.argv[0]
|
---|
| 65 | print 'or'
|
---|
| 66 | print ' %s [-d] <checkout> <target>' % sys.argv[0]
|
---|
| 67 | sys.exit(1)
|
---|
| 68 |
|
---|
| 69 |
|
---|
| 70 | if __name__ == '__main__':
|
---|
| 71 | try:
|
---|
| 72 | opts, args = getopt.getopt(sys.argv[1:], 'dq')
|
---|
| 73 | except getopt.error:
|
---|
| 74 | usage()
|
---|
| 75 | quick = devel = False
|
---|
| 76 | for opt, _ in opts:
|
---|
| 77 | if opt == '-q':
|
---|
| 78 | quick = True
|
---|
| 79 | if opt == '-d':
|
---|
| 80 | devel = True
|
---|
| 81 | if devel and not args:
|
---|
| 82 | usage()
|
---|
| 83 | if args:
|
---|
| 84 | if len(args) != 2:
|
---|
| 85 | usage()
|
---|
| 86 | build_one(args[0], args[1], devel, quick)
|
---|
| 87 | else:
|
---|
| 88 | for checkout, dest, devel in BRANCHES:
|
---|
| 89 | build_one(checkout, dest, devel, quick)
|
---|