summaryrefslogtreecommitdiffstats
path: root/Doc/tools
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/tools')
-rwxr-xr-xDoc/tools/mksourcepkg51
1 files changed, 35 insertions, 16 deletions
diff --git a/Doc/tools/mksourcepkg b/Doc/tools/mksourcepkg
index 260ae6d..098bed2 100755
--- a/Doc/tools/mksourcepkg
+++ b/Doc/tools/mksourcepkg
@@ -21,12 +21,17 @@ __version__ = "$Revision$"
import getopt
import glob
import os
+import re
import shutil
import sys
import tempfile
+import cvsinfo
+
quiet = 0
+rx = re.compile(r":ext:(?:[a-zA-Z0-9]+)@cvs\.([a-zA-Z0-9]+).sourceforge.net:"
+ r"/cvsroot/\1")
def main():
@@ -70,33 +75,47 @@ def main():
cvstag = args[1]
tempdir = tempfile.mktemp()
os.mkdir(tempdir)
- os.mkdir(os.path.join(tempdir, "Python-%s" % release))
- docdir = os.path.join(tempdir, "Python-%s" % release, "Doc")
- os.mkdir(docdir)
- mydir = os.getcwd()
+ pkgdir = os.path.join(tempdir, "Python-" + release)
+ os.mkdir(pkgdir)
+ pwd = os.getcwd()
+ mydir = os.path.abspath(os.path.dirname(sys.argv[0]))
+ info = cvsinfo.RepositoryInfo(mydir)
+ cvsroot = info.get_cvsroot()
+ m = rx.match(cvsroot)
+ if m:
+ # If this is an authenticated SourceForge repository, convert to
+ # anonymous usage for the export/checkout, since that avoids the
+ # SSH overhead.
+ group = m.group(1)
+ cvsroot = ":pserver:anonymous@cvs.%s.sourceforge.net:/cvsroot/%s" \
+ % (group, group)
+ # For some reason, SourceForge/CVS doesn't seem to care that we
+ # might not have done a "cvs login" to the anonymous server.
+ # That avoids a lot of painful gunk here.
+ os.chdir(pkgdir)
+ if not quiet:
+ print "--- current directory is:", pkgdir
if cvstag:
- run("cvs export -r %s -d %s/Python-%s/Doc python/dist/src/Doc"
- % (cvstag, tempdir, release))
+ run("cvs -d%s export -r %s -d Doc python/dist/src/Doc"
+ % (cvsroot, cvstag))
else:
- run("cvs checkout -d %s/Python-%s/Doc python/dist/src/Doc"
- % (tempdir, release))
+ run("cvs -Q -d%s checkout -d Doc python/dist/src/Doc" % cvsroot)
# remove CVS directories
- os.chdir("%s/Python-%s" % (tempdir, release))
for p in ('*/CVS', '*/*/CVS', '*/*/*/CVS'):
map(shutil.rmtree, glob.glob(p))
- os.chdir(mydir)
if tools:
- archive = "tools-" + release
+ archive = "doctools-" + release
# we don't want the actual documents in this case:
- for d in ("api", "doc", "ext", "lib", "mac", "ref", "tut"):
- shutil.rmtree(os.path.join(docdir, d))
+ for d in ("api", "dist", "doc", "ext", "inst",
+ "lib", "mac", "ref", "tut"):
+ shutil.rmtree(os.path.join(os.path.join(pkgdir, "Doc"), d))
else:
archive = "latex-" + release
# XXX should also remove the .cvsignore files at this point
os.chdir(tempdir)
- archive = os.path.join(mydir, archive)
+ archive = os.path.join(pwd, archive)
for format in formats:
if format == "bzip2":
run("tar cf - Python-%s | bzip2 -9 >%s.tar.bz2"
@@ -111,7 +130,7 @@ def main():
% (archive, release))
# clean up the work area:
- os.chdir(mydir)
+ os.chdir(pwd)
shutil.rmtree(tempdir)
@@ -119,7 +138,7 @@ def run(cmd):
if quiet < 2:
print "+++", cmd
if quiet:
- cmd = "(%s) >/dev/null" % cmd
+ cmd = "%s >/dev/null" % cmd
rc = os.system(cmd)
if rc:
sys.exit(rc)