Add an explicit doctreedir option.

This commit is contained in:
Georg Brandl 2007-08-09 09:47:24 +00:00
parent edd5ff70d9
commit af33fd9548
2 changed files with 19 additions and 15 deletions

View File

@ -27,6 +27,7 @@ def usage(argv, msg=None):
usage: %s [options] sourcedir outdir [filenames...]"
options: -b <builder> -- builder to use (one of %s)
-a -- write all files; default is to only write new and changed files
-d <path> -- path for the cached doctree files (default outdir/.doctrees)
-O <option[=value]> -- give option to to the builder (-O help for list)
-D <setting=value> -- override a setting in sourcedir/conf.py
-N -- do not do colored output
@ -38,7 +39,7 @@ modi:
def main(argv):
try:
opts, args = getopt.getopt(argv[1:], 'ab:O:D:N')
opts, args = getopt.getopt(argv[1:], 'ab:d:O:D:N')
srcdirname = path.abspath(args[0])
if not path.isdir(srcdirname):
print >>sys.stderr, 'Error: Cannot find source directory.'
@ -67,6 +68,7 @@ def main(argv):
opt_help = False
options = {}
confoverrides = {}
doctreedir = path.join(outdirname, '.doctrees')
for opt, val in opts:
if opt == '-b':
if val not in builders:
@ -78,6 +80,8 @@ def main(argv):
usage(argv, 'Cannot combine -a option and filenames.')
return 1
all_files = True
elif opt == '-d':
doctreedir = val
elif opt == '-O':
if val == 'help':
opt_help = True
@ -115,7 +119,7 @@ def main(argv):
print ' * %s: %s' % (optname, description)
return 0
builderobj = builderobj(srcdirname, outdirname, options,
builderobj = builderobj(srcdirname, outdirname, doctreedir, options,
status_stream=sys.stdout,
warning_stream=sys.stderr,
confoverrides=confoverrides)

View File

@ -76,13 +76,14 @@ class Builder(object):
'freshenv': 'Don\'t use a pickled environment',
}
def __init__(self, srcdirname, outdirname, options, env=None,
status_stream=None, warning_stream=None,
confoverrides=None):
def __init__(self, srcdirname, outdirname, doctreedirname,
options, confoverrides=None, env=None,
status_stream=None, warning_stream=None):
self.srcdir = srcdirname
self.outdir = outdirname
if not path.isdir(path.join(outdirname, '.doctrees')):
os.mkdir(path.join(outdirname, '.doctrees'))
self.doctreedir = doctreedirname
if not path.isdir(doctreedirname):
os.mkdir(doctreedirname)
self.options = attrdict(options)
self.validate_options()
@ -104,9 +105,10 @@ class Builder(object):
try:
version, release = get_version_info(srcdirname)
except (IOError, OSError):
print >>warning_stream, 'WARNING: Can\'t get version info from ' \
'Include/patchlevel.h, using version of this interpreter.'
version, release = get_sys_version_info()
print >>warning_stream, 'WARNING: Can\'t get version info from ' \
'Include/patchlevel.h, using version of this ' \
'interpreter (%s).' % release
if self.config['version'] == 'auto':
self.config['version'] = version
if self.config['release'] == 'auto':
@ -163,15 +165,13 @@ class Builder(object):
try:
self.msg('trying to load pickled env...', nonl=True)
self.env = BuildEnvironment.frompickle(
path.join(self.outdir, ENV_PICKLE_FILENAME))
path.join(self.doctreedir, ENV_PICKLE_FILENAME))
self.msg('done', nobold=True)
except Exception, err:
self.msg('failed: %s' % err, nobold=True)
self.env = BuildEnvironment(self.srcdir,
path.join(self.outdir, '.doctrees'))
self.env = BuildEnvironment(self.srcdir, self.doctreedir)
else:
self.env = BuildEnvironment(self.srcdir,
path.join(self.outdir, '.doctrees'))
self.env = BuildEnvironment(self.srcdir, self.doctreedir)
def build_all(self):
"""Build all source files."""
@ -214,7 +214,7 @@ class Builder(object):
# save the environment
self.msg('pickling the env...', nonl=True)
self.env.topickle(path.join(self.outdir, ENV_PICKLE_FILENAME))
self.env.topickle(path.join(self.doctreedir, ENV_PICKLE_FILENAME))
self.msg('done', nobold=True)
# global actions