summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct6
-rwxr-xr-xbootstrap.py262
-rw-r--r--doc/SConscript7
-rw-r--r--doc/design/MANIFEST14
-rwxr-xr-xdoc/design/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--doc/man/MANIFEST7
-rwxr-xr-xdoc/man/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--doc/python10/MANIFEST9
-rw-r--r--doc/python10/builder.svg330
-rw-r--r--doc/reference/MANIFEST8
-rwxr-xr-xdoc/reference/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--doc/user/MANIFEST13
-rwxr-xr-xdoc/user/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--rpm/scons.spec.in2
-rw-r--r--src/CHANGES.txt6
-rw-r--r--src/engine/MANIFEST-xml.in109
-rw-r--r--src/engine/MANIFEST.in29
-rw-r--r--src/setup.py72
18 files changed, 606 insertions, 268 deletions
diff --git a/SConstruct b/SConstruct
index 8dce43b1..f2899473 100644
--- a/SConstruct
+++ b/SConstruct
@@ -42,6 +42,8 @@ import stat
import sys
import tempfile
+import bootstrap
+
project = 'scons'
default_version = '2.3.1.alpha.yyyymmdd'
copyright = "Copyright (c) %s The SCons Foundation" % copyright_years
@@ -755,7 +757,7 @@ for p in [ scons ]:
# destination files.
#
manifest_in = File(os.path.join(src, 'MANIFEST.in')).rstr()
- src_files = [x[:-1] for x in open(manifest_in).readlines()]
+ src_files = bootstrap.parseManifestLines(src, open(manifest_in).readlines())
raw_files = src_files[:]
dst_files = src_files[:]
rpm_files = []
@@ -774,7 +776,7 @@ for p in [ scons ]:
isubdir = p['subinst_dirs'][sp['pkg']]
MANIFEST_in = File(os.path.join(src, ssubdir, 'MANIFEST.in')).rstr()
MANIFEST_in_list.append(MANIFEST_in)
- files = [x[:-1] for x in open(MANIFEST_in).readlines()]
+ files = bootstrap.parseManifestLines(os.path.join(src, ssubdir), open(MANIFEST_in).readlines())
raw_files.extend(files)
src_files.extend([os.path.join(ssubdir, x) for x in files])
for f in files:
diff --git a/bootstrap.py b/bootstrap.py
index 0d1a3fc5..78a85b5f 100755
--- a/bootstrap.py
+++ b/bootstrap.py
@@ -25,6 +25,7 @@
import os
import os.path
import sys
+import glob
import subprocess
__doc__ = """bootstrap.py
@@ -71,112 +72,165 @@ the following SCons options:
"eaten" by the bootstrap.py script.
"""
-script_dir = os.path.abspath(os.path.dirname(__file__))
-
-bootstrap_dir = os.path.join(script_dir, 'bootstrap')
-
-pass_through_args = []
-update_only = None
-
-requires_an_argument = 'bootstrap.py: %s requires an argument\n'
-
-def must_copy(dst, src):
- if not os.path.exists(dst):
- return 1
- return open(dst, 'rb').read() != open(src, 'rb').read()
-
-search = [script_dir]
-
-# Note: We don't use the getopt module to process the command-line
-# arguments because we'd have to teach it about all of the SCons options.
-
-command_line_args = sys.argv[1:]
-
-while command_line_args:
- arg = command_line_args.pop(0)
-
- if arg == '--bootstrap_dir':
- try:
- bootstrap_dir = command_line_args.pop(0)
- except IndexError:
- sys.stderr.write(requires_an_argument % arg)
- sys.exit(1)
- elif arg[:16] == '--bootstrap_dir=':
- bootstrap_dir = arg[16:]
-
- elif arg == '--bootstrap_force':
- def must_copy(dst, src):
+def parseManifestLines(basedir, lines):
+ """ Scans the single lines of a MANIFEST file,
+ and returns the list of source files.
+ Has basic support for recursive globs '**',
+ filename wildcards of the form '*.xml' and
+ comment lines, starting with a '#'.
+ """
+ sources = []
+ oldwd = os.path.abspath(os.getcwd())
+ basewd = os.path.abspath(basedir)
+ os.chdir(basedir)
+ for l in lines:
+ if l.startswith('#'):
+ # Skip comments
+ continue
+ l = l.rstrip('\n')
+ if l.endswith('**'):
+ # Glob all files recursively
+ globwd, tail = os.path.split(l)
+ if globwd:
+ os.chdir(globwd)
+ for path, dirs, files in os.walk('.'):
+ for f in files:
+ if globwd:
+ fpath = os.path.join(globwd, path, f)
+ else:
+ fpath = os.path.join(path, f)
+ sources.append(os.path.normpath(fpath))
+ if globwd:
+ os.chdir(basewd)
+ elif '*' in l:
+ # Glob file pattern
+ globwd, tail = os.path.split(l)
+ if globwd:
+ os.chdir(globwd)
+ files = glob.glob(tail)
+ for f in files:
+ fpath = os.path.join(globwd, f)
+ sources.append(os.path.normpath(fpath))
+ os.chdir(basewd)
+ else:
+ sources.extend(glob.glob(tail))
+ else:
+ sources.append(l)
+ os.chdir(oldwd)
+
+ return sources
+
+def main():
+ script_dir = os.path.abspath(os.path.dirname(__file__))
+
+ bootstrap_dir = os.path.join(script_dir, 'bootstrap')
+
+ pass_through_args = []
+ update_only = None
+
+ requires_an_argument = 'bootstrap.py: %s requires an argument\n'
+
+ search = [script_dir]
+
+ def find(file, search=search):
+ for dir in search:
+ f = os.path.join(dir, file)
+ if os.path.exists(f):
+ return os.path.normpath(f)
+ sys.stderr.write("could not find `%s' in search path:\n" % file)
+ sys.stderr.write("\t" + "\n\t".join(search) + "\n")
+ sys.exit(2)
+
+ def must_copy(dst, src):
+ if not os.path.exists(dst):
return 1
-
- elif arg == '--bootstrap_src':
- try:
- search.insert(0, command_line_args.pop(0))
- except IndexError:
- sys.stderr.write(requires_an_argument % arg)
- sys.exit(1)
- elif arg[:16] == '--bootstrap_src=':
- search.insert(0, arg[16:])
-
- elif arg == '--bootstrap_update':
- update_only = 1
-
- elif arg in ('-C', '--directory'):
- try:
- dir = command_line_args.pop(0)
- except IndexError:
- sys.stderr.write(requires_an_argument % arg)
- sys.exit(1)
+ return open(dst, 'rb').read() != open(src, 'rb').read()
+
+ # Note: We don't use the getopt module to process the command-line
+ # arguments because we'd have to teach it about all of the SCons options.
+
+ command_line_args = sys.argv[1:]
+
+ while command_line_args:
+ arg = command_line_args.pop(0)
+
+ if arg == '--bootstrap_dir':
+ try:
+ bootstrap_dir = command_line_args.pop(0)
+ except IndexError:
+ sys.stderr.write(requires_an_argument % arg)
+ sys.exit(1)
+ elif arg[:16] == '--bootstrap_dir=':
+ bootstrap_dir = arg[16:]
+
+ elif arg == '--bootstrap_force':
+ def must_copy(dst, src):
+ return 1
+
+ elif arg == '--bootstrap_src':
+ try:
+ search.insert(0, command_line_args.pop(0))
+ except IndexError:
+ sys.stderr.write(requires_an_argument % arg)
+ sys.exit(1)
+ elif arg[:16] == '--bootstrap_src=':
+ search.insert(0, arg[16:])
+
+ elif arg == '--bootstrap_update':
+ update_only = 1
+
+ elif arg in ('-C', '--directory'):
+ try:
+ dir = command_line_args.pop(0)
+ except IndexError:
+ sys.stderr.write(requires_an_argument % arg)
+ sys.exit(1)
+ else:
+ os.chdir(dir)
+ elif arg[:2] == '-C':
+ os.chdir(arg[2:])
+ elif arg[:12] == '--directory=':
+ os.chdir(arg[12:])
+
else:
- os.chdir(dir)
- elif arg[:2] == '-C':
- os.chdir(arg[2:])
- elif arg[:12] == '--directory=':
- os.chdir(arg[12:])
-
- else:
- pass_through_args.append(arg)
-
-def find(file, search=search):
- for dir in search:
- f = os.path.join(dir, file)
- if os.path.exists(f):
- return os.path.normpath(f)
- sys.stderr.write("could not find `%s' in search path:\n" % file)
- sys.stderr.write("\t" + "\n\t".join(search) + "\n")
- sys.exit(2)
-
-scons_py = os.path.join('src', 'script', 'scons.py')
-src_engine = os.path.join('src', 'engine')
-MANIFEST_in = find(os.path.join(src_engine, 'MANIFEST.in'))
-
-files = [ scons_py ] + [os.path.join(src_engine, x[:-1])
- for x in open(MANIFEST_in).readlines()]
-
-for file in files:
- src = find(file)
- dst = os.path.join(bootstrap_dir, file)
- if must_copy(dst, src):
- dir = os.path.split(dst)[0]
- if not os.path.isdir(dir):
- os.makedirs(dir)
- try: os.unlink(dst)
- except: pass
- open(dst, 'wb').write( open(src, 'rb').read() )
-
-if update_only:
- sys.exit(0)
-
-args = [
- sys.executable,
- os.path.join(bootstrap_dir, scons_py)
- ] + pass_through_args
-
-sys.stdout.write(" ".join(args) + '\n')
-sys.stdout.flush()
-
-os.environ['SCONS_LIB_DIR'] = os.path.join(bootstrap_dir, src_engine)
-
-sys.exit(subprocess.Popen(args, env=os.environ).wait())
+ pass_through_args.append(arg)
+
+
+ scons_py = os.path.join('src', 'script', 'scons.py')
+ src_engine = os.path.join('src', 'engine')
+ MANIFEST_in = find(os.path.join(src_engine, 'MANIFEST.in'))
+
+ files = [ scons_py ] + [os.path.join(src_engine, x)
+ for x in parseManifestLines(src_engine, open(MANIFEST_in).readlines())]
+
+ for file in files:
+ src = find(file)
+ dst = os.path.join(bootstrap_dir, file)
+ if must_copy(dst, src):
+ dir = os.path.split(dst)[0]
+ if not os.path.isdir(dir):
+ os.makedirs(dir)
+ try: os.unlink(dst)
+ except: pass
+ open(dst, 'wb').write( open(src, 'rb').read() )
+
+ if update_only:
+ sys.exit(0)
+
+ args = [
+ sys.executable,
+ os.path.join(bootstrap_dir, scons_py)
+ ] + pass_through_args
+
+ sys.stdout.write(" ".join(args) + '\n')
+ sys.stdout.flush()
+
+ os.environ['SCONS_LIB_DIR'] = os.path.join(bootstrap_dir, src_engine)
+
+ sys.exit(subprocess.Popen(args, env=os.environ).wait())
+
+if __name__ == "__main__":
+ main()
# Local Variables:
# tab-width:4
diff --git a/doc/SConscript b/doc/SConscript
index 7c888d29..8dcf697c 100644
--- a/doc/SConscript
+++ b/doc/SConscript
@@ -30,6 +30,7 @@ import sys
import glob
import SConsDoc
import SConsExamples
+import bootstrap
Import('build_dir', 'env', 'whereis', 'revaction')
@@ -192,7 +193,7 @@ else:
# get included by the document XML files in the subdirectories.
#
manifest = File('MANIFEST').rstr()
- src_files = [x[:-1] for x in open(manifest).readlines()]
+ src_files = bootstrap.parseManifestLines('.', open(manifest).readlines())
for s in src_files:
if not s:
continue
@@ -217,7 +218,7 @@ else:
env.Execute(Mkdir(os.path.join(build, doc)))
env.Execute(Mkdir(os.path.join(build, doc, 'titlepage')))
manifest = File(os.path.join(doc, 'MANIFEST')).rstr()
- src_files = [x[:-1] for x in open(manifest).readlines()]
+ src_files = bootstrap.parseManifestLines(doc, open(manifest).readlines())
for s in src_files:
if not s:
continue
@@ -363,7 +364,7 @@ else:
# the SConstruct file.
e = os.path.join('#src', 'engine')
manifest_in = File(os.path.join(e, 'MANIFEST.in')).rstr()
- sources = [x[:-1] for x in open(manifest_in).readlines()]
+ sources = bootstrap.parseManifestLines(e, open(manifest_in).readlines())
sources = [x for x in sources if x.find('Platform') == -1]
sources = [x for x in sources if x.find('Tool') == -1]
# XXX
diff --git a/doc/design/MANIFEST b/doc/design/MANIFEST
index e93037f2..0168e112 100644
--- a/doc/design/MANIFEST
+++ b/doc/design/MANIFEST
@@ -1,9 +1,9 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
acks.xml
bground.xml
copyright.xml
-engine.fig
-engine.jpg
-engine.svg
engine.xml
goals.xml
install.xml
@@ -13,10 +13,10 @@ main.xml
native.xml
overview.xml
summary.xml
-chtml.xsl
-html.xsl
-pdf.xsl
-scons_title.xsl
+engine.fig
+engine.jpg
+engine.svg
+*.xsl
scons.css
SConstruct
titlepage/bricks.jpg
diff --git a/doc/design/titlepage/bricks.jpg b/doc/design/titlepage/bricks.jpg
new file mode 100755
index 00000000..b2dc16b3
--- /dev/null
+++ b/doc/design/titlepage/bricks.jpg
Binary files differ
diff --git a/doc/man/MANIFEST b/doc/man/MANIFEST
index 6c75f813..7f0ad45b 100644
--- a/doc/man/MANIFEST
+++ b/doc/man/MANIFEST
@@ -1,9 +1,10 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
scons.xml
sconsign.xml
scons-time.xml
-html.xsl
-pdf.xsl
-scons_title.xsl
+*.xsl
scons.css
SConstruct
titlepage/bricks.jpg
diff --git a/doc/man/titlepage/bricks.jpg b/doc/man/titlepage/bricks.jpg
new file mode 100755
index 00000000..b2dc16b3
--- /dev/null
+++ b/doc/man/titlepage/bricks.jpg
Binary files differ
diff --git a/doc/python10/MANIFEST b/doc/python10/MANIFEST
index 1be563bb..5703e363 100644
--- a/doc/python10/MANIFEST
+++ b/doc/python10/MANIFEST
@@ -1,15 +1,14 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
abstract.xml
acks.xml
-arch.fig
-builder.fig
+*.fig
copyright.xml
design.xml
future.xml
install.xml
intro.xml
-job-task.fig
main.xml
-node.fig
process.xml
-scanner.fig
summary.xml
diff --git a/doc/python10/builder.svg b/doc/python10/builder.svg
new file mode 100644
index 00000000..5648dd6b
--- /dev/null
+++ b/doc/python10/builder.svg
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(0.07462687,0,0,0.07462687,-106.34331,286.09351)"
+ id="g3006"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="1200"
+ id="rect3008"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="2400"
+ id="rect3010"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="3600"
+ id="rect3012"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="8400"
+ y="3600"
+ id="rect3014"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="3900"
+ y="4800"
+ id="rect3016"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="1800"
+ y="4800"
+ id="rect3018"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="6300"
+ y="4800"
+ id="rect3020"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="8400"
+ y="4800"
+ id="rect3022"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="10500"
+ y="4800"
+ id="rect3024"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="900"
+ y="2400"
+ id="rect3026"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3600,4200 3600,4200 3525,4350 3675,4350 "
+ id="polygon3028"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3030"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3150,4800 3150,4500 4050,4500 4050,4800 " />
+ <polyline
+ id="polyline3032"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3600,4350 3600,4500 " />
+ <polygon
+ points="9150,4200 9150,4200 9075,4350 9225,4350 "
+ id="polygon3034"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3036"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="7050,4800 7050,4500 10950,4500 10950,4800 " />
+ <polyline
+ id="polyline3038"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="9150,4350 9150,4800 " />
+ <polyline
+ id="polyline3040"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="11550,4650 11550,3900 10019,3900 " />
+ <polygon
+ points="10021,3870 10021,3870 9901,3900 10021,3930 "
+ id="polygon3042"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3044"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4650,3900 8280,3900 " />
+ <polygon
+ points="8279,3930 8279,3930 8399,3900 8279,3870 "
+ id="polygon3046"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3048"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3900,2250 3900,1919 " />
+ <polygon
+ points="3930,1921 3930,1921 3900,1801 3870,1921 "
+ id="polygon3050"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3052"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3300,1950 3300,2280 " />
+ <polygon
+ points="3270,2279 3270,2279 3300,2399 3330,2279 "
+ id="polygon3054"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3056"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3600,3150 3600,3480 " />
+ <polygon
+ points="3570,3479 3570,3479 3600,3599 3630,3479 "
+ id="polygon3058"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3060"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4350,4650 4350,4319 " />
+ <polygon
+ points="4380,4321 4380,4321 4350,4201 4320,4321 "
+ id="polygon3062"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3064"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="2850,4650 2850,4319 " />
+ <polygon
+ points="2880,4321 2880,4321 2850,4201 2820,4321 "
+ id="polygon3066"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3068"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="1500,3150 1500,3900 2580,3900 " />
+ <polygon
+ points="2579,3930 2579,3930 2699,3900 2579,3870 "
+ id="polygon3070"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polygon
+ points="4575,3940 4650,3900 4650,3900 4575,3860 4500,3900 "
+ id="polygon3072"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="1540,3075 1500,3000 1500,3000 1460,3075 1500,3150 "
+ id="polygon3074"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3640,3075 3600,3000 3600,3000 3560,3075 3600,3150 "
+ id="polygon3076"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3340,1875 3300,1800 3300,1800 3260,1875 3300,1950 "
+ id="polygon3078"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3940,2325 3900,2250 3900,2250 3860,2325 3900,2400 "
+ id="polygon3080"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="4390,4725 4350,4650 4350,4650 4310,4725 4350,4800 "
+ id="polygon3082"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="2890,4725 2850,4650 2850,4650 2810,4725 2850,4800 "
+ id="polygon3084"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="11590,4725 11550,4650 11550,4650 11510,4725 11550,4800 "
+ id="polygon3086"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3088"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="3600,1200 3600,900 " />
+ <text
+ x="2925"
+ y="1575"
+ id="text3090"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Environment</text>
+ <text
+ x="3600"
+ y="2775"
+ id="text3092"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">BuilderWrapper</text>
+ <text
+ x="3600"
+ y="3975"
+ id="text3094"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">BuilderBase</text>
+ <text
+ x="9150"
+ y="3975"
+ id="text3096"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">ActionBase</text>
+ <text
+ x="4650"
+ y="5175"
+ id="text3098"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">MultiStep-</text>
+ <text
+ x="4650"
+ y="5460"
+ id="text3100"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Builder</text>
+ <text
+ x="2550"
+ y="5175"
+ id="text3102"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Composite-</text>
+ <text
+ x="2550"
+ y="5460"
+ id="text3104"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Builder</text>
+ <text
+ x="7050"
+ y="5175"
+ id="text3106"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Command</text>
+ <text
+ x="7050"
+ y="5460"
+ id="text3108"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Action</text>
+ <text
+ x="9150"
+ y="5460"
+ id="text3110"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Action</text>
+ <text
+ x="9150"
+ y="5175"
+ id="text3112"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Function</text>
+ <text
+ x="11250"
+ y="5175"
+ id="text3114"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">List</text>
+ <text
+ x="11250"
+ y="5460"
+ id="text3116"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Action</text>
+ <text
+ x="1500"
+ y="2775"
+ id="text3118"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Node</text>
+ </g>
+ </g>
+</svg>
diff --git a/doc/reference/MANIFEST b/doc/reference/MANIFEST
index a4a0c8f6..921a4de6 100644
--- a/doc/reference/MANIFEST
+++ b/doc/reference/MANIFEST
@@ -1,3 +1,6 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
Alias.xml
CFile.xml
CXXFile.xml
@@ -19,10 +22,7 @@ copyright.xml
errors.xml
main.xml
preface.xml
-chtml.xsl
-html.xsl
-pdf.xsl
-scons_title.xsl
+*.xsl
scons.css
SConstruct
titlepage/bricks.jpg
diff --git a/doc/reference/titlepage/bricks.jpg b/doc/reference/titlepage/bricks.jpg
new file mode 100755
index 00000000..b2dc16b3
--- /dev/null
+++ b/doc/reference/titlepage/bricks.jpg
Binary files differ
diff --git a/doc/user/MANIFEST b/doc/user/MANIFEST
index 8eb4ea13..e5f8988f 100644
--- a/doc/user/MANIFEST
+++ b/doc/user/MANIFEST
@@ -1,3 +1,6 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
actions.xml
add-method.xml
alias.xml
@@ -46,14 +49,8 @@ tools.xml
troubleshoot.xml
variants.xml
variables.xml
-SCons-win32-install-1.jpg
-SCons-win32-install-2.jpg
-SCons-win32-install-3.jpg
-SCons-win32-install-4.jpg
-chtml.xsl
-html.xsl
-pdf.xsl
-scons_title.xsl
+*.jpg
+*.xsl
scons.css
SConstruct
titlepage/bricks.jpg
diff --git a/doc/user/titlepage/bricks.jpg b/doc/user/titlepage/bricks.jpg
new file mode 100755
index 00000000..b2dc16b3
--- /dev/null
+++ b/doc/user/titlepage/bricks.jpg
Binary files differ
diff --git a/rpm/scons.spec.in b/rpm/scons.spec.in
index 4d2dd12c..312eb44c 100644
--- a/rpm/scons.spec.in
+++ b/rpm/scons.spec.in
@@ -41,7 +41,7 @@ defined Builder and/or Scanner objects.
python setup.py build
%install
-python setup.py install --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES --install-lib=/usr/lib/scons --install-scripts=/usr/bin --install-data=/usr/share
+python setup.py install --root=$RPM_BUILD_ROOT --install-lib=/usr/lib/scons --install-scripts=/usr/bin --install-data=/usr/share
%clean
rm -rf $RPM_BUILD_ROOT
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index e2f5e09b..3494cfd0 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -20,6 +20,12 @@ RELEASE 2.3.1.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE
From Philipp Kraus:
- Added optional ZIPROOT to Zip tool.
+ From Dirk Baechle:
+ - Replaced old SGML-based documentation toolchain with a more modern
+ approach, that also requires less external dependencies (programs and
+ Python packages). Added a customized Docbook XSD for strict validation of
+ all input XML files.
+
RELEASE 2.3.0 - Mon, 02 Mar 2013 13:22:29 -0400
From Anatoly Techtonik:
diff --git a/src/engine/MANIFEST-xml.in b/src/engine/MANIFEST-xml.in
index 920a6035..a657734f 100644
--- a/src/engine/MANIFEST-xml.in
+++ b/src/engine/MANIFEST-xml.in
@@ -1,108 +1,7 @@
-SCons/Action.xml
-SCons/Defaults.xml
-SCons/Environment.xml
-SCons/Platform/__init__.xml
-SCons/Platform/posix.xml
-SCons/Platform/sunos.xml
-SCons/Platform/win32.xml
+SCons/*.xml
+SCons/Platform/*.xml
SCons/Scanner/__init__.xml
-SCons/Script/Main.xml
-SCons/Script/SConscript.xml
-SCons/Subst.xml
-SCons/Tool/386asm.xml
-SCons/Tool/BitKeeper.xml
-SCons/Tool/CVS.xml
-SCons/Tool/Perforce.xml
-SCons/Tool/RCS.xml
-SCons/Tool/SCCS.xml
-SCons/Tool/Subversion.xml
-SCons/Tool/__init__.xml
-SCons/Tool/aixc++.xml
-SCons/Tool/aixcc.xml
-SCons/Tool/aixf77.xml
-SCons/Tool/aixlink.xml
-SCons/Tool/applelink.xml
-SCons/Tool/ar.xml
-SCons/Tool/as.xml
-SCons/Tool/bcc32.xml
-SCons/Tool/c++.xml
-SCons/Tool/cc.xml
-SCons/Tool/cvf.xml
-SCons/Tool/default.xml
-SCons/Tool/dmd.xml
+SCons/Script/*.xml
+SCons/Tool/*.xml
SCons/Tool/docbook/__init__.xml
-SCons/Tool/dvi.xml
-SCons/Tool/dvipdf.xml
-SCons/Tool/dvips.xml
-SCons/Tool/f77.xml
-SCons/Tool/f90.xml
-SCons/Tool/f95.xml
-SCons/Tool/fortran.xml
-SCons/Tool/g++.xml
-SCons/Tool/g77.xml
-SCons/Tool/gas.xml
-SCons/Tool/gcc.xml
-SCons/Tool/gfortran.xml
-SCons/Tool/gnulink.xml
-SCons/Tool/gs.xml
-SCons/Tool/hpc++.xml
-SCons/Tool/hpcc.xml
-SCons/Tool/hplink.xml
-SCons/Tool/icc.xml
-SCons/Tool/icl.xml
-SCons/Tool/ifl.xml
-SCons/Tool/ifort.xml
-SCons/Tool/ilink.xml
-SCons/Tool/ilink32.xml
-SCons/Tool/install.xml
-SCons/Tool/intelc.xml
-SCons/Tool/jar.xml
-SCons/Tool/javac.xml
-SCons/Tool/javah.xml
-SCons/Tool/latex.xml
-SCons/Tool/lex.xml
-SCons/Tool/link.xml
-SCons/Tool/linkloc.xml
-SCons/Tool/m4.xml
-SCons/Tool/masm.xml
-SCons/Tool/midl.xml
-SCons/Tool/mingw.xml
-SCons/Tool/mslib.xml
-SCons/Tool/mslink.xml
-SCons/Tool/mssdk.xml
-SCons/Tool/msvc.xml
-SCons/Tool/msvs.xml
-SCons/Tool/mwcc.xml
-SCons/Tool/mwld.xml
-SCons/Tool/nasm.xml
-SCons/Tool/packaging.xml
SCons/Tool/packaging/__init__.xml
-SCons/Tool/pdf.xml
-SCons/Tool/pdflatex.xml
-SCons/Tool/pdftex.xml
-SCons/Tool/qt.xml
-SCons/Tool/rmic.xml
-SCons/Tool/rpcgen.xml
-SCons/Tool/sgiar.xml
-SCons/Tool/sgic++.xml
-SCons/Tool/sgicc.xml
-SCons/Tool/sgilink.xml
-SCons/Tool/sunar.xml
-SCons/Tool/sunc++.xml
-SCons/Tool/suncc.xml
-SCons/Tool/sunf77.xml
-SCons/Tool/sunf90.xml
-SCons/Tool/sunf95.xml
-SCons/Tool/sunlink.xml
-SCons/Tool/swig.xml
-SCons/Tool/tar.xml
-SCons/Tool/tex.xml
-SCons/Tool/textfile.xml
-SCons/Tool/tlib.xml
-SCons/Tool/yacc.xml
-SCons/Tool/zip.xml
-SCons/Tool/gettext.xml
-SCons/Tool/msgfmt.xml
-SCons/Tool/msginit.xml
-SCons/Tool/msgmerge.xml
-SCons/Tool/xgettext.xml
diff --git a/src/engine/MANIFEST.in b/src/engine/MANIFEST.in
index 7d3999a3..5e7627f7 100644
--- a/src/engine/MANIFEST.in
+++ b/src/engine/MANIFEST.in
@@ -1,14 +1,7 @@
SCons/__init__.py
SCons/Action.py
SCons/Builder.py
-SCons/compat/__init__.py
-SCons/compat/_scons_builtins.py
-SCons/compat/_scons_collections.py
-SCons/compat/_scons_dbm.py
-SCons/compat/_scons_hashlib.py
-SCons/compat/_scons_io.py
-SCons/compat/_scons_sets.py
-SCons/compat/_scons_subprocess.py
+SCons/compat/*.py
SCons/CacheDir.py
SCons/Conftest.py
SCons/cpp.py
@@ -25,12 +18,7 @@ SCons/Node/__init__.py
SCons/Node/Alias.py
SCons/Node/FS.py
SCons/Node/Python.py
-SCons/Options/__init__.py
-SCons/Options/BoolOption.py
-SCons/Options/EnumOption.py
-SCons/Options/ListOption.py
-SCons/Options/PackageOption.py
-SCons/Options/PathOption.py
+SCons/Options/*.py
SCons/PathList.py
SCons/Platform/__init__.py
SCons/Platform/aix.py
@@ -78,7 +66,7 @@ SCons/Tool/cvf.py
SCons/Tool/CVS.py
SCons/Tool/default.py
SCons/Tool/dmd.py
-SCons/Tool/docbook/__init__.xml
+SCons/Tool/docbook/__init__.py
SCons/Tool/dvi.py
SCons/Tool/dvipdf.py
SCons/Tool/dvips.py
@@ -135,16 +123,7 @@ SCons/Tool/msvs.py
SCons/Tool/mwcc.py
SCons/Tool/mwld.py
SCons/Tool/nasm.py
-SCons/Tool/packaging/__init__.py
-SCons/Tool/packaging/ipk.py
-SCons/Tool/packaging/msi.py
-SCons/Tool/packaging/rpm.py
-SCons/Tool/packaging/src_tarbz2.py
-SCons/Tool/packaging/src_targz.py
-SCons/Tool/packaging/src_zip.py
-SCons/Tool/packaging/tarbz2.py
-SCons/Tool/packaging/targz.py
-SCons/Tool/packaging/zip.py
+SCons/Tool/packaging/*.py
SCons/Tool/pdf.py
SCons/Tool/pdflatex.py
SCons/Tool/pdftex.py
diff --git a/src/setup.py b/src/setup.py
index 90373372..a8b59a32 100644
--- a/src/setup.py
+++ b/src/setup.py
@@ -408,11 +408,81 @@ arguments = {
"SCons.Scanner",
"SCons.Script",
"SCons.Tool",
+ "SCons.Tool.docbook",
"SCons.Tool.MSCommon",
"SCons.Tool.packaging",
"SCons.Variables",
],
- 'package_dir' : {'' : 'engine'},
+ 'package_dir' : {'' : 'engine',
+ 'SCons.Tool.docbook' : 'engine/SCons/Tool/docbook'},
+ 'package_data' : {'SCons.Tool.docbook' : ['docbook-xsl-1.76.1/*',
+ 'docbook-xsl-1.76.1/common/*',
+ 'docbook-xsl-1.76.1/docsrc/*',
+ 'docbook-xsl-1.76.1/eclipse/*',
+ 'docbook-xsl-1.76.1/epub/*',
+ 'docbook-xsl-1.76.1/epub/bin/*',
+ 'docbook-xsl-1.76.1/epub/bin/lib/*',
+ 'docbook-xsl-1.76.1/epub/bin/xslt/*',
+ 'docbook-xsl-1.76.1/extensions/*',
+ 'docbook-xsl-1.76.1/fo/*',
+ 'docbook-xsl-1.76.1/highlighting/*',
+ 'docbook-xsl-1.76.1/html/*',
+ 'docbook-xsl-1.76.1/htmlhelp/*',
+ 'docbook-xsl-1.76.1/images/*',
+ 'docbook-xsl-1.76.1/images/callouts/*',
+ 'docbook-xsl-1.76.1/images/colorsvg/*',
+ 'docbook-xsl-1.76.1/javahelp/*',
+ 'docbook-xsl-1.76.1/lib/*',
+ 'docbook-xsl-1.76.1/manpages/*',
+ 'docbook-xsl-1.76.1/params/*',
+ 'docbook-xsl-1.76.1/profiling/*',
+ 'docbook-xsl-1.76.1/roundtrip/*',
+ 'docbook-xsl-1.76.1/slides/browser/*',
+ 'docbook-xsl-1.76.1/slides/fo/*',
+ 'docbook-xsl-1.76.1/slides/graphics/*',
+ 'docbook-xsl-1.76.1/slides/graphics/active/*',
+ 'docbook-xsl-1.76.1/slides/graphics/inactive/*',
+ 'docbook-xsl-1.76.1/slides/graphics/toc/*',
+ 'docbook-xsl-1.76.1/slides/html/*',
+ 'docbook-xsl-1.76.1/slides/htmlhelp/*',
+ 'docbook-xsl-1.76.1/slides/keynote/*',
+ 'docbook-xsl-1.76.1/slides/keynote/xsltsl/*',
+ 'docbook-xsl-1.76.1/slides/svg/*',
+ 'docbook-xsl-1.76.1/slides/xhtml/*',
+ 'docbook-xsl-1.76.1/template/*',
+ 'docbook-xsl-1.76.1/tests/*',
+ 'docbook-xsl-1.76.1/tools/bin/*',
+ 'docbook-xsl-1.76.1/tools/make/*',
+ 'docbook-xsl-1.76.1/webhelp/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/css/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/images/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/images/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/images/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/content/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/content/search/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/*',
+ 'docbook-xsl-1.76.1/webhelp/docsrc/*',
+ 'docbook-xsl-1.76.1/webhelp/template/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/css/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/images/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/images/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/images/*',
+ 'docbook-xsl-1.76.1/webhelp/template/content/search/*',
+ 'docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/*',
+ 'docbook-xsl-1.76.1/webhelp/xsl/*',
+ 'docbook-xsl-1.76.1/website/*',
+ 'docbook-xsl-1.76.1/xhtml/*',
+ 'docbook-xsl-1.76.1/xhtml-1_1/*',
+ 'utils/*']},
'data_files' : [('man/man1', man_pages)],
'scripts' : scripts,
'cmdclass' : {'install' : install,