blob: 260ae6d33bed9980ea712d1763d0aef78630033c [file] [log] [blame]
Fred Drake9f2b4201999-08-02 20:19:17 +00001#! /usr/bin/env python
2# -*- Python -*-
3
4"""%(program)s - script to create the latex source distribution
5
6usage:
7 %(program)s [-t|--tools] release [tag]
8
9with -t|--tools: doesn't include the documents, only the framework
10
11without [tag]: generate from the current version that's checked in
12 (*NOT* what's in the current directory!)
13
14with [tag]: generate from the named tag
15"""
16#* should be modified to get the Python version number automatically
17# from the Makefile or someplace.
18
19__version__ = "$Revision$"
20
21import getopt
22import glob
23import os
24import shutil
25import sys
26import tempfile
27
28
29quiet = 0
30
31
32def main():
33 global quiet
34 try:
35 opts, args = getopt.getopt(sys.argv[1:], "abgtzq",
36 ["all", "bzip2", "gzip", "tools", "zip",
37 "quiet"])
38 except getopt.error, e:
39 usage(warning=str(e))
40 sys.exit(2)
41 if len(args) not in (1, 2):
42 usage(warning="wrong number of parameters")
43 sys.exit(2)
44 tools = 0
45 formats = {}
46 for opt, arg in opts:
47 if opt in ("-t", "--tools"):
48 tools = 1
49 elif opt in ("-q", "--quiet"):
50 quiet = quiet + 1
51 elif opt in ("-b", "--bzip2"):
52 formats["bzip2"] = 1
53 elif opt in ("-g", "--gzip"):
54 formats["gzip"] = 1
55 elif opt in ("-z", "--zip"):
56 formats["zip"] = 1
57 elif opt in ("-a", "--all"):
58 formats["bzip2"] = 1
59 formats["gzip"] = 1
60 formats["zip"] = 1
61 formats = formats.keys()
62 if formats:
63 # make order human-predictable
64 formats.sort()
65 else:
66 formats = ["gzip"]
67 release = args[0]
68 cvstag = None
69 if len(args) > 1:
70 cvstag = args[1]
71 tempdir = tempfile.mktemp()
72 os.mkdir(tempdir)
73 os.mkdir(os.path.join(tempdir, "Python-%s" % release))
74 docdir = os.path.join(tempdir, "Python-%s" % release, "Doc")
75 os.mkdir(docdir)
76 mydir = os.getcwd()
77 if cvstag:
78 run("cvs export -r %s -d %s/Python-%s/Doc python/dist/src/Doc"
79 % (cvstag, tempdir, release))
80 else:
81 run("cvs checkout -d %s/Python-%s/Doc python/dist/src/Doc"
82 % (tempdir, release))
83 # remove CVS directories
84 os.chdir("%s/Python-%s" % (tempdir, release))
85 for p in ('*/CVS', '*/*/CVS', '*/*/*/CVS'):
86 map(shutil.rmtree, glob.glob(p))
87 os.chdir(mydir)
88 if tools:
89 archive = "tools-" + release
90 # we don't want the actual documents in this case:
91 for d in ("api", "doc", "ext", "lib", "mac", "ref", "tut"):
92 shutil.rmtree(os.path.join(docdir, d))
93 else:
94 archive = "latex-" + release
95
96 # XXX should also remove the .cvsignore files at this point
97
98 os.chdir(tempdir)
99 archive = os.path.join(mydir, archive)
100 for format in formats:
101 if format == "bzip2":
102 run("tar cf - Python-%s | bzip2 -9 >%s.tar.bz2"
103 % (release, archive))
104 elif format == "gzip":
105 run("tar cf - Python-%s | gzip -9 >%s.tgz"
106 % (release, archive))
107 elif format == "zip":
Fred Drakeba828782000-04-03 04:19:14 +0000108 if os.path.exists(archive + ".zip"):
109 os.unlink(archive + ".zip")
110 run("zip -q -r9 %s.zip Python-%s"
Fred Drake9f2b4201999-08-02 20:19:17 +0000111 % (archive, release))
112
113 # clean up the work area:
114 os.chdir(mydir)
115 shutil.rmtree(tempdir)
116
117
118def run(cmd):
119 if quiet < 2:
120 print "+++", cmd
121 if quiet:
122 cmd = "(%s) >/dev/null" % cmd
123 rc = os.system(cmd)
124 if rc:
125 sys.exit(rc)
126
127
128def usage(warning=None):
129 stdout = sys.stdout
130 sys.stdout = sys.stderr
131 program = os.path.basename(sys.argv[0])
132 try:
133 if warning:
134 print "%s: %s\n" % (program, warning)
135 print __doc__ % {"program": program}
136 finally:
137 sys.stdout = stdout
138
139
140if __name__ == "__main__":
141 main()