From 0947775a51fa7bdb446b40c08f417fe6ce1ebbdc Mon Sep 17 00:00:00 2001 From: Dirk Baechle Date: Sat, 4 May 2013 01:15:51 +0200 Subject: - relinked the build of all documentation outputs to the bootstrap process - corrected the doc folder SConscripts and added XSL and titlepage files where required --- SConstruct | 14 +- bin/scons-proc.py | 18 +- bin/scons_dev_master.py | 15 +- doc/SConscript | 547 +- doc/design/MANIFEST | 11 + doc/design/SConstruct | 12 +- doc/design/chtml.xsl | 56 + doc/design/engine.svg | 529 ++ doc/design/html.xsl | 55 + doc/design/main.xml | 6 +- doc/design/overview.xml | 20 +- doc/design/pdf.xsl | 71 + doc/design/scons.css | 263 + doc/design/scons_title.xsl | 6352 ++++++++++++++++++ doc/design/titlepage/SConsBuildBricks_path.svg | 320 + doc/design/titlepage/SCons_path.svg | 196 + doc/design/titlepage/mapnik_final_colors.svg | 6397 ++++++++++++++++++ doc/developer/SConstruct | 3 +- doc/generated/functions.gen | 412 +- doc/man/MANIFEST | 11 + doc/man/SConstruct | 17 +- doc/man/html.xsl | 2 +- doc/man/pdf.xsl | 71 + doc/man/scons-time.xml | 4 +- doc/man/scons.xml | 298 +- doc/man/scons_title.xsl | 6517 ++++++++++++++++++ doc/man/titlepage/SConsBuildBricks_path.svg | 320 + doc/man/titlepage/SCons_path.svg | 196 + doc/man/titlepage/mapnik_final_colors.svg | 6397 ++++++++++++++++++ doc/python10/SConstruct | 3 +- doc/python10/design.xml | 30 +- doc/reference/MANIFEST | 10 + doc/reference/SConstruct | 13 +- doc/reference/chtml.xsl | 56 + doc/reference/html.xsl | 55 + doc/reference/main.xml | 7 +- doc/reference/pdf.xsl | 71 + doc/reference/scons.css | 263 + doc/reference/scons_title.xsl | 6352 ++++++++++++++++++ doc/reference/titlepage/SConsBuildBricks_path.svg | 320 + doc/reference/titlepage/SCons_path.svg | 196 + doc/reference/titlepage/mapnik_final_colors.svg | 6397 ++++++++++++++++++ doc/user/MANIFEST | 10 + doc/user/SConstruct | 10 +- doc/user/chtml.xsl | 56 + doc/user/main.xml | 5 +- doc/user/titlepage/SConsBuildBricks_path.svg | 4 +- doc/user/titlepage/SCons_path.svg | 25 +- doc/user/titlepage/mapnik_final_colors.svg | 7462 ++++++++++++++++++--- src/engine/SCons/Tool/docbook/__init__.py | 19 +- 50 files changed, 48680 insertions(+), 1814 deletions(-) create mode 100644 doc/design/chtml.xsl create mode 100644 doc/design/engine.svg create mode 100644 doc/design/html.xsl create mode 100644 doc/design/pdf.xsl create mode 100644 doc/design/scons.css create mode 100644 doc/design/scons_title.xsl create mode 100644 doc/design/titlepage/SConsBuildBricks_path.svg create mode 100644 doc/design/titlepage/SCons_path.svg create mode 100644 doc/design/titlepage/mapnik_final_colors.svg create mode 100644 doc/man/pdf.xsl create mode 100644 doc/man/scons_title.xsl create mode 100644 doc/man/titlepage/SConsBuildBricks_path.svg create mode 100644 doc/man/titlepage/SCons_path.svg create mode 100644 doc/man/titlepage/mapnik_final_colors.svg create mode 100644 doc/reference/chtml.xsl create mode 100644 doc/reference/html.xsl create mode 100644 doc/reference/pdf.xsl create mode 100644 doc/reference/scons.css create mode 100644 doc/reference/scons_title.xsl create mode 100644 doc/reference/titlepage/SConsBuildBricks_path.svg create mode 100644 doc/reference/titlepage/SCons_path.svg create mode 100644 doc/reference/titlepage/mapnik_final_colors.svg create mode 100644 doc/user/chtml.xsl diff --git a/SConstruct b/SConstruct index 64ac9fd..8dce43b 100644 --- a/SConstruct +++ b/SConstruct @@ -168,6 +168,17 @@ if build_id is None: python_ver = sys.version[0:3] +# +# Adding some paths to sys.path, this is mainly needed +# for the doc toolchain. +# +addpaths = [os.path.abspath(os.path.join(os.getcwd(), 'bin')), + os.path.abspath(os.path.join(os.getcwd(), 'QMTest'))] +for a in addpaths: + if a not in sys.path: + sys.path.append(a) + + # Re-exporting LD_LIBRARY_PATH is necessary if the Python version was # built with the --enable-shared option. @@ -375,6 +386,7 @@ def SCons_revision(target, source, env): open(t, 'wb').write(contents) os.chmod(t, os.stat(s)[0]) +revaction = SCons_revision revbuilder = Builder(action = Action(SCons_revision, varlist=['COPYRIGHT', 'VERSION'])) @@ -1179,7 +1191,7 @@ for file in files: # # Documentation. # -Export('build_dir', 'env', 'whereis') +Export('build_dir', 'env', 'whereis', 'revaction') SConscript('doc/SConscript') diff --git a/bin/scons-proc.py b/bin/scons-proc.py index 5be1f00..9567db8 100644 --- a/bin/scons-proc.py +++ b/bin/scons-proc.py @@ -267,29 +267,35 @@ class Function(SConsThing): prefix = 'f-' tag = 'function' - def xml_term(self): + def xml_terms(self): if self.arguments is None: a = stf.newNode("arguments") stf.setText(a, '()') arguments = [a] else: - arguments = self.arguments - t = stf.newNode("term") + arguments = self.arguments + tlist = [] for arg in arguments: signature = 'both' if stf.hasAttribute(arg, 'signature'): signature = stf.getAttribute(arg, 'signature') s = stf.getText(arg).strip() if signature in ('both', 'global'): - syn = stf.newNode("synopsis") + t = stf.newNode("term") + syn = stf.newNode("literal") stf.setText(syn, '%s%s' % (self.name, s)) stf.appendNode(t, syn) + tlist.append(t) if signature in ('both', 'env'): - syn = stf.newNode("synopsis") + t = stf.newNode("term") + syn = stf.newNode("literal") stf.setText(syn, 'env.%s%s' % (self.name, s)) stf.appendNode(t, syn) + tlist.append(t) - return t + if not tlist: + tlist.append(stf.newNode("term")) + return tlist def entityfunc(self): return self.name diff --git a/bin/scons_dev_master.py b/bin/scons_dev_master.py index 9372df4..3c41ac0 100644 --- a/bin/scons_dev_master.py +++ b/bin/scons_dev_master.py @@ -25,19 +25,14 @@ PYTHON_PACKAGES = [ ] BUILDING_PACKAGES = [ - 'docbook', - 'docbook-dsssl', - 'docbook-utils', - 'docbook-xml', - 'groff-base', - 'jade', - 'jadetex', - 'man2html', + 'python-libxml2', + 'python-libxslt1', + 'fop', + 'python-dev', 'python-epydoc', 'rpm', - 'sp', 'tar', - + # additional packages that Bill Deegan's web page suggests #'docbook-to-man', #'docbook-xsl', diff --git a/doc/SConscript b/doc/SConscript index 9f7dacd..7c888d2 100644 --- a/doc/SConscript +++ b/doc/SConscript @@ -26,103 +26,35 @@ import os.path import re +import sys +import glob +import SConsDoc +import SConsExamples -Import('build_dir', 'env', 'whereis') +Import('build_dir', 'env', 'whereis', 'revaction') env = env.Clone() build = os.path.join(build_dir, 'doc') +fop = whereis('fop') +xep = whereis('xep') +epydoc_cli = whereis('epydoc') + # # # dist_doc_tar_gz = '$DISTDIR/scons-doc-${VERSION}.tar.gz' -# -# We'll only try to build text files (for some documents) -# if lynx is available to do the dump. -# -fig2dev = whereis('fig2dev') -epydoc_cli = whereis('epydoc') -groff = whereis('groff') -lynx = whereis('lynx') -man2html = whereis('man2html') -jade_original = whereis('jade') -jade = whereis('openjade') or jade_original -jadetex = whereis('jadetex') -pdfjadetex = whereis('pdfjadetex') -jw = whereis('jw') -tidy = whereis('tidy') - tar_deps = [] tar_list = [] -entity_re = re.compile(r'', re.I) -format_re = re.compile(r'<(?:graphic|imagedata)\s+fileref="([^"]*)"(?:\s+format="([^"]*)")?') - -# -# Find internal dependencies in .xml files: -# -# -# -# -# -# This only finds one per line, and assumes that anything -# defined as a SYSTEM entity is, in fact, a file included -# somewhere in the document. -# -def scanxml(node, env, target): - includes = [] - - contents = node.get_text_contents() - - includes.extend(entity_re.findall(contents)) - - matches = format_re.findall(contents) - for m in matches: - file, format = m - if format and file[-len(format):] != format: - file = file + '.' + format - if not os.path.isabs(file): - a = [] - f = file - while f: - f, tail = os.path.split(f) - if tail == 'doc': - break - a = [tail] + a - file = os.path.join(*a) - includes.append(file) - - return includes - -s = Scanner(name = 'xml', function = scanxml, skeys = ['.xml', '.mod']) - orig_env = env -env = orig_env.Clone(SCANNERS = [s], - SCONS_DOC_PY = File('#bin/scons-doc.py').rfile(), - SCONS_PROC_PY = File('#bin/scons-proc.py').rfile()) +env = orig_env.Clone(SCONS_PY = File('#src/script/scons.py').rfile()) -# Fetch the list of files in the build engine that contain -# SCons documentation XML for processing. -def chop(s): return s[:-1] -manifest_xml_in = File('#src/engine/MANIFEST-xml.in').rstr() -scons_doc_files = list(map(chop, open(manifest_xml_in).readlines())) -scons_doc_files = [File('#src/engine/'+x).rstr() for x in scons_doc_files] - -if not jw: - print "doc: jw not found, skipping building User Guide." -else: - # - # Always create a version.xml file containing the version information - # for this run. Ignore it for dependency purposes so we don't - # rebuild all the docs every time just because the date changes. - # - date, ver, rev = env.Dictionary('DATE', 'VERSION', 'REVISION') - version_xml = File(os.path.join(build, "version.xml")) - #version_xml = File("version.xml") - verfile = str(version_xml) +def writeVersionXml(verfile, date, ver, rev): + """ Helper function: Write a version.xml file. """ try: os.unlink(verfile) except OSError: @@ -131,7 +63,7 @@ else: try: os.makedirs(dir) except OSError: - pass # okay if the directory already exists + pass # okay if the directory already exists open(verfile, "w").write(""" @@ -140,93 +72,121 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. """ % (date, ver, rev)) - builders_gen = os.path.join(build, 'user', 'builders.gen') - builders_mod = os.path.join(build, 'user', 'builders.mod') - functions_gen = os.path.join(build, 'user', 'functions.gen') - functions_mod = os.path.join(build, 'user', 'functions.mod') - tools_gen = os.path.join(build, 'user', 'tools.gen') - tools_mod = os.path.join(build, 'user', 'tools.mod') - variables_gen = os.path.join(build, 'user', 'variables.gen') - variables_mod = os.path.join(build, 'user', 'variables.mod') - - # We put $( - $) around $SOURCES in the command line below because - # the path names will change when a given input file is found in - # a repository one run and locally the next, and we don't want - # to rebuild documentation just because it's found in one location - # vs. the other. The *.gen and *.mod targets will still be dependent - # on the list of the files themselves. - doc_output_files = [builders_gen, builders_mod, - functions_gen, functions_mod, - tools_gen, tools_mod, - variables_gen, variables_mod] - b = env.Command(doc_output_files, - scons_doc_files, - "$PYTHON $SCONS_PROC_PY --xml -b ${TARGETS[0]},${TARGETS[1]} -f ${TARGETS[2]},${TARGETS[3]} -t ${TARGETS[4]},${TARGETS[5]} -v ${TARGETS[6]},${TARGETS[7]} $( $SOURCES $)") - env.Depends(b, "$SCONS_PROC_PY") - - env.Local(b) +# +# Check whether we have all tools installed for +# building the documentation. +# +skip_doc = False +try: + import libxml2 +except: + try: + import lxml + except: + print "doc: Neither libxml2 nor lxml Python bindings found!" + print " Please install one of the packages python-libxml2 or python-lxml." + skip_doc = True + +if not fop and not xep: + print "doc: No PDF renderer found (fop|xep)!" + skip_doc = True + +if skip_doc: + print "doc: ...skipping building User Guide." +else: + # + # Always create a version.xml file containing the version information + # for this run. Ignore it for dependency purposes so we don't + # rebuild all the docs every time just because the date changes. + # + date, ver, rev = env.Dictionary('DATE', 'VERSION', 'REVISION') + version_xml = File(os.path.join(build, "version.xml")) + writeVersionXml(str(version_xml), date, ver, rev) + + if not env.GetOption('clean'): + # + # Ensure that all XML files are valid against our XSD, and + # that all example names and example output suffixes are unique + # + print "Validating files against SCons XSD..." + if SConsDoc.validate_all_xml(['src'], xsdfile='xsd/scons.xsd'): + print "OK" + else: + print "Validation failed! Please correct the errors above and try again." + sys.exit(0) + + print "Checking whether all example names are unique..." + if SConsExamples.exampleNamesAreUnique(os.path.join('doc','user')): + print "OK" + else: + print "Not all example names and suffixes are unique! Please correct the errors listed above and try again." + sys.exit(0) + + # + # Copy generated files (.gen/.mod/.xml) to the build folder + # + env.Execute(Mkdir(os.path.join(build, 'generated'))) + env.Execute(Mkdir(os.path.join(build, 'generated', 'examples'))) + for g in glob.glob(os.path.join('generated', '*.gen')): + env.Execute(Copy(os.path.join(build, 'generated'), g)) + for g in glob.glob(os.path.join('generated', '*.mod')): + env.Execute(Copy(os.path.join(build, 'generated'), g)) + for g in glob.glob(os.path.join('generated', 'examples', '*')): + env.Execute(Copy(os.path.join(build, 'generated', 'examples'), g)) + + # + # Copy XSLT files (.xslt) to the build folder + # + env.Execute(Mkdir(os.path.join(build, 'xslt'))) + for g in glob.glob(os.path.join('xslt','*.*')): + env.Execute(Copy(os.path.join(build, 'xslt'), g)) + + # + # Copy Docbook stylesheets and Tool to the build folder + # + dbtoolpath = ['src', 'engine', 'SCons', 'Tool', 'docbook'] + env.Execute(Mkdir(os.path.join(build_dir, *dbtoolpath))) + env.Execute(Mkdir(os.path.join(build_dir, *(dbtoolpath + ['utils'])))) + env.Execute(Copy(os.path.join(build_dir, *dbtoolpath), + os.path.join('..', *(dbtoolpath + ['__init__.py'])))) + env.Execute(Copy(os.path.join(build_dir, *(dbtoolpath + ['utils'])), + os.path.join('..', *(dbtoolpath + ['utils', 'xmldepend.xsl'])))) + dbpath = dbtoolpath + ['docbook-xsl-1.76.1'] + env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['common'])))) + env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['lib'])))) + env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['html'])))) + env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['fo'])))) + env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['manpages'])))) + env.Execute(Copy(os.path.join(build_dir, *dbpath), + os.path.join('..', *(dbpath + ['VERSION'])))) + for g in glob.glob(os.path.join('..', *(dbpath + ['common', '*.*']))): + env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['common'])), g)) + for g in glob.glob(os.path.join('..', *(dbpath + ['lib', '*.*']))): + env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['lib'])), g)) + for g in glob.glob(os.path.join('..', *(dbpath + ['html', '*.*']))): + env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['html'])), g)) + for g in glob.glob(os.path.join('..', *(dbpath + ['fo', '*.*']))): + env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['fo'])), g)) + for g in glob.glob(os.path.join('..', *(dbpath + ['manpages', '*.*']))): + env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['manpages'])), g)) # # Each document will live in its own subdirectory. List them here - # as hash keys, with a hash of the info to control its build. + # by their subfolder names. Note, how the specifiers for each subdir + # have nothing to do with which formats get created...but which + # of the outputs get installed to the build folder and added to + # the different source and binary packages in the end. # - docs = { - 'design' : { - 'htmlindex' : 'book1.html', - 'ps' : 1, - 'pdf' : 1, - 'text' : 0, - }, - # This doesn't build on all systems, and the document is old - # enough that there's reallyno need to build it every time any - # more, so just comment it out for now. - #'python10' : { - # 'htmlindex' : 't1.html', - # 'html' : 1, - # 'ps' : 1, - # 'pdf' : 0, - # 'text' : 0, - # 'graphics' : [ - # 'arch.fig', - # 'builder.fig', - # 'job-task.fig', - # 'node.fig', - # 'scanner.fig', - # 'sig.fig' - # ], - #}, - 'reference' : { - 'htmlindex' : 'book1.html', - 'html' : 1, - 'ps' : 1, - 'pdf' : 1, - 'text' : 0, - }, - # For whenever (if ever?) we start putting developer guide - # information in a printable document instead of the wiki. - #'developer' : { - # 'htmlindex' : 'book1.html', - # 'html' : 1, - # 'ps' : 1, - # 'pdf' : 1, - # 'text' : 0, - #}, - 'user' : { - 'htmlindex' : 'book1.html', - 'html' : 1, - 'ps' : 1, - 'pdf' : 1, - 'text' : 1, - 'graphics' : [ - 'SCons-win32-install-1.jpg', - 'SCons-win32-install-2.jpg', - 'SCons-win32-install-3.jpg', - 'SCons-win32-install-4.jpg', - ], - 'scons-doc' : 1, - }, - } - + docs = {'design' : ['chtml','pdf'], + #'python10' : ['chtml','html','pdf'], + 'reference' : ['chtml','html','pdf'], + #'developer' : ['chtml','html','pdf'], + 'user' : ['chtml','html','pdf'], + 'man' : ['man'] + } + # The names of the target files for the MAN pages + man_page_list = ['scons.1','scons-time.1','sconsign.1'] + # # We have to tell SCons to scan the top-level XML files which # get included by the document XML files in the subdirectories. @@ -234,227 +194,96 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. manifest = File('MANIFEST').rstr() src_files = [x[:-1] for x in open(manifest).readlines()] for s in src_files: + if not s: + continue base, ext = os.path.splitext(s) if ext in ['.fig', '.jpg']: - orig_env.Install(build, s) + env.Execute(Copy(build, s)) else: - orig_env.SCons_revision(os.path.join(build, s), s) - Local(os.path.join(build, s)) + revaction([env.File(os.path.join(build, s))], + [env.File(s)], env) # - # For each document, build the document itself in HTML, Postscript, + # For each document, build the document itself in HTML, # and PDF formats. # - for doc in docs.keys(): + for doc in docs: + + # + # Read MANIFEST file and copy the listed files to the + # build directory, while branding them with the + # SCons copyright and the current revision number... + # + 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()] - build_doc = docs[doc].get('scons-doc') and int(ARGUMENTS.get('BUILDDOC', 0)) for s in src_files: + if not s: + continue doc_s = os.path.join(doc, s) build_s = os.path.join(build, doc, s) base, ext = os.path.splitext(doc_s) - if ext in ['.fig', '.jpg']: - orig_env.InstallAs(build_s, doc_s) + if ext in ['.fig', '.jpg', '.svg']: + env.Execute(Copy(build_s, doc_s)) else: - if build_doc and ext == '.xml': - env.Command(doc_s, - base + '.in', - "$PYTHON $SCONS_DOC_PY $SOURCE > $TARGET") - orig_env.SCons_revision(build_s, doc_s) - Local(build_s) - - main = os.path.join(build, doc, 'main.xml') - out = 'main.out' - - # Hard-coding the scons-src path is a bit of a hack. This can - # be reworked when a better solution presents itself. - scons_src_main = os.path.join(build_dir, 'scons-src', 'doc', main) - env.Ignore(scons_src_main, version_xml) - + revaction([env.File(build_s)], + [env.File(doc_s)], env) + + # + # Call SCons in each local doc folder directly, such that + # we can Glob for the created *.html files afterwards to + # get the dependencies for the install targets right. + # + cleanopt = '' + if env.GetOption('clean'): + cleanopt = ' -c' + cmd = env.subst("cd %s && $PYTHON ${SCONS_PY.abspath}" % os.path.join(build, doc))+cleanopt + os.system(cmd) + + # Collect the output files for this subfolder htmldir = os.path.join(build, 'HTML', 'scons-%s' % doc) - htmlindex = os.path.join(htmldir, docs[doc]['htmlindex']) + htmlindex = os.path.join(htmldir, 'index.html') html = os.path.join(build, 'HTML', 'scons-%s.html' % doc) - ps = os.path.join(build, 'PS', 'scons-%s.ps' % doc) pdf = os.path.join(build, 'PDF', 'scons-%s.pdf' % doc) - text = os.path.join(build, 'TEXT', 'scons-%s.txt' % doc) - - if docs[doc].get('html') and jade: - def copy_index_html(target, source, env): - # Older versions of DocBook|jw|jade|whatever would - # create a book1.html file, while newer versions create - # an index.html file (logically enough). The scons.org - # web site links expect book1.html, so we're going to - # leave the target as is, and run this post-processing - # action function to check that the target really did - # get created, and if it didn't, copy it from index.html. - t = str(target[0]) - if not os.path.exists(t): - i = os.path.join(os.path.split(t)[0], 'index.html') - open(t, 'w').write(open(i, 'r').read()) - return None - - cmds = [ - Delete("${TARGET.dir}/*.html"), - "jw -b html -o ${TARGET.dir} $SOURCES", - ] - if tidy: - cmds.append("tidy -m -q $TARGET || true") - cmds.append(Action(copy_index_html)) - env.Command(htmlindex, File(main), cmds) + if 'chtml' in docs[doc]: + env.Install(htmldir, Glob(os.path.join(build, doc,'scons-%s' % doc, '*.html'))) + tar_deps.extend([htmlindex]) + tar_list.extend([htmldir]) Local(htmlindex) + env.Ignore(htmlindex, version_xml) - cmds = [ - Delete("${TARGET.dir}/main.html"), - "jw -u -b html -o ${TARGET.dir} $SOURCES", - Move("$TARGET", "${TARGET.dir}/main.html"), - ] - if tidy: - cmds.append("tidy -m -q $TARGET || true") - env.Command(html, File(main), cmds) + if 'html' in docs[doc]: + env.InstallAs(html, os.path.join(build, doc,'index.html')) + tar_deps.extend([html]) + tar_list.extend([html]) Local(html) - - env.Ignore([html, htmlindex], version_xml) - - tar_deps.extend([html, htmlindex]) - tar_list.extend([html, htmldir]) - - for g in docs[doc].get('graphics', []): - base, ext = os.path.splitext(g) - if ext == '.fig': - jpg = base + '.jpg' - htmldir_jpg = os.path.join(htmldir, jpg) - if fig2dev: - fig = os.path.join(build, doc, g) - env.Command(htmldir_jpg, fig, - "%s -L jpeg -q 100 $SOURCES $TARGET" % fig2dev) - else: - env.InstallAs(htmldir_jpg, jpg) - env.Depends(html, htmldir_jpg) - Local(htmldir_jpg) - else: - src = os.path.join(build, doc, g) - Local(env.Install(htmldir, src)) - - if docs[doc].get('ps') and jadetex and jade_original: - env.Command(ps, main, [ - Delete("${TARGET.dir}/%s" % out), - "jw -b ps -o ${TARGET.dir} -p %s $SOURCES" % jade_original, - "mv ${TARGET.dir}/main.ps $TARGET", - Delete("${TARGET.dir}/%s" % out), - ]) - Local(ps) - - env.Ignore(ps, version_xml) - - tar_deps.append(ps) - tar_list.append(ps) - - for g in docs[doc].get('graphics', []): - base, ext = os.path.splitext(g) - if ext == '.fig': - eps = base + '.eps' - build_eps = os.path.join(build, 'PS', eps) - if fig2dev: - fig = os.path.join(build, doc, g) - env.Command(build_eps, fig, "%s -L eps $SOURCES $TARGET" % fig2dev) - else: - env.InstallAs(build_eps, eps) - env.Depends(ps, build_eps) - Local(build_eps) - else: - src = os.path.join(build, doc, g) - Local(env.Install(htmldir, src)) - - if docs[doc].get('pdf') and pdfjadetex and jade_original: - env.Command(pdf, main, [ - Delete("${TARGET.dir}/%s" % out), - "jw -b pdf -o ${TARGET.dir} -p %s $SOURCES" % jade_original, - "mv ${TARGET.dir}/main.pdf $TARGET", - Delete("${TARGET.dir}/out"), - ]) + env.Ignore(html, version_xml) + + if 'pdf' in docs[doc]: + env.InstallAs(pdf, os.path.join(build, doc,'scons-%s.pdf' % doc)) Local(pdf) - env.Ignore(pdf, version_xml) tar_deps.append(pdf) tar_list.append(pdf) + + if 'man' in docs[doc]: + # + # Man page(s) + # + for m in man_page_list: + man, _1 = os.path.splitext(m) + + pdf = os.path.join(build, 'PDF', '%s-man.pdf' % man) + html = os.path.join(build, 'HTML' , '%s-man.html' % man) + + env.InstallAs(pdf, os.path.join(build, 'man','scons-%s.pdf' % man)) + env.InstallAs(html, os.path.join(build, 'man','scons-%s.html' % man)) + + tar_deps.extend([pdf, html]) + tar_list.extend([pdf, html]) - if docs[doc].get('text') and jade and lynx: - env.Command(text, html, "lynx -dump ${SOURCE.abspath} > $TARGET") - Local(text) - - env.Ignore(text, version_xml) - - tar_deps.append(text) - tar_list.append(text) - -# -# Man page(s), in good ol' troff format. -# -man_page_list = ['scons.1', 'sconsign.1', 'scons-time.1'] - -for m in man_page_list: - x = orig_env.SCons_revision(os.path.join(build, 'man', m), - os.path.join('man', m)) - -man_i_files = ['builders.man', 'functions.man', 'tools.man', 'variables.man'] - -man_intermediate_files = [os.path.join(build, 'man', x) for x in man_i_files] - -cmd = "$PYTHON $SCONS_PROC_PY --man -b ${TARGETS[0]} -f ${TARGETS[1]} -t ${TARGETS[2]} -v ${TARGETS[3]} $( $SOURCES $)" -man_intermediate_files = env.Command(man_intermediate_files, - scons_doc_files, - cmd) -env.Depends(man_intermediate_files, "$SCONS_PROC_PY") -Local(man_intermediate_files) - -for man_1 in man_page_list: - man, _1 = os.path.splitext(man_1) - - man_1 = os.path.join(build, 'man', man_1) - - if groff: - ps = os.path.join(build, 'PS', '%s-man.ps' % man) - text = os.path.join(build, 'TEXT', '%s-man.txt' % man) - - b = env.Command(ps, man_1, "( cd ${SOURCES.dir} && groff -man -Tps ${SOURCES.file} ) > $TARGET") - Local(ps) - env.Depends(b, man_intermediate_files) - - b = env.Command(text, man_1, "( cd ${SOURCES.dir} && groff -man -Tascii ${SOURCES.file} ) > $TARGET") - Local(text) - env.Depends(b, man_intermediate_files) - - tar_deps.extend([ps, text]) - tar_list.extend([ps, text]) - else: - print "doc: WARNING: no groff, skipping text and PostScript versions of man pages" - - if man2html: - html = os.path.join(build, 'HTML' , '%s-man.html' % man) - - def strip_to_first_html_tag(target, source, env): - t = str(target[0]) - contents = open(t).read() - contents = contents[contents.find(''):] - open(t, 'w').write(contents) - return 0 - - cmds = [ - "( cd %s/man && cp %s .. )" % (build, ' '.join(man_i_files)), - "( cd ${SOURCE.dir} && man2html ${SOURCE.file} ) > $TARGET", - Action(strip_to_first_html_tag), - ] - if tidy: - cmds.append("tidy -m -q $TARGET || true") - b = env.Command(html, man_1, cmds) - Local(html) - env.Depends(b, man_intermediate_files) - - tar_deps.append(html) - tar_list.append(html) - else: - print "doc: WARNING: no man2html, skipping HTML versions of man pages" if not epydoc_cli: try: diff --git a/doc/design/MANIFEST b/doc/design/MANIFEST index c477ad9..e93037f 100644 --- a/doc/design/MANIFEST +++ b/doc/design/MANIFEST @@ -3,6 +3,7 @@ bground.xml copyright.xml engine.fig engine.jpg +engine.svg engine.xml goals.xml install.xml @@ -12,3 +13,13 @@ main.xml native.xml overview.xml summary.xml +chtml.xsl +html.xsl +pdf.xsl +scons_title.xsl +scons.css +SConstruct +titlepage/bricks.jpg +titlepage/mapnik_final_colors.svg +titlepage/SCons_path.svg +titlepage/SConsBuildBricks_path.svg diff --git a/doc/design/SConstruct b/doc/design/SConstruct index 675a0b7..d7ed6fe 100644 --- a/doc/design/SConstruct +++ b/doc/design/SConstruct @@ -28,12 +28,14 @@ import os env = Environment(ENV={'PATH' : os.environ['PATH']}, tools=['docbook'], - toolpath=['../../src/engine/SCons/Tool']) + toolpath=['../../src/engine/SCons/Tool'], + DOCBOOK_DEFAULT_XSL_HTML='html.xsl', + DOCBOOK_DEFAULT_XSL_HTMLCHUNKED='chtml.xsl', + DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl') has_pdf = False if (env.WhereIs('fop') or - env.WhereIs('xep') or - env.WhereIs('jw')): + env.WhereIs('xep')): has_pdf = True # @@ -42,6 +44,6 @@ if (env.WhereIs('fop') or env.DocbookXInclude('design_xi.xml', 'main.xml') env.DocbookXslt('design.xml', 'design_xi.xml', xsl='../xslt/to_docbook.xslt') -env.DocbookHtml('design.html','design.xml') +env.DocbookHtmlChunked('index.html','design.xml', base_dir='scons-design/') if has_pdf: - env.DocbookPdf('design.pdf','design.xml') + env.DocbookPdf('scons-design.pdf','design.xml') diff --git a/doc/design/chtml.xsl b/doc/design/chtml.xsl new file mode 100644 index 0000000..457f563 --- /dev/null +++ b/doc/design/chtml.xsl @@ -0,0 +1,56 @@ + + + + + + + + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + diff --git a/doc/design/engine.svg b/doc/design/engine.svg new file mode 100644 index 0000000..2ed9bcc --- /dev/null +++ b/doc/design/engine.svg @@ -0,0 +1,529 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Node.FS + Intercessor.FS + Intercessor.DB + Scanner + Builder + Intercessor + Environment + Node.DB + Dir + File + Table + Record + Field + Node + dependency + * + srcnode + 1 + repnode + 1 + 0..1 + 0..1 + * + * + build() + scan() + 1 + 1 + * + 1 + * + * + + diff --git a/doc/design/html.xsl b/doc/design/html.xsl new file mode 100644 index 0000000..74ea529 --- /dev/null +++ b/doc/design/html.xsl @@ -0,0 +1,55 @@ + + + + + + + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + diff --git a/doc/design/main.xml b/doc/design/main.xml index 3eba522..f19b217 100644 --- a/doc/design/main.xml +++ b/doc/design/main.xml @@ -39,14 +39,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd"> - SCons Design version &buildversion; - + SCons &buildversion; + Design Steven Knight - Revision &buildrevision; (&builddate;) + Steven Knight 2001 diff --git a/doc/design/overview.xml b/doc/design/overview.xml index 6c3cc84..4fa92c8 100644 --- a/doc/design/overview.xml +++ b/doc/design/overview.xml @@ -60,21 +60,17 @@ - - - diff --git a/doc/design/pdf.xsl b/doc/design/pdf.xsl new file mode 100644 index 0000000..652975f --- /dev/null +++ b/doc/design/pdf.xsl @@ -0,0 +1,71 @@ + + + + + + + + + + +0pt + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + bold + + + + + + + + + + + diff --git a/doc/design/scons.css b/doc/design/scons.css new file mode 100644 index 0000000..6941abb --- /dev/null +++ b/doc/design/scons.css @@ -0,0 +1,263 @@ +body { + background: #ffffff; + margin: 10px; + padding: 0; + font-family:palatino, georgia, verdana, arial, sans-serif; + } + + +a { + color: #80572a; + } + +a:hover { + color: #d72816; + text-decoration: none; + } + +tt { + color: #a14447; + } + +pre { + background: #e0e0e0; + } + +#main { + border: 1px solid; + border-color: black; + background-color: white; + background-image: url(../images/sconsback.png); + background-repeat: repeat-y 50% 0; + background-position: right top; + margin: 30px auto; + width: 750px; + } + +#banner { + background-image: url(../images/scons-banner.jpg); + border-bottom: 1px solid; + height: 95px; + } + +#menu { + font-family: sans-serif; + font-size: small; + line-height: 0.9em; + float: right; + width: 220px; + clear: both; + margin-top: 10px; + } + +#menu li { + margin-bottom: 7px; + } + +#menu li li { + margin-bottom: 2px; + } + +#menu li.submenuitems { + margin-bottom: 2px; + } + +#menu a { + text-decoration: none; + } + +#footer { + border-top: 1px solid black; + text-align: center; + font-size: small; + color: #822; + margin-top: 4px; + background: #eee; + } + +ul.hack { + list-style-position:inside; + } + +ul.menuitems { + list-style-type: none; + } + +ul.submenuitems { + list-style-type: none; + font-size: smaller; + margin-left: 0; + padding-left: 16px; + } + +ul.subsubmenuitems { + list-style-type: none; + font-size: smaller; + margin-left: 0; + padding-left: 16px; + } + +ol.upper-roman { + list-style-type: upper-roman; + } + +ol.decimal { + list-style-type: decimal; + } + +#currentpage { + font-weight: bold; + } + +#bodycontent { + margin: 15px; + width: 520px; + font-size: small; + line-height: 1.5em; + } + +#bodycontent li { + margin-bottom: 6px; + list-style-type: square; + } + +#sconsdownloadtable downloadtable { + display: table; + margin-left: 5%; + border-spacing: 12px 3px; + } + +#sconsdownloadtable downloadrow { + display: table-row; + } + +#sconsdownloadtable downloadentry { + display: table-cell; + text-align: center; + vertical-align: bottom; + } + +#sconsdownloadtable downloaddescription { + display: table-cell; + font-weight: bold; + text-align: left; + } + +#sconsdownloadtable downloadversion { + display: table-cell; + font-weight: bold; + text-align: center; + } + +#sconsdocversiontable sconsversiontable { + display: table; + margin-left: 10%; + border-spacing: 12px 3px; + } + +#sconsdocversiontable sconsversionrow { + display: table-row; + } + +#sconsdocversiontable docformat { + display: table-cell; + font-weight: bold; + text-align: center; + vertical-align: bottom; + } + +#sconsdocversiontable sconsversion { + display: table-cell; + font-weight: bold; + text-align: left; + } + +#sconsdocversiontable docversion { + display: table-cell; + font-weight: bold; + text-align: center; + } + +#osrating { + margin-left: 35px; + } + + +h2 { + color: #272; + color: #c01714; + font-family: sans-serif; + font-weight: normal; + } + +h2.pagetitle { + font-size: xx-large; + } +h3 { + margin-bottom: 10px; + } + +.date { + font-size: small; + color: gray; + } + +.link { + margin-bottom: 22px; + } + +.linkname { + } + +.linkdesc { + margin: 10px; + margin-top: 0; + } + +.quote { + margin-top: 20px; + margin-bottom: 10px; + background: #f8f8f8; + border: 1px solid; + border-color: #ddd; + } + +.quotetitle { + font-weight: bold; + font-size: large; + margin: 10px; + } + +.quotedesc { + margin-left: 20px; + margin-right: 10px; + margin-bottom: 15px; + } + +.quotetext { + margin-top: 20px; + margin-left: 20px; + margin-right: 10px; + font-style: italic; + } + +.quoteauthor { + font-size: small; + text-align: right; + margin-top: 10px; + margin-right: 7px; + } + +.sconslogo { + font-style: normal; + font-weight: bold; + color: #822; + } + +.downloadlink { + } + +.downloaddescription { + margin-left: 1em; + margin-bottom: 0.4em; + } diff --git a/doc/design/scons_title.xsl b/doc/design/scons_title.xsl new file mode 100644 index 0000000..2eb1293 --- /dev/null +++ b/doc/design/scons_title.xsl @@ -0,0 +1,6352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200mm + 205.9mm + + + + + 190mm + 195.9mm + + + + + 180mm + 185.9mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scons-titlepage-first + + + + + + + + + + + + + + + + + + + + + scons-titlepage-odd + + + + + + + + + + + + + + + + + + + + + scons-titlepage-even + + + + + + + + + + + + + + + + + + + + + + scons-chapter-first + + + + + + + + + + + + + + + + + + + + + scons-chapter-odd + + + + + + + + + + + + + + + + + + + + + scons-chapter-even + + + + + + + + + + + + + + + + + + + + + + + + scons-titlepage-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-titlepage-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-titlepage-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + scons-chapter-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-chapter-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-chapter-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + scons-titlepage-even + scons-titlepage-odd + + + + + + + + + + + + + + + + + + body-even-draft + body-odd-draft + + + + + + + + + + + + + + + + scons-chapter-even + scons-chapter-odd + + + + + + + + + + + + + + + + scons-chapter-even-draft + scons-chapter-odd-draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + #C51410 + always + center + after + 0pt + 0pt + + + + + + + 24pt + #C51410 + bold + always + left + after + 0pt + 0pt + 0.7em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + 4 + 3 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + 1 + 1 + 3 + + + + + + 3 + 3 + 1 + + + + + + + + + + + + + + proportional-column-width( + + header + + + ) + + + + + proportional-column-width( + + header + + + ) + + + + + proportional-column-width( + + header + + + ) + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + 1 + 1 + 3 + + + + + + 3 + 3 + 1 + + + + + + + + + + + + + proportional-column-width( + + footer + + + ) + + + + + proportional-column-width( + + footer + + + ) + + + + + proportional-column-width( + + footer + + + ) + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.5pt + solid + #C51410 + + + + + + + + + + + 0.5pt + solid + #C51410 + + + +1 0 1 +1 0 1 + + + + + diff --git a/doc/design/titlepage/SConsBuildBricks_path.svg b/doc/design/titlepage/SConsBuildBricks_path.svg new file mode 100644 index 0000000..ed0c60d --- /dev/null +++ b/doc/design/titlepage/SConsBuildBricks_path.svg @@ -0,0 +1,320 @@ + + + + + + + + + + image/svg+xml + + + 2008-05-18 + + + Hartmut Goebel + + + + + Hartmut Goebel <h.goebel@goebel-consult.de> + + + en + + + SCons + software build tool + software construction tool + + + + + + Based on the pixeled SCons logo (author unknown). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/design/titlepage/SCons_path.svg b/doc/design/titlepage/SCons_path.svg new file mode 100644 index 0000000..ef580ee --- /dev/null +++ b/doc/design/titlepage/SCons_path.svg @@ -0,0 +1,196 @@ + + + + + SCons - Build your software, better (SCons Logo) + + + + + + image/svg+xml + + SCons - Build your software, better (SCons Logo) + 2011-05-19 + + + Dirk Baechle + + + + + Dirk Baechle <dl9obn@darc.de> + + + en + + + SCons + software build tool + software construction tool + + + + + + Based on the SCons (Constructs using) logo by Hartmut Goebel <h.goebel@goebel-consult.de>. + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/design/titlepage/mapnik_final_colors.svg b/doc/design/titlepage/mapnik_final_colors.svg new file mode 100644 index 0000000..23bb54a --- /dev/null +++ b/doc/design/titlepage/mapnik_final_colors.svg @@ -0,0 +1,6397 @@ + + + SCons, Book titlepage background + + + + image/svg+xml + + + SCons, Book titlepage background + 2013-04-15 + + + Dirk Baechle + + + + + Dirk Baechle <dl9obn@darc.de> + + + en + + + SCons + software build tool + software construction tool + + + + + Based on a SCons dependency tree of the Mapnik project (www.mapnik.org) + + + + + + + + + + + + + + + + + + + + + + + ./src/agg_renderer.os + + + + + + + ./agg/src + + + + + + + ./src/graphics.os + + + + + + + ./src/font_set.os + + + + + + + ./agg/src/agg_vcgen_markers_term.o + + + + + + + ./src/params.os + + + + + + + ./agg/src/agg_image_filters.o + + + + + + + ./bindings/python/mapnik_symbolizer.os + + + + + + + ./src/memory.os + + + + + + + ./bindings/python/mapnik_font_engine.os + + + + + + + ./plugins/input/shape/dbffile.os + + + + + + + ./agg/src/agg_line_aa_basics.o + + + + + + + ./src/save_map.os + + + + + + + ./bindings/python/mapnik_view_transform.os + + + + + + + ./src/color.os + + + + + + + ./agg/libagg.a + + + + + + + ./src/font_engine_freetype.os + + + + + + + ./src/stroke.os + + + + + + + ./bindings/python/mapnik_image.os + + + + + + + ./src/image_util.os + + + + + + + ./bindings/python/mapnik_datasource_cache.os + + + + + + + ./agg/include + + + + + + + ./bindings/python/mapnik_rule.os + + + + + + + ./agg/src/agg_bezier_arc.o + + + + + + + ./bindings/python/mapnik_featureset.os + + + + + + + ./agg/src/agg_arc.o + + + + + + + ./plugins/input/shape/shapefile.os + + + + + + + ./plugins/input/raster/raster_datasource.os + + + + + + + ./plugins/input/raster/raster_featureset.os + + + + + + + ./src/unicode.os + + + + + + + ./bindings/python/mapnik/ogcserver + + + + + + + ./bindings/python/mapnik_map.os + + + + + + + ./src/arrow.os + + + + + + + ./plugins + + + + + + + ./plugins/input/raster/raster.input + + + + + + + ./agg/src/agg_vcgen_contour.o + + + + + + + ./agg/src/agg_trans_warp_magnifier.o + + + + + + + ./bindings/python/mapnik_datasource.os + + + + + + + ./plugins/input/shape/shape_featureset.os + + + + + + + ./src/load_map.os + + + + + + + ./bindings/python/mapnik_point_symbolizer.os + + + + + + + ./src/line_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik + + + + + + + ./plugins/input/raster + + + + + + + ./src/map.os + + + + + + + ./src/wkb.os + + + + + + + ./agg/src/agg_vcgen_stroke.o + + + + + + + ./agg/src/agg_gsv_text.o + + + + + + + ./plugins/input/shape/shape.os + + + + + + + ./bindings + + + + + + + ./src + + + + + + + ./bindings/python/mapnik_filter.os + + + + + + + ./agg/src/agg_vcgen_bspline.o + + + + + + + ./bindings/python/mapnik_coord.os + + + + + + + ./src/envelope.os + + + + + + + ./agg/src/agg_vpgen_segmentator.o + + + + + + + ./bindings/python/mapnik_layer.os + + + + + + + ./bindings/python/mapnik_line_symbolizer.os + + + + + + + ./src/shield_symbolizer.os + + + + + + + ./agg/src/agg_trans_double_path.o + + + + + + + ./src/projection.os + + + + + + + ./src/tiff_reader.os + + + + + + + ./bindings/python/mapnik_proj_transform.os + + + + + + + ./bindings/python/mapnik_style.os + + + + + + + ./bindings/python/mapnik_shield_symbolizer.os + + + + + + + ./src/image_reader.os + + + + + + + ./agg/src/agg_bspline.o + + + + + + + ./agg/src/agg_trans_single_path.o + + + + + + + ./plugins/input/raster/raster_info.os + + + + + + + ./agg/src/agg_vcgen_dash.o + + + + + + + ./bindings/python/mapnik_projection.os + + + + + + + ./bindings/python/mapnik_image_view.os + + + + + + + ./src/distance.os + + + + + + + ./src/datasource_cache.os + + + + + + + ./bindings/python/mapnik_parameters.os + + + + + + + ./src/plugin.os + + + + + + + ./agg/src/agg_arrowhead.o + + + + + + + ./bindings/python/mapnik_feature.os + + + + + + + ./agg/src/agg_embedded_raster_fonts.o + + + + + + + ./src/libmapnik.so + + + + + + + ./src/placement_finder.os + + + + + + + ./agg/src/agg_sqrt_tables.o + + + + + + + ./agg/src/agg_vpgen_clip_polyline.o + + + + + + + ./bindings/python/mapnik_raster_symbolizer.os + + + + + + + ./agg/src/agg_line_profile_aa.o + + + + + + + ./bindings/python/mapnik_line_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik_color.os + + + + + + + ./src/proj_transform.os + + + + + + + ./src/memory_datasource.os + + + + + + + ./plugins/input + + + + + + + ./bindings/python/mapnik_python.os + + + + + + + ./src/png_reader.os + + + + + + + ./bindings/python/mapnik_envelope.os + + + + + + + ./bindings/python/mapnik_stroke.os + + + + + + + ./plugins/input/shape/shape.input + + + + + + + ./bindings/python/mapnik_query.os + + + + + + + ./src/point_symbolizer.os + + + + + + + ./src/filter_factory.os + + + + + + + ./bindings/python/mapnik_polygon_symbolizer.os + + + + + + + ./agg/src/agg_vcgen_smooth_poly1.o + + + + + + + ./plugins/input/shape/shape_index_featureset.os + + + + + + + ./bindings/python/python_cairo.os + + + + + + + ./src/symbolizer.os + + + + + + + ./bindings/python/_mapnik.so + + + + + + + ./agg/src/agg_trans_affine.o + + + + + + + ./src/polygon_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik_polygon_pattern_symbolizer.os + + + + + + + ./agg/src/agg_curves.o + + + + + + + ./src/text_symbolizer.os + + + + + + + ./src/scale_denominator.os + + + + + + + ./plugins/input/shape/shape_io.os + + + + + + + ./src/layer.os + + + + + + + ./agg + + + + + + + ./src/libxml2_loader.os + + + + + + + ./agg/src/agg_vpgen_clip_polygon.o + + + + + + + ./plugins/input/shape + + + + + + + ./bindings/python/mapnik_geometry.os + + + + + + + ./bindings/python/mapnik_text_symbolizer.os + + + + + + + ./agg/src/agg_rounded_rect.o + + + + + + + ./bindings/python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/developer/SConstruct b/doc/developer/SConstruct index 573c404..c97dc6c 100644 --- a/doc/developer/SConstruct +++ b/doc/developer/SConstruct @@ -32,8 +32,7 @@ env = Environment(ENV={'PATH' : os.environ['PATH']}, has_pdf = False if (env.WhereIs('fop') or - env.WhereIs('xep') or - env.WhereIs('jw')): + env.WhereIs('xep')): has_pdf = True # diff --git a/doc/generated/functions.gen b/doc/generated/functions.gen index 9eecc9c..4849ac6 100644 --- a/doc/generated/functions.gen +++ b/doc/generated/functions.gen @@ -15,8 +15,10 @@ - Action(action, [cmd/str/fun, [var, ...]] [option=value, ...]) - env.Action(action, [cmd/str/fun, [var, ...]] [option=value, ...]) + Action(action, [cmd/str/fun, [var, ...]] [option=value, ...]) + + + env.Action(action, [cmd/str/fun, [var, ...]] [option=value, ...]) @@ -49,8 +51,10 @@ until the Action object is actually used. - AddMethod(object, function, [name]) - env.AddMethod(function, [name]) + AddMethod(object, function, [name]) + + + env.AddMethod(function, [name]) @@ -110,7 +114,7 @@ env.other_method_name('another arg') - AddOption(arguments) + AddOption(arguments) @@ -221,8 +225,10 @@ env = Environment(PREFIX = GetOption('prefix')) - AddPostAction(target, action) - env.AddPostAction(target, action) + AddPostAction(target, action) + + + env.AddPostAction(target, action) @@ -248,8 +254,10 @@ one or more targets in the list. - AddPreAction(target, action) - env.AddPreAction(target, action) + AddPreAction(target, action) + + + env.AddPreAction(target, action) @@ -304,8 +312,10 @@ file into an object file. - Alias(alias, [targets, [action]]) - env.Alias(alias, [targets, [action]]) + Alias(alias, [targets, [action]]) + + + env.Alias(alias, [targets, [action]]) @@ -346,7 +356,7 @@ env.Alias('update', ['file1', 'file2'], "update_database $SOURCES") - AllowSubstExceptions([exception, ...]) + AllowSubstExceptions([exception, ...]) @@ -391,8 +401,10 @@ AllowSubstExceptions(IndexError, NameError, ZeroDivisionError) - AlwaysBuild(target, ...) - env.AlwaysBuild(target, ...) + AlwaysBuild(target, ...) + + + env.AlwaysBuild(target, ...) @@ -416,7 +428,7 @@ Multiple targets can be passed in to a single call to - env.Append(key=val, [...]) + env.Append(key=val, [...]) @@ -446,7 +458,7 @@ env.Append(CCFLAGS = ' -g', FOO = ['foo.yyy']) - env.AppendENVPath(name, newpath, [envname, sep, delete_existing]) + env.AppendENVPath(name, newpath, [envname, sep, delete_existing]) @@ -492,7 +504,7 @@ after: /biz:/foo/bar:/foo - env.AppendUnique(key=val, [...], delete_existing=0) + env.AppendUnique(key=val, [...], delete_existing=0) @@ -522,7 +534,7 @@ env.AppendUnique(CCFLAGS = '-g', FOO = ['foo.yyy']) - env.BitKeeper() + env.BitKeeper() @@ -553,8 +565,10 @@ env.SourceCode('.', env.BitKeeper()) - BuildDir(build_dir, src_dir, [duplicate]) - env.BuildDir(build_dir, src_dir, [duplicate]) + BuildDir(build_dir, src_dir, [duplicate]) + + + env.BuildDir(build_dir, src_dir, [duplicate]) @@ -575,8 +589,10 @@ or - Builder(action, [arguments]) - env.Builder(action, [arguments]) + Builder(action, [arguments]) + + + env.Builder(action, [arguments]) @@ -610,8 +626,10 @@ until after the Builder object is actually called. - CacheDir(cache_dir) - env.CacheDir(cache_dir) + CacheDir(cache_dir) + + + env.CacheDir(cache_dir) @@ -733,8 +751,10 @@ predict or prohibitively large. - Clean(targets, files_or_dirs) - env.Clean(targets, files_or_dirs) + Clean(targets, files_or_dirs) + + + env.Clean(targets, files_or_dirs) @@ -798,7 +818,7 @@ Clean(docdir, os.path.join(docdir, projectname)) - env.Clone([key=val, ...]) + env.Clone([key=val, ...]) @@ -842,8 +862,10 @@ wx_env = env.Clone(parse_flags = '!wx-config --cflags --cxxflags') - Command(target, source, action, [key=val, ...]) - env.Command(target, source, action, [key=val, ...]) + Command(target, source, action, [key=val, ...]) + + + env.Command(target, source, action, [key=val, ...]) @@ -952,8 +974,10 @@ so you normally don't need to create directories by hand.) - Configure(env, [custom_tests, conf_dir, log_file, config_h]) - env.Configure([custom_tests, conf_dir, log_file, config_h]) + Configure(env, [custom_tests, conf_dir, log_file, config_h]) + + + env.Configure([custom_tests, conf_dir, log_file, config_h]) @@ -966,7 +990,7 @@ below, for a complete explanation of the arguments and behavior. - env.Copy([key=val, ...]) + env.Copy([key=val, ...]) @@ -977,7 +1001,7 @@ A now-deprecated synonym for - env.CVS(repository, module) + env.CVS(repository, module) @@ -1034,8 +1058,10 @@ env.SourceCode('.', env.CVS('/usr/local/CVSROOT', 'foo/bar')) - Decider(function) - env.Decider(function) + Decider(function) + + + env.Decider(function) @@ -1244,8 +1270,10 @@ env.Decider(my_decider) - Default(targets) - env.Default(targets) + Default(targets) + + + env.Default(targets) @@ -1305,7 +1333,7 @@ see below. - DefaultEnvironment([args]) + DefaultEnvironment([args]) @@ -1319,8 +1347,10 @@ from source code management systems. - Depends(target, dependency) - env.Depends(target, dependency) + Depends(target, dependency) + + + env.Depends(target, dependency) @@ -1369,7 +1399,7 @@ env.Depends(bar, installed_lib) - env.Dictionary([vars]) + env.Dictionary([vars]) @@ -1393,8 +1423,10 @@ cc_dict = env.Dictionary('CC', 'CCFLAGS', 'CCCOM') - Dir(name, [directory]) - env.Dir(name, [directory]) + Dir(name, [directory]) + + + env.Dir(name, [directory]) @@ -1430,7 +1462,7 @@ see "File and Directory Nodes," below. - env.Dump([key]) + env.Dump([key]) @@ -1483,8 +1515,10 @@ will print: - EnsurePythonVersion(major, minor) - env.EnsurePythonVersion(major, minor) + EnsurePythonVersion(major, minor) + + + env.EnsurePythonVersion(major, minor) @@ -1506,8 +1540,10 @@ EnsurePythonVersion(2,2) - EnsureSConsVersion(major, minor, [revision]) - env.EnsureSConsVersion(major, minor, [revision]) + EnsureSConsVersion(major, minor, [revision]) + + + env.EnsureSConsVersion(major, minor, [revision]) @@ -1536,8 +1572,10 @@ EnsureSConsVersion(0,96,90) - Environment([key=value, ...]) - env.Environment([key=value, ...]) + Environment([key=value, ...]) + + + env.Environment([key=value, ...]) @@ -1550,8 +1588,10 @@ pairs. - Execute(action, [strfunction, varlist]) - env.Execute(action, [strfunction, varlist]) + Execute(action, [strfunction, varlist]) + + + env.Execute(action, [strfunction, varlist]) @@ -1604,8 +1644,10 @@ if Execute("mkdir sub/dir/ectory"): - Exit([value]) - env.Exit([value]) + Exit([value]) + + + env.Exit([value]) @@ -1623,8 +1665,10 @@ is used if no value is specified. - Export(vars) - env.Export(vars) + Export(vars) + + + env.Export(vars) @@ -1682,8 +1726,10 @@ function, below. - File(name, [directory]) - env.File(name, [directory]) + File(name, [directory]) + + + env.File(name, [directory]) @@ -1717,8 +1763,10 @@ see "File and Directory Nodes," below. - FindFile(file, dirs) - env.FindFile(file, dirs) + FindFile(file, dirs) + + + env.FindFile(file, dirs) @@ -1744,8 +1792,10 @@ foo = env.FindFile('foo', ['dir1', 'dir2']) - FindInstalledFiles() - env.FindInstalledFiles() + FindInstalledFiles() + + + env.FindInstalledFiles() @@ -1782,7 +1832,7 @@ FindInstalledFiles() - FindPathDirs(variable) + FindPathDirs(variable) @@ -1845,8 +1895,10 @@ scanner = Scanner(name = 'myscanner', - FindSourceFiles(node='"."') - env.FindSourceFiles(node='"."') + FindSourceFiles(node='"."') + + + env.FindSourceFiles(node='"."') @@ -1888,8 +1940,10 @@ will also be returned by this function. - Flatten(sequence) - env.Flatten(sequence) + Flatten(sequence) + + + env.Flatten(sequence) @@ -1930,7 +1984,7 @@ for object in Flatten(objects): - GetBuildFailures() + GetBuildFailures() @@ -2056,8 +2110,10 @@ atexit.register(print_build_failures) - GetBuildPath(file, [...]) - env.GetBuildPath(file, [...]) + GetBuildPath(file, [...]) + + + env.GetBuildPath(file, [...]) @@ -2077,8 +2133,10 @@ Nodes or strings representing path names. - GetLaunchDir() - env.GetLaunchDir() + GetLaunchDir() + + + env.GetLaunchDir() @@ -2099,8 +2157,10 @@ file is found. - GetOption(name) - env.GetOption(name) + GetOption(name) + + + env.GetOption(name) @@ -2366,8 +2426,10 @@ option. - Glob(pattern, [ondisk, source, strings]) - env.Glob(pattern, [ondisk, source, strings]) + Glob(pattern, [ondisk, source, strings]) + + + env.Glob(pattern, [ondisk, source, strings]) @@ -2492,8 +2554,10 @@ Zip('/tmp/everything', Glob('.??*') + Glob('*')) - Help(text) - env.Help(text) + Help(text) + + + env.Help(text) @@ -2512,8 +2576,10 @@ is called. - Ignore(target, dependency) - env.Ignore(target, dependency) + Ignore(target, dependency) + + + env.Ignore(target, dependency) @@ -2552,8 +2618,10 @@ env.Ignore('bar','bar/foobar.obj') - Import(vars) - env.Import(vars) + Import(vars) + + + env.Import(vars) @@ -2589,8 +2657,10 @@ Import("*") - Literal(string) - env.Literal(string) + Literal(string) + + + env.Literal(string) @@ -2603,8 +2673,10 @@ and not have construction variables expanded. - Local(targets) - env.Local(targets) + Local(targets) + + + env.Local(targets) @@ -2619,7 +2691,7 @@ Returns a list of the target Node or Nodes. - env.MergeFlags(arg, [unique]) + env.MergeFlags(arg, [unique]) @@ -2680,8 +2752,10 @@ env.MergeFlags(['-O3', - NoCache(target, ...) - env.NoCache(target, ...) + NoCache(target, ...) + + + env.NoCache(target, ...) @@ -2723,8 +2797,10 @@ NoCache(env.Program('hello', 'hello.c')) - NoClean(target, ...) - env.NoClean(target, ...) + NoClean(target, ...) + + + env.NoClean(target, ...) @@ -2780,7 +2856,7 @@ NoClean(env.Program('hello', 'hello.c')) - env.ParseConfig(command, [function, unique]) + env.ParseConfig(command, [function, unique]) @@ -2821,8 +2897,10 @@ for a table of options and construction variables. - ParseDepends(filename, [must_exist, only_one]) - env.ParseDepends(filename, [must_exist, only_one]) + ParseDepends(filename, [must_exist, only_one]) + + + env.ParseDepends(filename, [must_exist, only_one]) @@ -2888,7 +2966,7 @@ function. - env.ParseFlags(flags, ...) + env.ParseFlags(flags, ...) @@ -2969,7 +3047,7 @@ dict = env.ParseFlags('-O2', '!echo -Dfoo -Dbar=1') - env.Perforce() + env.Perforce() @@ -3019,7 +3097,7 @@ USERNAME. - Platform(string) + Platform(string) @@ -3075,8 +3153,10 @@ will work on Windows systems. - Precious(target, ...) - env.Precious(target, ...) + Precious(target, ...) + + + env.Precious(target, ...) @@ -3092,7 +3172,7 @@ Multiple targets can be passed in to a single call to - env.Prepend(key=val, [...]) + env.Prepend(key=val, [...]) @@ -3122,7 +3202,7 @@ env.Prepend(CCFLAGS = '-g ', FOO = ['foo.yyy']) - env.PrependENVPath(name, newpath, [envname, sep, delete_existing]) + env.PrependENVPath(name, newpath, [envname, sep, delete_existing]) @@ -3174,7 +3254,7 @@ after: /foo/bar:/foo:/biz - env.PrependUnique(key=val, delete_existing=0, [...]) + env.PrependUnique(key=val, delete_existing=0, [...]) @@ -3204,9 +3284,13 @@ env.PrependUnique(CCFLAGS = '-g', FOO = ['foo.yyy']) - Progress(callable, [interval]) - Progress(string, [interval, file, overwrite]) - Progress(list_of_strings, [interval, file, overwrite]) + Progress(callable, [interval]) + + + Progress(string, [interval, file, overwrite]) + + + Progress(list_of_strings, [interval, file, overwrite]) @@ -3337,7 +3421,7 @@ Progress(['-\r', '\\\r', '|\r', '/\r'], interval=5) - env.RCS() + env.RCS() @@ -3384,7 +3468,7 @@ for a specific subdirectory. - env.Replace(key=val, [...]) + env.Replace(key=val, [...]) @@ -3403,8 +3487,10 @@ env.Replace(CCFLAGS = '-g', FOO = 'foo.xxx') - Repository(directory) - env.Repository(directory) + Repository(directory) + + + env.Repository(directory) @@ -3457,8 +3543,10 @@ method. - Requires(target, prerequisite) - env.Requires(target, prerequisite) + Requires(target, prerequisite) + + + env.Requires(target, prerequisite) @@ -3486,7 +3574,7 @@ env.Requires('foo', 'file-that-must-be-built-before-foo') - Return([vars..., stop=]) + Return([vars..., stop=]) @@ -3539,8 +3627,10 @@ Return('val1 val2') - Scanner(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive]) - env.Scanner(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive]) + Scanner(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive]) + + + env.Scanner(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive]) @@ -3554,7 +3644,7 @@ below, for a complete explanation of the arguments and behavior. - env.SCCS() + env.SCCS() @@ -3595,10 +3685,16 @@ for a specific subdirectory. - SConscript(scripts, [exports, variant_dir, duplicate]) - env.SConscript(scripts, [exports, variant_dir, duplicate]) - SConscript(dirs=subdirs, [name=script, exports, variant_dir, duplicate]) - env.SConscript(dirs=subdirs, [name=script, exports, variant_dir, duplicate]) + SConscript(scripts, [exports, variant_dir, duplicate]) + + + env.SConscript(scripts, [exports, variant_dir, duplicate]) + + + SConscript(dirs=subdirs, [name=script, exports, variant_dir, duplicate]) + + + env.SConscript(dirs=subdirs, [name=script, exports, variant_dir, duplicate]) @@ -3836,8 +3932,10 @@ SConscript('src/SConscript', variant_dir='build/ppc', duplicate=0) - SConscriptChdir(value) - env.SConscriptChdir(value) + SConscriptChdir(value) + + + env.SConscriptChdir(value) @@ -3884,8 +3982,10 @@ SConscript('bar/SConscript') # will chdir to bar - SConsignFile([file, dbm_module]) - env.SConsignFile([file, dbm_module]) + SConsignFile([file, dbm_module]) + + + env.SConsignFile([file, dbm_module]) @@ -3964,7 +4064,7 @@ SConsignFile(None) - env.SetDefault(key=val, [...]) + env.SetDefault(key=val, [...]) @@ -3982,8 +4082,10 @@ if 'FOO' not in env: env['FOO'] = 'foo' - SetOption(name, value) - env.SetOption(name, value) + SetOption(name, value) + + + env.SetOption(name, value) @@ -4085,8 +4187,10 @@ SetOption('max_drift', 1) - SideEffect(side_effect, target) - env.SideEffect(side_effect, target) + SideEffect(side_effect, target) + + + env.SideEffect(side_effect, target) @@ -4148,8 +4252,10 @@ function. - SourceCode(entries, builder) - env.SourceCode(entries, builder) + SourceCode(entries, builder) + + + env.SourceCode(entries, builder) @@ -4245,8 +4351,10 @@ env.SourceCode('no_source.c', None) - SourceSignatures(type) - env.SourceSignatures(type) + SourceSignatures(type) + + + env.SourceSignatures(type) @@ -4344,8 +4452,10 @@ is used). - Split(arg) - env.Split(arg) + Split(arg) + + + env.Split(arg) @@ -4378,7 +4488,7 @@ files = Split(""" - env.subst(input, [raw, target, source, conv]) + env.subst(input, [raw, target, source, conv]) @@ -4486,7 +4596,7 @@ source_nodes = env.subst('$EXPAND_TO_NODELIST', - Tag(node, tags) + Tag(node, tags) @@ -4513,8 +4623,10 @@ Tag( 'file2.txt', DOC ) - TargetSignatures(type) - env.TargetSignatures(type) + TargetSignatures(type) + + + env.TargetSignatures(type) @@ -4666,8 +4778,10 @@ affect their "downstream" dependencies. - Tool(string, [toolpath, **kw]) - env.Tool(string, [toolpath, **kw]) + Tool(string, [toolpath, **kw]) + + + env.Tool(string, [toolpath, **kw]) @@ -4731,8 +4845,10 @@ env.Tool('opengl', toolpath = ['build/tools']) - Value(value, [built_value]) - env.Value(value, [built_value]) + Value(value, [built_value]) + + + env.Value(value, [built_value]) @@ -4806,8 +4922,10 @@ env.UpdateValue(target = Value(output), source = Value(input)) - VariantDir(variant_dir, src_dir, [duplicate]) - env.VariantDir(variant_dir, src_dir, [duplicate]) + VariantDir(variant_dir, src_dir, [duplicate]) + + + env.VariantDir(variant_dir, src_dir, [duplicate]) @@ -4941,8 +5059,10 @@ SConscript(dirs='doc', variant_dir='build/doc', duplicate=0) - WhereIs(program, [path, pathext, reject]) - env.WhereIs(program, [path, pathext, reject]) + WhereIs(program, [path, pathext, reject]) + + + env.WhereIs(program, [path, pathext, reject]) diff --git a/doc/man/MANIFEST b/doc/man/MANIFEST index 86a6b14..6c75f81 100644 --- a/doc/man/MANIFEST +++ b/doc/man/MANIFEST @@ -1,2 +1,13 @@ scons.xml sconsign.xml +scons-time.xml +html.xsl +pdf.xsl +scons_title.xsl +scons.css +SConstruct +titlepage/bricks.jpg +titlepage/mapnik_final_colors.svg +titlepage/SCons_path.svg +titlepage/SConsBuildBricks_path.svg + diff --git a/doc/man/SConstruct b/doc/man/SConstruct index 69ba449..cd94021 100644 --- a/doc/man/SConstruct +++ b/doc/man/SConstruct @@ -24,17 +24,28 @@ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -env = Environment(tools=['docbook'], +import os + +env = Environment(ENV={'PATH' : os.environ['PATH']}, + tools=['docbook'], toolpath=['../../src/engine/SCons/Tool'], - DOCBOOK_DEFAULT_XSL_HTML='html.xsl') + DOCBOOK_DEFAULT_XSL_HTML='html.xsl', + DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl') + +has_pdf = False +if (env.WhereIs('fop') or + env.WhereIs('xep')): + has_pdf = True # Helper function, combining all the steps for a single target def createManPages(env, target): env.DocbookXInclude('%s_xi.xml' % target, '%s.xml' % target) env.DocbookXslt('%s_db.xml' % target, '%s_xi.xml' % target, xsl='../xslt/to_docbook.xslt') - env.DocbookHtml('%s.html' % target,'%s_db.xml' % target) + env.DocbookHtml('scons-%s.html' % target,'%s_db.xml' % target) env.DocbookMan('%s.1' % target, '%s_db.xml' % target) + if has_pdf: + env.DocbookPdf('scons-%s.pdf' % target,'%s_db.xml' % target) # # Create MAN pages diff --git a/doc/man/html.xsl b/doc/man/html.xsl index 74ea529..71a847a 100644 --- a/doc/man/html.xsl +++ b/doc/man/html.xsl @@ -41,7 +41,7 @@ book toc,title,figure,table,example,equation /chapter toc,title part toc,title /preface toc,title -reference toc,title +reference title /sect1 toc /sect2 toc /sect3 toc diff --git a/doc/man/pdf.xsl b/doc/man/pdf.xsl new file mode 100644 index 0000000..652975f --- /dev/null +++ b/doc/man/pdf.xsl @@ -0,0 +1,71 @@ + + + + + + + + + + +0pt + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + bold + + + + + + + + + + + diff --git a/doc/man/scons-time.xml b/doc/man/scons-time.xml index 1487695..b202d06 100644 --- a/doc/man/scons-time.xml +++ b/doc/man/scons-time.xml @@ -824,7 +824,7 @@ with a hyphen (-). Example: - + % scons-time run --svn=http://scons.tigris.org/svn/trunk --num=1247,1249-1252 . @@ -1216,7 +1216,7 @@ subset of the full build for the configuration. configuration file for a hypothetical sample project: - + # The project doesn't use SCons natively (yet), so we're # timing a separate set of SConscript files that we lay # on top of the vanilla unpacked project tarball. diff --git a/doc/man/scons.xml b/doc/man/scons.xml index ee6aa20..a7ed37e 100644 --- a/doc/man/scons.xml +++ b/doc/man/scons.xml @@ -1,6 +1,8 @@ - +%version; %scons; @@ -13,10 +15,9 @@ %variables-mod; ]> - + @@ -40,6 +41,29 @@ + + SCons &buildversion; + MAN page + + + Steven + Knight + + + Steven Knight + + 2004, 2005, 2006, 2007, 2008, 2009, 2010 + + + 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Steven Knight + + + version &buildversion; + + + + SCONS 1 @@ -142,7 +166,7 @@ To make this obvious, scons prints the following messages about what it is doing: - + $ scons foo.out scons: Reading SConscript files ... scons: done reading SConscript files. @@ -181,7 +205,7 @@ construction environment, you can propagate the value of PATH from your external environment as follows: - + import os env = Environment(ENV = {'PATH' : os.environ['PATH']}) @@ -190,7 +214,7 @@ env = Environment(ENV = {'PATH' : os.environ['PATH']}) like $PATH, $HOME, $JAVA_HOME, $LANG, $SHELL, $TERM, etc., these variables can also be explicitly propagated: - + import os env = Environment(ENV = {'PATH' : os.environ['PATH'], 'HOME' : os.environ['HOME']}) @@ -199,7 +223,7 @@ env = Environment(ENV = {'PATH' : os.environ['PATH'], Or you may explicitly propagate the invoking user's complete external environment: - + import os env = Environment(ENV = os.environ) @@ -231,7 +255,7 @@ the target file or files to be built. By default, the command - + scons @@ -251,7 +275,7 @@ may be built by explicitly specifying the current directory (.) as a command-line target: - + scons . @@ -260,21 +284,21 @@ including any files outside of the current directory, may be specified by supplying a command-line target of the root directory (on POSIX systems): - + scons / or the path name(s) of the volume(s) in which all the targets should be built (on Windows systems): - + scons C:\ D:\ To build only specific targets, supply them as command-line arguments: - + scons foo bar @@ -287,13 +311,13 @@ The flag removes all files necessary to build the specified target: - + scons -c . to remove all target files, or: - + scons -c build export @@ -314,7 +338,7 @@ remaining at the top-level directory (where the file lives) and specifying the subdirectory as the target to be built: - + scons src/subdir @@ -326,7 +350,7 @@ hierarchy until it finds the file, and then builds targets relatively to the current subdirectory: - + cd src/subdir scons -u . @@ -337,7 +361,7 @@ supports building multiple targets in parallel via a option that takes, as its argument, the number of simultaneous tasks that may be spawned: - + scons -j 4 @@ -364,7 +388,7 @@ from trying to update the cache simultaneously. Values of variables to be passed to the SConscript file(s) may be specified on the command line: - + scons debug=1 . @@ -373,7 +397,7 @@ through the ARGUMENTS dictionary, and can be used in the SConscript file(s) to modify the build in any way: - + if ARGUMENTS.get('debug', 0): env = Environment(CCFLAGS = '-g') else: @@ -707,7 +731,7 @@ and about the actual libraries it finds. This is generally used to find out what files are included by the sources of a given derived file: - + $ scons --debug=includes foo.o @@ -778,7 +802,7 @@ is at least considering them or not. before the construction environment variables are substituted. Also shows which targets are being built by this command. Output looks something like this: - + $ scons --debug=presub Building myprog.o with action(s): $SHCC $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES @@ -1063,7 +1087,7 @@ are synonyms. build command: - + --cache-debug=FILE --cache-disable, --no-cache --cache-force, --cache-populate @@ -1174,7 +1198,7 @@ Command-line editing can be used if the readline module is available. - + $ scons --interactive scons: Reading SConscript files ... scons: done reading SConscript files. @@ -1430,7 +1454,7 @@ the last dir examined comes first in the resulting path. Windows: - + %ALLUSERSPROFILE/Application Data/scons/site_scons %USERPROFILE%/Local Settings/Application Data/scons/site_scons %APPDATA%/scons/site_scons @@ -1442,7 +1466,7 @@ the last dir examined comes first in the resulting path. Mac OS X: - + /Library/Application Support/SCons/site_scons /opt/local/share/scons/site_scons (for MacPorts) /sw/share/scons/site_scons (for Fink) @@ -1455,7 +1479,7 @@ the last dir examined comes first in the resulting path. Solaris: - + /opt/sfw/scons/site_scons /usr/share/scons/site_scons $HOME/.scons/site_scons @@ -1466,7 +1490,7 @@ the last dir examined comes first in the resulting path. Linux, HPUX, and other Posix-like systems: - + /usr/share/scons/site_scons $HOME/.scons/site_scons ./site_scons @@ -1580,7 +1604,7 @@ for the relevant output higher up in the tree. Multiple options may be specified, separated by commas: - + # Prints only derived files, with status information: scons --tree=derived,status @@ -1938,7 +1962,7 @@ A new construction environment is created using the Environment function: - + env = Environment() @@ -1949,7 +1973,7 @@ may be set in a construction environment either by specifying them as keywords when the object is created or by assigning them a value after the object is created: - + env = Environment(FOO = 'foo') env['BAR'] = 'bar' @@ -1965,7 +1989,7 @@ This is useful either if the exact content of the flags is unknown (for example, read from a control file) or if the flags are distributed to a number of construction variables. - + env = Environment(parse_flags = '-Iinclude -DEBUG -lm') @@ -1984,7 +2008,7 @@ An optional platform keyword argument may be used to specify that an environment should be initialized for a different platform: - + env = Environment(platform = 'cygwin') env = Environment(platform = 'os2') env = Environment(platform = 'posix') @@ -2029,13 +2053,13 @@ env = Environment(platform = my_platform) with which to initialize the environment may be specified as an optional keyword argument: - + env = Environment(tools = ['msvc', 'lex']) Non-built-in tools may be specified using the toolpath argument: - + env = Environment(tools = ['default', 'foo'], toolpath = ['tools']) @@ -2066,7 +2090,7 @@ and Tool() methods: - + base = Environment(toolpath=['custom_path']) derived = base.Clone(tools=['custom_tool']) derived.CustomBuilder() @@ -2204,7 +2228,7 @@ the target is first, followed by the source. The following are equivalent examples of calling the Program builder method: - + env.Program('bar', ['bar.c', 'foo.c']) env.Program('bar', Split('bar.c foo.c')) env.Program('bar', env.Split('bar.c foo.c')) @@ -2283,7 +2307,7 @@ or (on Windows systems) from the bar.c source file: - + env.Program(target = 'bar', source = 'bar.c') env.Program('bar', source = 'bar.c') env.Program(source = 'bar.c') @@ -2308,7 +2332,7 @@ program from the files and src/f2.c: - + env.Program('build/prog', ['f1.c', 'f2.c'], srcdir='src') @@ -2319,13 +2343,13 @@ variables will only be in effect when building the target, so they will not affect other parts of the build. For example, if you want to add additional libraries for just one program: - + env.Program('hello', 'hello.c', LIBS=['gl', 'glut']) or generate a shared library with a non-standard suffix: - + env.SharedLibrary('word', 'word.cpp', SHLIBSUFFIX='.ocx', LIBSUFFIXES=['.ocx']) @@ -2340,7 +2364,7 @@ see the descriptions of these variables, below, for more information.) parse_flags keyword argument in an override: - + env = Program('hello', 'hello.c', parse_flags = '-Iinclude -DEBUG -lm') @@ -2357,7 +2381,7 @@ are, in fact, methods of a construction environment object, they may also be called without an explicit environment: - + Program('hello', 'hello.c') SharedLibrary('word', 'word.cpp') @@ -2373,7 +2397,7 @@ environment may be called from custom Python modules that you import into an SConscript file by adding the following to the Python module: - + from SCons.Script import * @@ -2395,7 +2419,7 @@ to add a specific flag when compiling one specific object file: - + bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR') env.Program(source = ['foo.c', bar_obj_list, 'main.c']) @@ -2415,7 +2439,7 @@ If you need to manipulate a list of lists returned by Builders directly using Python, you can either build the list by hand: - + foo = Object('foo.c') bar = Object('bar.c') objects = ['begin.o'] + foo + ['middle.o'] + bar + ['end.o'] @@ -2429,7 +2453,7 @@ function supplied by scons to create a list containing just the Nodes, which may be more convenient: - + foo = Object('foo.c') bar = Object('bar.c') objects = Flatten(['begin.o', foo, 'middle.o', bar, 'end.o']) @@ -2457,7 +2481,7 @@ Instead, use the Python method to make sure the list is updated in-place. Example: - + object_files = [] # Do NOT use += as follows: @@ -2476,7 +2500,7 @@ by passing the Node to the Python-builtin str() function: - + bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR') print "The path to bar_obj is:", str(bar_obj_list[0]) @@ -2505,7 +2529,7 @@ and is non-zero, then scons will change to the target file's directory. - + # scons will change to the "sub" subdirectory # before executing the "cp" command. env.Command('sub/dir/foo.out', 'sub/dir/foo.in', @@ -2647,12 +2671,12 @@ must be called with or without a construction environment. In the following list, if you call something as a global function it looks like: - + Function(arguments) and if you call something through a construction environment it looks like: - + env.Function(arguments) If you can call the functionality in both ways, @@ -2662,7 +2686,7 @@ then both forms are listed. import into an SConscript file by adding the following to the Python module: - + from SCons.Script import * @@ -2678,7 +2702,7 @@ substitute construction variables into any supplied strings. For example: - + env = Environment(FOO = 'foo') Default('$FOO') env.Default('$FOO') @@ -2748,7 +2772,7 @@ These variables may be accessed from custom Python modules that you import into an SConscript file by adding the following to the Python module: - + from SCons.Script import * @@ -2778,7 +2802,7 @@ of the tuple, respectively. Example: - + print "first keyword, value =", ARGLIST[0][0], ARGLIST[0][1] print "second keyword, value =", ARGLIST[1][0], ARGLIST[1][1] third_tuple = ARGLIST[2] @@ -2807,7 +2831,7 @@ dictionary. Example: - + if ARGUMENTS.get('debug', 0): env = Environment(CCFLAGS = '-g') else: @@ -2848,7 +2872,7 @@ for additional information. Example: - + if 'foo' in BUILD_TARGETS: print "Don't forget to test the `foo' program!" if 'special/program' in BUILD_TARGETS: @@ -2886,7 +2910,7 @@ is explicitly being built. Example: - + if 'foo' in COMMAND_LINE_TARGETS: print "Don't forget to test the `foo' program!" if 'special/program' in COMMAND_LINE_TARGETS: @@ -2911,7 +2935,7 @@ function to get at the path name for each Node. Example: - + print str(DEFAULT_TARGETS[0]) if 'foo' in map(str, DEFAULT_TARGETS): print "Don't forget to test the `foo' program!" @@ -2926,7 +2950,7 @@ list change on on each successive call to the Default() function: - + print map(str, DEFAULT_TARGETS) # originally [] Default('foo') print map(str, DEFAULT_TARGETS) # now a node ['foo'] @@ -3013,21 +3037,21 @@ defined construction variables: Dictionary method of the construction environment: - + dict = env.Dictionary() dict["CC"] = "cc" or using the [] operator: - + env["CC"] = "cc" Construction variables can also be passed to the construction environment constructor: - + env = Environment(CC="cc") @@ -3035,7 +3059,7 @@ env = Environment(CC="cc") Clone method: - + env2 = env.Clone(CC="cl.exe") @@ -3270,7 +3294,7 @@ of the test file that will be compiled to check if the function exists; the default is: - + #ifdef __cplusplus extern "C" #endif @@ -3393,7 +3417,7 @@ or and selects the compiler to be used for the check; the default is "C". Example: - + sconf.CheckType('foo_type', '#include "my_types.h"', 'C++') @@ -3458,7 +3482,7 @@ a shared library, only that the compilation (not link) succeeds. Example of a typical Configure usage: - + env = Environment() conf = Configure( env ) if not conf.CheckCHeader( 'math.h' ): @@ -3507,7 +3531,7 @@ For example, CheckTypeSize('short', expect = 2) will return success only if short is two bytes. - + @@ -3771,7 +3795,7 @@ provides a Variables object to support overriding construction variables on the command line: - + $ scons VARIABLE=foo The variable values can also be specified in a text-based SConscript file. @@ -3800,7 +3824,7 @@ dictionary that holds variables specified on the command line. Example: - + vars = Variables('custom.py') vars = Variables('overrides.py', ARGUMENTS) vars = Variables(None, {FOO:'expansion', BAR:7}) @@ -3869,7 +3893,7 @@ for an individual call to the Add method. - + opt.AddVariables( ('debug', '', 0), ('CC', 'The C compiler'), @@ -3898,7 +3922,7 @@ method, below. but is called indirectly by passing the Variables object to the Environment() function: - + env = Environment(variables=vars) @@ -3914,7 +3938,7 @@ are added to the construction environment. Example: - + CC = 'my_cc' @@ -3929,7 +3953,7 @@ with which the Variables object was initialized, but for which the Variables object was not configured. - + env = Environment(variables=vars) for key, value in vars.UnknownVariables(): print "unknown variable: %s=%s" % (key, value) @@ -3946,7 +3970,7 @@ that can be used on the next invocation to automatically load the current settings. This method combined with the Variables method can be used to support caching of variables between runs. - + env = Environment() vars = Variables(['variables.cache', 'custom.py']) vars.Add(...) @@ -3979,7 +4003,7 @@ and return cmp function). - + Help(vars.GenerateHelpText(env)) Help(vars.GenerateHelpText(env, sort=cmp)) @@ -4247,7 +4271,7 @@ in a single call to the AddVariables method: - + vars.AddVariables( BoolVariable('warnings', 'compilation with -Wall and similiar', 1), EnumVariable('debug', 'debug output and symbols', 'no' @@ -4326,7 +4350,7 @@ or Dir. The - + # Get the current build dir's path, relative to top. Dir('.').path # Current dir's absolute path @@ -4431,7 +4455,7 @@ within the parent directory of For example: - + # Get a Node for a file within a directory incl = Dir('include') f = incl.File('header.h') @@ -4601,7 +4625,7 @@ that have a different suffix. (The default behavior is to leave untouched any target file name that looks like it already has any suffix.) - + b1 = Builder("build_it < $SOURCE > $TARGET" suffix = ".out") b2 = Builder("build_it < $SOURCE > $TARGET" @@ -4691,7 +4715,7 @@ or directory target. Example: - + MakeDirectoryBuilder = Builder(action=my_mkdir, target_factory=Dir) env = Environment() env.Append(BUILDERS = {'MakeDirectory':MakeDirectoryBuilder}) @@ -4935,7 +4959,7 @@ due to the mismatched suffixes of and foo.extra. - + b = Builder(action={'.in' : 'build $SOURCES > $TARGET'}, source_ext_match = None) @@ -4956,7 +4980,7 @@ used for normal builds of normal target files, which use the environment that was used to call the Builder for the target file.) - + b = Builder(action="build < $SOURCE > $TARGET") env = Environment(BUILDERS = {'MyBuild' : b}) env.MyBuild('foo.out', 'foo.in', my_arg = 'xyzzy') @@ -5007,7 +5031,7 @@ and to use just the filename portion of the targets and source. - + b = Builder(action="build < ${SOURCE.file} > ${TARGET.file}", chdir=1) env = Environment(BUILDERS = {'MyBuild' : b}) @@ -5111,7 +5135,7 @@ or by a (hyphen) to ignore the exit status from the specified command: - + Action('$CC -c -o $TARGET $SOURCES') # Doesn't print the line being executed. @@ -5148,7 +5172,7 @@ This allows white space to be enclosed in an argument by defining a command in a list within a list: - + Action([['cc', '-c', '-DWHITE SPACE', '-o', '$TARGET', '$SOURCES']]) @@ -5178,7 +5202,7 @@ The actual target and source file name(s) may be retrieved from their Node objects via the built-in Python str() function: - + target_file_name = str(target) source_file_names = map(lambda x: str(x), source) @@ -5347,7 +5371,7 @@ and to use just the filename portion of the targets and source. - + a = Action("build < ${SOURCE.file} > ${TARGET.file}", chdir=1) @@ -5413,7 +5437,7 @@ have actually changed since their targets were built. Example: - + a = Action('build $CHANGED_SOURCES', batch_key=True) @@ -5543,7 +5567,7 @@ file is being read, you can use the Execute global function to do so: - + Execute(Touch('file')) @@ -5560,7 +5584,7 @@ without relying on platform-specific external commands: that - + env = Environment(TMPBUILD = '/tmp/builddir') env.Command('foo.out', 'foo.in', [Mkdir('$TMPBUILD'), @@ -5580,7 +5604,7 @@ file or directory to the specified mode. Examples: - + Execute(Chmod('file', 0755)) env.Command('foo.out', 'foo.in', @@ -5601,7 +5625,7 @@ source file or directory to the destination file or directory. Examples: - + Execute(Copy('foo.output', 'foo.input')) env.Command('bar.out', 'bar.in', @@ -5631,7 +5655,7 @@ that is, the Action will silently do nothing if the entry does not exist. Examples: - + Execute(Delete('/tmp/buildroot')) env.Command('foo.out', 'foo.in', @@ -5652,7 +5676,7 @@ directory dir . Examples: - + Execute(Mkdir('/tmp/outputdir')) env.Command('foo.out', 'foo.in', @@ -5676,7 +5700,7 @@ the specified file or directory. Examples: - + Execute(Move('file.destination', 'file.source')) env.Command('output_file', 'input_file', @@ -5695,7 +5719,7 @@ on the specified file. Examples: - + Execute(Touch('file_to_be_touched')) env.Command('marker', 'input_file', @@ -5797,13 +5821,13 @@ and may not be set in a construction environment.) For example, given the construction variable CC='cc', targets=['foo'], and sources=['foo.c', 'bar.c']: - + action='$CC -c -o $TARGET $SOURCES' would produce the command line: - + cc -c -o foo foo.c bar.c @@ -5814,13 +5838,13 @@ a Python slice subscript appended to select one or more items from a list. In the previous example, the string: - + ${SOURCES[1]} would produce: - + bar.c @@ -5937,7 +5961,7 @@ it just returns the directory part of the filename. For example, the specified target will expand as follows for the corresponding modifiers: - + $TARGET => sub/dir/file.x ${TARGET.base} => sub/dir/file ${TARGET.dir} => sub/dir @@ -6007,7 +6031,7 @@ so that the arguments will be associated with the instantiation of the class: - + class foo(object): def __init__(self, arg): self.arg = arg @@ -6043,21 +6067,21 @@ and will be removed before the command is executed. For example, the command line: - + echo Last build occurred $( $TODAY $). > $TARGET would execute the command: - + echo Last build occurred $TODAY. > $TARGET but the command signature added to any target files would be: - + echo Last build occurred . > $TARGET @@ -6070,17 +6094,17 @@ echo Last build occurred . > $TARGET pairs gets evaluated by python 'eval', with the python globals set to the current environment's set of construction variables. So in the following case: - + env['COND'] = 0 env.Command('foo.out', 'foo.in', the command executed will be either - + echo FOO > foo.out or - + echo BAR > foo.out according to the current value of env['COND'] when the command is @@ -6093,7 +6117,7 @@ BAR are environment variables, and their values are substituted into the final command. FOO is a list, so its elements are interpolated separated by spaces. - + env=Environment() env['COND'] = 0 env['FOO'] = ['foo1', 'foo2'] @@ -6478,7 +6502,7 @@ on the command line may have to put double quotes around the assignments: - + scons "FOO=BAR" "BAZ=BLEH" @@ -6508,7 +6532,7 @@ directories in the PATH variable. If you have both MSVC and MinGW installed and you want to use MinGW instead of MSVC, then you must explictly tell SCons to use MinGW by passing - + tools=['mingw'] @@ -6525,7 +6549,7 @@ this section contains a brief overview of some common tasks. Basic Compilation From a Single Source File - + env = Environment() env.Program(target = 'foo', source = 'foo.c') @@ -6539,7 +6563,7 @@ or by specifying a dot ("scons ."). Basic Compilation From Multiple Source Files - + env = Environment() env.Program(target = 'foo', source = Split('f1.c f2.c f3.c')) @@ -6548,7 +6572,7 @@ env.Program(target = 'foo', source = Split('f1.c f2.c f3.c')) Setting a Compilation Flag - + env = Environment(CCFLAGS = '-g') env.Program(target = 'foo', source = 'foo.c') @@ -6562,7 +6586,7 @@ env.Program(target = 'foo', source = 'foo.c') need to set CCFLAGS to specify -I options by hand. SCons will construct the right -I options from CPPPATH. - + env = Environment(CPPPATH = ['.']) env.Program(target = 'foo', source = 'foo.c') @@ -6571,7 +6595,7 @@ env.Program(target = 'foo', source = 'foo.c') Search Multiple Directories For .h Files - + env = Environment(CPPPATH = ['include1', 'include2']) env.Program(target = 'foo', source = 'foo.c') @@ -6580,7 +6604,7 @@ env.Program(target = 'foo', source = 'foo.c') Building a Static Library - + env = Environment() env.StaticLibrary(target = 'foo', source = Split('l1.c l2.c')) env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c']) @@ -6590,7 +6614,7 @@ env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c']) Building a Shared Library - + env = Environment() env.SharedLibrary(target = 'foo', source = ['l5.c', 'l6.c']) env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c')) @@ -6600,7 +6624,7 @@ env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c')) Linking a Local Library Into a Program - + env = Environment(LIBS = 'mylib', LIBPATH = ['.']) env.Library(target = 'mylib', source = Split('l1.c l2.c')) env.Program(target = 'prog', source = ['p1.c', 'p2.c']) @@ -6614,7 +6638,7 @@ env.Program(target = 'prog', source = ['p1.c', 'p2.c']) you can leave off the target file suffix, and SCons will add it automatically. - + bld = Builder(action = 'pdftex < $SOURCES > $TARGET' suffix = '.pdf', src_suffix = '.tex') @@ -6635,7 +6659,7 @@ env.Object(), env.StaticLibrary(), etc. Adding Your Own Builder Object to an Environment - + bld = Builder(action = 'pdftex < $SOURCES > $TARGET' suffix = '.pdf', src_suffix = '.tex') @@ -6648,7 +6672,7 @@ env.Program(target = 'bar', source = 'bar.c') You also can use other Pythonic techniques to add to the BUILDERS construction variable, such as: - + env = Environment() env['BUILDERS]['PDFBuilder'] = bld @@ -6668,7 +6692,7 @@ lines in the scanned file. This would implicitly assume that all included files live in the top-level directory: - + import re include_re = re.compile(r'^include\s+(\S+)$', re.M) @@ -6908,7 +6932,7 @@ prefix and suffix for the current platform The following would allow the C compiler to be specified on the command line or in the file custom.py. - + vars = Variables('custom.py') vars.Add('CC', 'The C compiler.') env = Environment(variables=vars) @@ -6917,19 +6941,19 @@ Help(vars.GenerateHelpText(env)) The user could specify the C compiler on the command line: - + scons "CC=my_cc" or in the custom.py file: - + CC = 'my_cc' or get documentation on the options: - + $ scons -h CC: The C compiler. @@ -6953,32 +6977,32 @@ include "StdAfx.h" as the first header in all the source files you are compiling to object files. For example: StdAfx.h: - + #include <windows.h> #include <my_big_header.h> StdAfx.cpp: - + #include <StdAfx.h> Foo.cpp: - + #include <StdAfx.h> /* do some stuff */ Bar.cpp: - + #include <StdAfx.h> /* do some other stuff */ SConstruct: - + env=Environment() env['PCHSTOP'] = 'StdAfx.h' env['PCH'] = env.PCH('StdAfx.cpp')[0] @@ -7000,7 +7024,7 @@ file. SCons supports PDB files through the PDB construction variable. SConstruct: - + env=Environment() env['PDB'] = 'MyApp.pdb' env.Program('MyApp', ['Foo.cpp', 'Bar.cpp']) @@ -7048,4 +7072,4 @@ source code. Anthony Roach <aroach@electriceyeball.com> - + diff --git a/doc/man/scons_title.xsl b/doc/man/scons_title.xsl new file mode 100644 index 0000000..eeac658 --- /dev/null +++ b/doc/man/scons_title.xsl @@ -0,0 +1,6517 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200mm + 205.9mm + + + + + 190mm + 195.9mm + + + + + 180mm + 185.9mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scons-titlepage-first + + + + + + + + + + + + + + + + + + + + + scons-titlepage-odd + + + + + + + + + + + + + + + + + + + + + scons-titlepage-even + + + + + + + + + + + + + + + + + + + + + + scons-chapter-first + + + + + + + + + + + + + + + + + + + + + scons-chapter-odd + + + + + + + + + + + + + + + + + + + + + scons-chapter-even + + + + + + + + + + + + + + + + + + + + + + + + scons-titlepage-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-titlepage-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-titlepage-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + scons-chapter-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-chapter-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-chapter-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + scons-titlepage-even + scons-titlepage-odd + + + + + + + + + + + + + + + + + + body-even-draft + body-odd-draft + + + + + + + + + + + + + + + + scons-chapter-even + scons-chapter-odd + + + + + + + + + + + + + + + + scons-chapter-even-draft + scons-chapter-odd-draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + #C51410 + always + center + after + 0pt + 0pt + + + + + + + 24pt + #C51410 + bold + always + left + after + 0pt + 0pt + 0.7em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + 4 + 3 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + 1 + 1 + 3 + + + + + + 3 + 3 + 1 + + + + + + + + + + + + + + proportional-column-width( + + header + + + ) + + + + + proportional-column-width( + + header + + + ) + + + + + proportional-column-width( + + header + + + ) + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + 1 + 1 + 3 + + + + + + 3 + 3 + 1 + + + + + + + + + + + + + proportional-column-width( + + footer + + + ) + + + + + proportional-column-width( + + footer + + + ) + + + + + proportional-column-width( + + footer + + + ) + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.5pt + solid + #C51410 + + + + + + + + + + + 0.5pt + solid + #C51410 + + + +1 0 1 +1 0 1 + + + + + diff --git a/doc/man/titlepage/SConsBuildBricks_path.svg b/doc/man/titlepage/SConsBuildBricks_path.svg new file mode 100644 index 0000000..ed0c60d --- /dev/null +++ b/doc/man/titlepage/SConsBuildBricks_path.svg @@ -0,0 +1,320 @@ + + + + + + + + + + image/svg+xml + + + 2008-05-18 + + + Hartmut Goebel + + + + + Hartmut Goebel <h.goebel@goebel-consult.de> + + + en + + + SCons + software build tool + software construction tool + + + + + + Based on the pixeled SCons logo (author unknown). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/man/titlepage/SCons_path.svg b/doc/man/titlepage/SCons_path.svg new file mode 100644 index 0000000..ef580ee --- /dev/null +++ b/doc/man/titlepage/SCons_path.svg @@ -0,0 +1,196 @@ + + + + + SCons - Build your software, better (SCons Logo) + + + + + + image/svg+xml + + SCons - Build your software, better (SCons Logo) + 2011-05-19 + + + Dirk Baechle + + + + + Dirk Baechle <dl9obn@darc.de> + + + en + + + SCons + software build tool + software construction tool + + + + + + Based on the SCons (Constructs using) logo by Hartmut Goebel <h.goebel@goebel-consult.de>. + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/man/titlepage/mapnik_final_colors.svg b/doc/man/titlepage/mapnik_final_colors.svg new file mode 100644 index 0000000..23bb54a --- /dev/null +++ b/doc/man/titlepage/mapnik_final_colors.svg @@ -0,0 +1,6397 @@ + + + SCons, Book titlepage background + + + + image/svg+xml + + + SCons, Book titlepage background + 2013-04-15 + + + Dirk Baechle + + + + + Dirk Baechle <dl9obn@darc.de> + + + en + + + SCons + software build tool + software construction tool + + + + + Based on a SCons dependency tree of the Mapnik project (www.mapnik.org) + + + + + + + + + + + + + + + + + + + + + + + ./src/agg_renderer.os + + + + + + + ./agg/src + + + + + + + ./src/graphics.os + + + + + + + ./src/font_set.os + + + + + + + ./agg/src/agg_vcgen_markers_term.o + + + + + + + ./src/params.os + + + + + + + ./agg/src/agg_image_filters.o + + + + + + + ./bindings/python/mapnik_symbolizer.os + + + + + + + ./src/memory.os + + + + + + + ./bindings/python/mapnik_font_engine.os + + + + + + + ./plugins/input/shape/dbffile.os + + + + + + + ./agg/src/agg_line_aa_basics.o + + + + + + + ./src/save_map.os + + + + + + + ./bindings/python/mapnik_view_transform.os + + + + + + + ./src/color.os + + + + + + + ./agg/libagg.a + + + + + + + ./src/font_engine_freetype.os + + + + + + + ./src/stroke.os + + + + + + + ./bindings/python/mapnik_image.os + + + + + + + ./src/image_util.os + + + + + + + ./bindings/python/mapnik_datasource_cache.os + + + + + + + ./agg/include + + + + + + + ./bindings/python/mapnik_rule.os + + + + + + + ./agg/src/agg_bezier_arc.o + + + + + + + ./bindings/python/mapnik_featureset.os + + + + + + + ./agg/src/agg_arc.o + + + + + + + ./plugins/input/shape/shapefile.os + + + + + + + ./plugins/input/raster/raster_datasource.os + + + + + + + ./plugins/input/raster/raster_featureset.os + + + + + + + ./src/unicode.os + + + + + + + ./bindings/python/mapnik/ogcserver + + + + + + + ./bindings/python/mapnik_map.os + + + + + + + ./src/arrow.os + + + + + + + ./plugins + + + + + + + ./plugins/input/raster/raster.input + + + + + + + ./agg/src/agg_vcgen_contour.o + + + + + + + ./agg/src/agg_trans_warp_magnifier.o + + + + + + + ./bindings/python/mapnik_datasource.os + + + + + + + ./plugins/input/shape/shape_featureset.os + + + + + + + ./src/load_map.os + + + + + + + ./bindings/python/mapnik_point_symbolizer.os + + + + + + + ./src/line_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik + + + + + + + ./plugins/input/raster + + + + + + + ./src/map.os + + + + + + + ./src/wkb.os + + + + + + + ./agg/src/agg_vcgen_stroke.o + + + + + + + ./agg/src/agg_gsv_text.o + + + + + + + ./plugins/input/shape/shape.os + + + + + + + ./bindings + + + + + + + ./src + + + + + + + ./bindings/python/mapnik_filter.os + + + + + + + ./agg/src/agg_vcgen_bspline.o + + + + + + + ./bindings/python/mapnik_coord.os + + + + + + + ./src/envelope.os + + + + + + + ./agg/src/agg_vpgen_segmentator.o + + + + + + + ./bindings/python/mapnik_layer.os + + + + + + + ./bindings/python/mapnik_line_symbolizer.os + + + + + + + ./src/shield_symbolizer.os + + + + + + + ./agg/src/agg_trans_double_path.o + + + + + + + ./src/projection.os + + + + + + + ./src/tiff_reader.os + + + + + + + ./bindings/python/mapnik_proj_transform.os + + + + + + + ./bindings/python/mapnik_style.os + + + + + + + ./bindings/python/mapnik_shield_symbolizer.os + + + + + + + ./src/image_reader.os + + + + + + + ./agg/src/agg_bspline.o + + + + + + + ./agg/src/agg_trans_single_path.o + + + + + + + ./plugins/input/raster/raster_info.os + + + + + + + ./agg/src/agg_vcgen_dash.o + + + + + + + ./bindings/python/mapnik_projection.os + + + + + + + ./bindings/python/mapnik_image_view.os + + + + + + + ./src/distance.os + + + + + + + ./src/datasource_cache.os + + + + + + + ./bindings/python/mapnik_parameters.os + + + + + + + ./src/plugin.os + + + + + + + ./agg/src/agg_arrowhead.o + + + + + + + ./bindings/python/mapnik_feature.os + + + + + + + ./agg/src/agg_embedded_raster_fonts.o + + + + + + + ./src/libmapnik.so + + + + + + + ./src/placement_finder.os + + + + + + + ./agg/src/agg_sqrt_tables.o + + + + + + + ./agg/src/agg_vpgen_clip_polyline.o + + + + + + + ./bindings/python/mapnik_raster_symbolizer.os + + + + + + + ./agg/src/agg_line_profile_aa.o + + + + + + + ./bindings/python/mapnik_line_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik_color.os + + + + + + + ./src/proj_transform.os + + + + + + + ./src/memory_datasource.os + + + + + + + ./plugins/input + + + + + + + ./bindings/python/mapnik_python.os + + + + + + + ./src/png_reader.os + + + + + + + ./bindings/python/mapnik_envelope.os + + + + + + + ./bindings/python/mapnik_stroke.os + + + + + + + ./plugins/input/shape/shape.input + + + + + + + ./bindings/python/mapnik_query.os + + + + + + + ./src/point_symbolizer.os + + + + + + + ./src/filter_factory.os + + + + + + + ./bindings/python/mapnik_polygon_symbolizer.os + + + + + + + ./agg/src/agg_vcgen_smooth_poly1.o + + + + + + + ./plugins/input/shape/shape_index_featureset.os + + + + + + + ./bindings/python/python_cairo.os + + + + + + + ./src/symbolizer.os + + + + + + + ./bindings/python/_mapnik.so + + + + + + + ./agg/src/agg_trans_affine.o + + + + + + + ./src/polygon_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik_polygon_pattern_symbolizer.os + + + + + + + ./agg/src/agg_curves.o + + + + + + + ./src/text_symbolizer.os + + + + + + + ./src/scale_denominator.os + + + + + + + ./plugins/input/shape/shape_io.os + + + + + + + ./src/layer.os + + + + + + + ./agg + + + + + + + ./src/libxml2_loader.os + + + + + + + ./agg/src/agg_vpgen_clip_polygon.o + + + + + + + ./plugins/input/shape + + + + + + + ./bindings/python/mapnik_geometry.os + + + + + + + ./bindings/python/mapnik_text_symbolizer.os + + + + + + + ./agg/src/agg_rounded_rect.o + + + + + + + ./bindings/python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/python10/SConstruct b/doc/python10/SConstruct index 2544cf4..4dc69b1 100644 --- a/doc/python10/SConstruct +++ b/doc/python10/SConstruct @@ -32,8 +32,7 @@ env = Environment(ENV={'PATH' : os.environ['PATH']}, has_pdf = False if (env.WhereIs('fop') or - env.WhereIs('xep') or - env.WhereIs('jw')): + env.WhereIs('xep')): has_pdf = True # diff --git a/doc/python10/design.xml b/doc/python10/design.xml index cf02a84..f4b5b39 100644 --- a/doc/python10/design.xml +++ b/doc/python10/design.xml @@ -41,14 +41,17 @@ +
+&SCons; architecture - + +
@@ -196,14 +199,17 @@ +
+ Node subsystem - + +
@@ -255,14 +261,17 @@ +
+ Scanner subsystem - + +
@@ -292,14 +301,17 @@ +
+ Signature subsystem - + +
@@ -343,14 +355,17 @@ +
+ Builder subsystem - + +
@@ -401,14 +416,17 @@ +
+ Job/Task subsystem - + +
diff --git a/doc/reference/MANIFEST b/doc/reference/MANIFEST index 438aada..a4a0c8f 100644 --- a/doc/reference/MANIFEST +++ b/doc/reference/MANIFEST @@ -19,3 +19,13 @@ copyright.xml errors.xml main.xml preface.xml +chtml.xsl +html.xsl +pdf.xsl +scons_title.xsl +scons.css +SConstruct +titlepage/bricks.jpg +titlepage/mapnik_final_colors.svg +titlepage/SCons_path.svg +titlepage/SConsBuildBricks_path.svg diff --git a/doc/reference/SConstruct b/doc/reference/SConstruct index b306b4f..f8b472e 100644 --- a/doc/reference/SConstruct +++ b/doc/reference/SConstruct @@ -28,12 +28,14 @@ import os env = Environment(ENV={'PATH' : os.environ['PATH']}, tools=['docbook'], - toolpath=['../../src/engine/SCons/Tool']) + toolpath=['../../src/engine/SCons/Tool'], + DOCBOOK_DEFAULT_XSL_HTML='html.xsl', + DOCBOOK_DEFAULT_XSL_HTMLCHUNKED='chtml.xsl', + DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl') has_pdf = False if (env.WhereIs('fop') or - env.WhereIs('xep') or - env.WhereIs('jw')): + env.WhereIs('xep')): has_pdf = True # @@ -42,6 +44,7 @@ if (env.WhereIs('fop') or env.DocbookXInclude('reference_xi.xml', 'main.xml') env.DocbookXslt('reference.xml', 'reference_xi.xml', xsl='../xslt/to_docbook.xslt') -env.DocbookHtml('reference.html','reference.xml') +env.DocbookHtml('index.html','reference.xml') +env.DocbookHtmlChunked('index.html', 'reference.xml', base_dir='scons-reference/') if has_pdf: - env.DocbookPdf('reference.pdf','reference.xml') + env.DocbookPdf('scons-reference.pdf','reference.xml') diff --git a/doc/reference/chtml.xsl b/doc/reference/chtml.xsl new file mode 100644 index 0000000..722aec1 --- /dev/null +++ b/doc/reference/chtml.xsl @@ -0,0 +1,56 @@ + + + + + + + + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + diff --git a/doc/reference/html.xsl b/doc/reference/html.xsl new file mode 100644 index 0000000..74ea529 --- /dev/null +++ b/doc/reference/html.xsl @@ -0,0 +1,55 @@ + + + + + + + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + diff --git a/doc/reference/main.xml b/doc/reference/main.xml index a544c6a..07f9cd6 100644 --- a/doc/reference/main.xml +++ b/doc/reference/main.xml @@ -40,15 +40,16 @@ --> - SCons Reference Manual &buildversion; + SCons &buildversion; + Reference Manual Steven Knight - Revision &buildrevision; (&builddate;) - + Steven Knight + 2003 diff --git a/doc/reference/pdf.xsl b/doc/reference/pdf.xsl new file mode 100644 index 0000000..652975f --- /dev/null +++ b/doc/reference/pdf.xsl @@ -0,0 +1,71 @@ + + + + + + + + + + +0pt + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + bold + + + + + + + + + + + diff --git a/doc/reference/scons.css b/doc/reference/scons.css new file mode 100644 index 0000000..6941abb --- /dev/null +++ b/doc/reference/scons.css @@ -0,0 +1,263 @@ +body { + background: #ffffff; + margin: 10px; + padding: 0; + font-family:palatino, georgia, verdana, arial, sans-serif; + } + + +a { + color: #80572a; + } + +a:hover { + color: #d72816; + text-decoration: none; + } + +tt { + color: #a14447; + } + +pre { + background: #e0e0e0; + } + +#main { + border: 1px solid; + border-color: black; + background-color: white; + background-image: url(../images/sconsback.png); + background-repeat: repeat-y 50% 0; + background-position: right top; + margin: 30px auto; + width: 750px; + } + +#banner { + background-image: url(../images/scons-banner.jpg); + border-bottom: 1px solid; + height: 95px; + } + +#menu { + font-family: sans-serif; + font-size: small; + line-height: 0.9em; + float: right; + width: 220px; + clear: both; + margin-top: 10px; + } + +#menu li { + margin-bottom: 7px; + } + +#menu li li { + margin-bottom: 2px; + } + +#menu li.submenuitems { + margin-bottom: 2px; + } + +#menu a { + text-decoration: none; + } + +#footer { + border-top: 1px solid black; + text-align: center; + font-size: small; + color: #822; + margin-top: 4px; + background: #eee; + } + +ul.hack { + list-style-position:inside; + } + +ul.menuitems { + list-style-type: none; + } + +ul.submenuitems { + list-style-type: none; + font-size: smaller; + margin-left: 0; + padding-left: 16px; + } + +ul.subsubmenuitems { + list-style-type: none; + font-size: smaller; + margin-left: 0; + padding-left: 16px; + } + +ol.upper-roman { + list-style-type: upper-roman; + } + +ol.decimal { + list-style-type: decimal; + } + +#currentpage { + font-weight: bold; + } + +#bodycontent { + margin: 15px; + width: 520px; + font-size: small; + line-height: 1.5em; + } + +#bodycontent li { + margin-bottom: 6px; + list-style-type: square; + } + +#sconsdownloadtable downloadtable { + display: table; + margin-left: 5%; + border-spacing: 12px 3px; + } + +#sconsdownloadtable downloadrow { + display: table-row; + } + +#sconsdownloadtable downloadentry { + display: table-cell; + text-align: center; + vertical-align: bottom; + } + +#sconsdownloadtable downloaddescription { + display: table-cell; + font-weight: bold; + text-align: left; + } + +#sconsdownloadtable downloadversion { + display: table-cell; + font-weight: bold; + text-align: center; + } + +#sconsdocversiontable sconsversiontable { + display: table; + margin-left: 10%; + border-spacing: 12px 3px; + } + +#sconsdocversiontable sconsversionrow { + display: table-row; + } + +#sconsdocversiontable docformat { + display: table-cell; + font-weight: bold; + text-align: center; + vertical-align: bottom; + } + +#sconsdocversiontable sconsversion { + display: table-cell; + font-weight: bold; + text-align: left; + } + +#sconsdocversiontable docversion { + display: table-cell; + font-weight: bold; + text-align: center; + } + +#osrating { + margin-left: 35px; + } + + +h2 { + color: #272; + color: #c01714; + font-family: sans-serif; + font-weight: normal; + } + +h2.pagetitle { + font-size: xx-large; + } +h3 { + margin-bottom: 10px; + } + +.date { + font-size: small; + color: gray; + } + +.link { + margin-bottom: 22px; + } + +.linkname { + } + +.linkdesc { + margin: 10px; + margin-top: 0; + } + +.quote { + margin-top: 20px; + margin-bottom: 10px; + background: #f8f8f8; + border: 1px solid; + border-color: #ddd; + } + +.quotetitle { + font-weight: bold; + font-size: large; + margin: 10px; + } + +.quotedesc { + margin-left: 20px; + margin-right: 10px; + margin-bottom: 15px; + } + +.quotetext { + margin-top: 20px; + margin-left: 20px; + margin-right: 10px; + font-style: italic; + } + +.quoteauthor { + font-size: small; + text-align: right; + margin-top: 10px; + margin-right: 7px; + } + +.sconslogo { + font-style: normal; + font-weight: bold; + color: #822; + } + +.downloadlink { + } + +.downloaddescription { + margin-left: 1em; + margin-bottom: 0.4em; + } diff --git a/doc/reference/scons_title.xsl b/doc/reference/scons_title.xsl new file mode 100644 index 0000000..2eb1293 --- /dev/null +++ b/doc/reference/scons_title.xsl @@ -0,0 +1,6352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200mm + 205.9mm + + + + + 190mm + 195.9mm + + + + + 180mm + 185.9mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scons-titlepage-first + + + + + + + + + + + + + + + + + + + + + scons-titlepage-odd + + + + + + + + + + + + + + + + + + + + + scons-titlepage-even + + + + + + + + + + + + + + + + + + + + + + scons-chapter-first + + + + + + + + + + + + + + + + + + + + + scons-chapter-odd + + + + + + + + + + + + + + + + + + + + + scons-chapter-even + + + + + + + + + + + + + + + + + + + + + + + + scons-titlepage-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-titlepage-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-titlepage-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + scons-chapter-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-chapter-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + scons-chapter-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + scons-titlepage-even + scons-titlepage-odd + + + + + + + + + + + + + + + + + + body-even-draft + body-odd-draft + + + + + + + + + + + + + + + + scons-chapter-even + scons-chapter-odd + + + + + + + + + + + + + + + + scons-chapter-even-draft + scons-chapter-odd-draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + #C51410 + always + center + after + 0pt + 0pt + + + + + + + 24pt + #C51410 + bold + always + left + after + 0pt + 0pt + 0.7em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + 4 + 3 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + 1 + 1 + 3 + + + + + + 3 + 3 + 1 + + + + + + + + + + + + + + proportional-column-width( + + header + + + ) + + + + + proportional-column-width( + + header + + + ) + + + + + proportional-column-width( + + header + + + ) + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + 1 + 1 + 3 + + + + + + 3 + 3 + 1 + + + + + + + + + + + + + proportional-column-width( + + footer + + + ) + + + + + proportional-column-width( + + footer + + + ) + + + + + proportional-column-width( + + footer + + + ) + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.5pt + solid + #C51410 + + + + + + + + + + + 0.5pt + solid + #C51410 + + + +1 0 1 +1 0 1 + + + + + diff --git a/doc/reference/titlepage/SConsBuildBricks_path.svg b/doc/reference/titlepage/SConsBuildBricks_path.svg new file mode 100644 index 0000000..ed0c60d --- /dev/null +++ b/doc/reference/titlepage/SConsBuildBricks_path.svg @@ -0,0 +1,320 @@ + + + + + + + + + + image/svg+xml + + + 2008-05-18 + + + Hartmut Goebel + + + + + Hartmut Goebel <h.goebel@goebel-consult.de> + + + en + + + SCons + software build tool + software construction tool + + + + + + Based on the pixeled SCons logo (author unknown). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/reference/titlepage/SCons_path.svg b/doc/reference/titlepage/SCons_path.svg new file mode 100644 index 0000000..ef580ee --- /dev/null +++ b/doc/reference/titlepage/SCons_path.svg @@ -0,0 +1,196 @@ + + + + + SCons - Build your software, better (SCons Logo) + + + + + + image/svg+xml + + SCons - Build your software, better (SCons Logo) + 2011-05-19 + + + Dirk Baechle + + + + + Dirk Baechle <dl9obn@darc.de> + + + en + + + SCons + software build tool + software construction tool + + + + + + Based on the SCons (Constructs using) logo by Hartmut Goebel <h.goebel@goebel-consult.de>. + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/reference/titlepage/mapnik_final_colors.svg b/doc/reference/titlepage/mapnik_final_colors.svg new file mode 100644 index 0000000..23bb54a --- /dev/null +++ b/doc/reference/titlepage/mapnik_final_colors.svg @@ -0,0 +1,6397 @@ + + + SCons, Book titlepage background + + + + image/svg+xml + + + SCons, Book titlepage background + 2013-04-15 + + + Dirk Baechle + + + + + Dirk Baechle <dl9obn@darc.de> + + + en + + + SCons + software build tool + software construction tool + + + + + Based on a SCons dependency tree of the Mapnik project (www.mapnik.org) + + + + + + + + + + + + + + + + + + + + + + + ./src/agg_renderer.os + + + + + + + ./agg/src + + + + + + + ./src/graphics.os + + + + + + + ./src/font_set.os + + + + + + + ./agg/src/agg_vcgen_markers_term.o + + + + + + + ./src/params.os + + + + + + + ./agg/src/agg_image_filters.o + + + + + + + ./bindings/python/mapnik_symbolizer.os + + + + + + + ./src/memory.os + + + + + + + ./bindings/python/mapnik_font_engine.os + + + + + + + ./plugins/input/shape/dbffile.os + + + + + + + ./agg/src/agg_line_aa_basics.o + + + + + + + ./src/save_map.os + + + + + + + ./bindings/python/mapnik_view_transform.os + + + + + + + ./src/color.os + + + + + + + ./agg/libagg.a + + + + + + + ./src/font_engine_freetype.os + + + + + + + ./src/stroke.os + + + + + + + ./bindings/python/mapnik_image.os + + + + + + + ./src/image_util.os + + + + + + + ./bindings/python/mapnik_datasource_cache.os + + + + + + + ./agg/include + + + + + + + ./bindings/python/mapnik_rule.os + + + + + + + ./agg/src/agg_bezier_arc.o + + + + + + + ./bindings/python/mapnik_featureset.os + + + + + + + ./agg/src/agg_arc.o + + + + + + + ./plugins/input/shape/shapefile.os + + + + + + + ./plugins/input/raster/raster_datasource.os + + + + + + + ./plugins/input/raster/raster_featureset.os + + + + + + + ./src/unicode.os + + + + + + + ./bindings/python/mapnik/ogcserver + + + + + + + ./bindings/python/mapnik_map.os + + + + + + + ./src/arrow.os + + + + + + + ./plugins + + + + + + + ./plugins/input/raster/raster.input + + + + + + + ./agg/src/agg_vcgen_contour.o + + + + + + + ./agg/src/agg_trans_warp_magnifier.o + + + + + + + ./bindings/python/mapnik_datasource.os + + + + + + + ./plugins/input/shape/shape_featureset.os + + + + + + + ./src/load_map.os + + + + + + + ./bindings/python/mapnik_point_symbolizer.os + + + + + + + ./src/line_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik + + + + + + + ./plugins/input/raster + + + + + + + ./src/map.os + + + + + + + ./src/wkb.os + + + + + + + ./agg/src/agg_vcgen_stroke.o + + + + + + + ./agg/src/agg_gsv_text.o + + + + + + + ./plugins/input/shape/shape.os + + + + + + + ./bindings + + + + + + + ./src + + + + + + + ./bindings/python/mapnik_filter.os + + + + + + + ./agg/src/agg_vcgen_bspline.o + + + + + + + ./bindings/python/mapnik_coord.os + + + + + + + ./src/envelope.os + + + + + + + ./agg/src/agg_vpgen_segmentator.o + + + + + + + ./bindings/python/mapnik_layer.os + + + + + + + ./bindings/python/mapnik_line_symbolizer.os + + + + + + + ./src/shield_symbolizer.os + + + + + + + ./agg/src/agg_trans_double_path.o + + + + + + + ./src/projection.os + + + + + + + ./src/tiff_reader.os + + + + + + + ./bindings/python/mapnik_proj_transform.os + + + + + + + ./bindings/python/mapnik_style.os + + + + + + + ./bindings/python/mapnik_shield_symbolizer.os + + + + + + + ./src/image_reader.os + + + + + + + ./agg/src/agg_bspline.o + + + + + + + ./agg/src/agg_trans_single_path.o + + + + + + + ./plugins/input/raster/raster_info.os + + + + + + + ./agg/src/agg_vcgen_dash.o + + + + + + + ./bindings/python/mapnik_projection.os + + + + + + + ./bindings/python/mapnik_image_view.os + + + + + + + ./src/distance.os + + + + + + + ./src/datasource_cache.os + + + + + + + ./bindings/python/mapnik_parameters.os + + + + + + + ./src/plugin.os + + + + + + + ./agg/src/agg_arrowhead.o + + + + + + + ./bindings/python/mapnik_feature.os + + + + + + + ./agg/src/agg_embedded_raster_fonts.o + + + + + + + ./src/libmapnik.so + + + + + + + ./src/placement_finder.os + + + + + + + ./agg/src/agg_sqrt_tables.o + + + + + + + ./agg/src/agg_vpgen_clip_polyline.o + + + + + + + ./bindings/python/mapnik_raster_symbolizer.os + + + + + + + ./agg/src/agg_line_profile_aa.o + + + + + + + ./bindings/python/mapnik_line_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik_color.os + + + + + + + ./src/proj_transform.os + + + + + + + ./src/memory_datasource.os + + + + + + + ./plugins/input + + + + + + + ./bindings/python/mapnik_python.os + + + + + + + ./src/png_reader.os + + + + + + + ./bindings/python/mapnik_envelope.os + + + + + + + ./bindings/python/mapnik_stroke.os + + + + + + + ./plugins/input/shape/shape.input + + + + + + + ./bindings/python/mapnik_query.os + + + + + + + ./src/point_symbolizer.os + + + + + + + ./src/filter_factory.os + + + + + + + ./bindings/python/mapnik_polygon_symbolizer.os + + + + + + + ./agg/src/agg_vcgen_smooth_poly1.o + + + + + + + ./plugins/input/shape/shape_index_featureset.os + + + + + + + ./bindings/python/python_cairo.os + + + + + + + ./src/symbolizer.os + + + + + + + ./bindings/python/_mapnik.so + + + + + + + ./agg/src/agg_trans_affine.o + + + + + + + ./src/polygon_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik_polygon_pattern_symbolizer.os + + + + + + + ./agg/src/agg_curves.o + + + + + + + ./src/text_symbolizer.os + + + + + + + ./src/scale_denominator.os + + + + + + + ./plugins/input/shape/shape_io.os + + + + + + + ./src/layer.os + + + + + + + ./agg + + + + + + + ./src/libxml2_loader.os + + + + + + + ./agg/src/agg_vpgen_clip_polygon.o + + + + + + + ./plugins/input/shape + + + + + + + ./bindings/python/mapnik_geometry.os + + + + + + + ./bindings/python/mapnik_text_symbolizer.os + + + + + + + ./agg/src/agg_rounded_rect.o + + + + + + + ./bindings/python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/user/MANIFEST b/doc/user/MANIFEST index 21c63b0..8eb4ea1 100644 --- a/doc/user/MANIFEST +++ b/doc/user/MANIFEST @@ -50,3 +50,13 @@ 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 +scons.css +SConstruct +titlepage/bricks.jpg +titlepage/mapnik_final_colors.svg +titlepage/SCons_path.svg +titlepage/SConsBuildBricks_path.svg diff --git a/doc/user/SConstruct b/doc/user/SConstruct index cb6f6f4..002aea4 100644 --- a/doc/user/SConstruct +++ b/doc/user/SConstruct @@ -30,12 +30,12 @@ env = Environment(ENV={'PATH' : os.environ['PATH']}, tools=['docbook'], toolpath=['../../src/engine/SCons/Tool'], DOCBOOK_DEFAULT_XSL_HTML='html.xsl', + DOCBOOK_DEFAULT_XSL_HTMLCHUNKED='chtml.xsl', DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl') has_pdf = False if (env.WhereIs('fop') or - env.WhereIs('xep') or - env.WhereIs('jw')): + env.WhereIs('xep')): has_pdf = True # @@ -47,7 +47,7 @@ env.DocbookXslt('scons_ex.xml', 'scons_xi.xml', env.DocbookXInclude('scons_exi.xml', 'scons_ex.xml') env.DocbookXslt('scons_db.xml', 'scons_exi.xml', xsl='../xslt/to_docbook.xslt') -env.DocbookHtml('scons.html','scons_db.xml') +env.DocbookHtml('index.html','scons_db.xml') +env.DocbookHtmlChunked('index.html', 'scons_db.xml', base_dir='scons-user/') if has_pdf: - env.DocbookPdf('scons.pdf','scons_db.xml') - + env.DocbookPdf('scons-user.pdf','scons_db.xml') diff --git a/doc/user/chtml.xsl b/doc/user/chtml.xsl new file mode 100644 index 0000000..fa01b46 --- /dev/null +++ b/doc/user/chtml.xsl @@ -0,0 +1,56 @@ + + + + + + + + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + diff --git a/doc/user/main.xml b/doc/user/main.xml index bd68a49..cb516e1 100644 --- a/doc/user/main.xml +++ b/doc/user/main.xml @@ -72,11 +72,8 @@ Knight - Stephen Knight + Steven Knight - 2004, 2005, 2006, 2007, 2008, 2009, 2010 diff --git a/doc/user/titlepage/SConsBuildBricks_path.svg b/doc/user/titlepage/SConsBuildBricks_path.svg index 9bdc322..ed0c60d 100644 --- a/doc/user/titlepage/SConsBuildBricks_path.svg +++ b/doc/user/titlepage/SConsBuildBricks_path.svg @@ -312,8 +312,8 @@ id="image1340" height="80.018639" width="465.43411" - sodipodi:absref="/home/dirk/workspace/docs/scons/xincluded_userguide/user/titlepage/bricks.jpg" - xlink:href="/home/dirk/workspace/docs/scons/xincluded_userguide/user/titlepage/bricks.jpg" + sodipodi:absref="bricks.jpg" + xlink:href="bricks.jpg" x="171.31058" y="0.17131744" /> diff --git a/doc/user/titlepage/SCons_path.svg b/doc/user/titlepage/SCons_path.svg index 4b0de55..ef580ee 100644 --- a/doc/user/titlepage/SCons_path.svg +++ b/doc/user/titlepage/SCons_path.svg @@ -13,9 +13,9 @@ height="58.247482" id="svg2" sodipodi:version="0.32" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.3.1 r9886" version="1.0" - sodipodi:docname="SCons.svg" + sodipodi:docname="SCons_path.svg" inkscape:export-filename="Constructs-using-SCons.png" inkscape:export-xdpi="100" inkscape:export-ydpi="100"> @@ -31,7 +31,7 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2.6603715" - inkscape:cx="75.950907" + inkscape:cx="7.1635215" inkscape:cy="31.742841" inkscape:document-units="px" inkscape:current-layer="layer2" @@ -82,25 +82,8 @@ + rdf:resource="" /> - - - - - - - - - - + + + SCons, Book titlepage background + + + + image/svg+xml + + + SCons, Book titlepage background + 2013-04-15 + + + Dirk Baechle + + + + + Dirk Baechle <dl9obn@darc.de> + + + en + + + SCons + software build tool + software construction tool + + + + + Based on a SCons dependency tree of the Mapnik project (www.mapnik.org) + + + + + + - - - - - + + + + + - - + + - - - - - - ./src/agg_renderer.os - - - - - - - ./agg/src - - - - - - - ./src/graphics.os - - - - - - - ./src/font_set.os - - - - - - - ./agg/src/agg_vcgen_markers_term.o - - - - - - - ./src/params.os - - - - - - - ./agg/src/agg_image_filters.o - - - - - - - ./bindings/python/mapnik_symbolizer.os - - - - - - - ./src/memory.os - - - - - - - ./bindings/python/mapnik_font_engine.os - - - - - - - ./plugins/input/shape/dbffile.os - - - - - - - ./agg/src/agg_line_aa_basics.o - - - - - - - ./src/save_map.os - - - - - - - ./bindings/python/mapnik_view_transform.os - - - - - - - ./src/color.os - - - - - - - ./agg/libagg.a - - - - - - - ./src/font_engine_freetype.os - - - - - - - ./src/stroke.os - - - - - - - ./bindings/python/mapnik_image.os - - - - - - - ./src/image_util.os - - - - - - - ./bindings/python/mapnik_datasource_cache.os - - - - - - - ./agg/include - - - - - - - ./bindings/python/mapnik_rule.os - - - - - - - ./agg/src/agg_bezier_arc.o - - - - - - - ./bindings/python/mapnik_featureset.os - - - - - - - ./agg/src/agg_arc.o - - - - - - - ./plugins/input/shape/shapefile.os - - - - - - - ./plugins/input/raster/raster_datasource.os - - - - - - - ./plugins/input/raster/raster_featureset.os - - - - - - - ./src/unicode.os - - - - - - - ./bindings/python/mapnik/ogcserver - - - - - - - ./bindings/python/mapnik_map.os - - - - - - - ./src/arrow.os - - - - - - - ./plugins - - - - - - - ./plugins/input/raster/raster.input - - - - - - - ./agg/src/agg_vcgen_contour.o - - - - - - - ./agg/src/agg_trans_warp_magnifier.o - - - - - - - ./bindings/python/mapnik_datasource.os - - - - - - - ./plugins/input/shape/shape_featureset.os - - - - - - - ./src/load_map.os - - - - - - - ./bindings/python/mapnik_point_symbolizer.os - - - - - - - ./src/line_pattern_symbolizer.os - - - - - - - ./bindings/python/mapnik - - - - - - - ./plugins/input/raster - - - - - - - ./src/map.os - - - - - - - ./src/wkb.os - - - - - - - ./agg/src/agg_vcgen_stroke.o - - - - - - - ./agg/src/agg_gsv_text.o - - - - - - - ./plugins/input/shape/shape.os - - - - - - - ./bindings - - - - - - - ./src - - - - - - - ./bindings/python/mapnik_filter.os - - - - - - - ./agg/src/agg_vcgen_bspline.o - - - - - - - ./bindings/python/mapnik_coord.os - - - - - - - ./src/envelope.os - - - - - - - ./agg/src/agg_vpgen_segmentator.o - - - - - - - ./bindings/python/mapnik_layer.os - - - - - - - ./bindings/python/mapnik_line_symbolizer.os - - - - - - - ./src/shield_symbolizer.os - - - - - - - ./agg/src/agg_trans_double_path.o - - - - - - - ./src/projection.os - - - - - - - ./src/tiff_reader.os - - - - - - - ./bindings/python/mapnik_proj_transform.os - - - - - - - ./bindings/python/mapnik_style.os - - - - - - - ./bindings/python/mapnik_shield_symbolizer.os - - - - - - - ./src/image_reader.os - - - - - - - ./agg/src/agg_bspline.o - - - - - - - ./agg/src/agg_trans_single_path.o - - - - - - - ./plugins/input/raster/raster_info.os - - - - - - - ./agg/src/agg_vcgen_dash.o - - - - - - - ./bindings/python/mapnik_projection.os - - - - - - - ./bindings/python/mapnik_image_view.os - - - - - - - ./src/distance.os - - - - - - - ./src/datasource_cache.os - - - - - - - ./bindings/python/mapnik_parameters.os - - - - - - - ./src/plugin.os - - - - - - - ./agg/src/agg_arrowhead.o - - - - - - - ./bindings/python/mapnik_feature.os - - - - - - - ./agg/src/agg_embedded_raster_fonts.o - - - - - - - ./src/libmapnik.so - - - - - - - ./src/placement_finder.os - - - - - - - ./agg/src/agg_sqrt_tables.o - - - - - - - ./agg/src/agg_vpgen_clip_polyline.o - - - - - - - ./bindings/python/mapnik_raster_symbolizer.os - - - - - - - ./agg/src/agg_line_profile_aa.o - - - - - - - ./bindings/python/mapnik_line_pattern_symbolizer.os - - - - - - - ./bindings/python/mapnik_color.os - - - - - - - ./src/proj_transform.os - - - - - - - ./src/memory_datasource.os - - - - - - - ./plugins/input - - - - - - - ./bindings/python/mapnik_python.os - - - - - - - ./src/png_reader.os - - - - - - - ./bindings/python/mapnik_envelope.os - - - - - - - ./bindings/python/mapnik_stroke.os - - - - - - - ./plugins/input/shape/shape.input - - - - - - - ./bindings/python/mapnik_query.os - - - - - - - ./src/point_symbolizer.os - - - - - - - ./src/filter_factory.os - - - - - - - ./bindings/python/mapnik_polygon_symbolizer.os - - - - - - - ./agg/src/agg_vcgen_smooth_poly1.o - - - - - - - ./plugins/input/shape/shape_index_featureset.os - - - - - - - ./bindings/python/python_cairo.os - - - - - - - ./src/symbolizer.os - - - - - - - ./bindings/python/_mapnik.so - - - - - - - ./agg/src/agg_trans_affine.o - - - - - - - ./src/polygon_pattern_symbolizer.os - - - - - - - ./bindings/python/mapnik_polygon_pattern_symbolizer.os - - - - - - - ./agg/src/agg_curves.o - - - - - - - ./src/text_symbolizer.os - - - - - - - ./src/scale_denominator.os - - - - - - - ./plugins/input/shape/shape_io.os - - - - - - - ./src/layer.os - - - - - - - ./agg - - - - - - - ./src/libxml2_loader.os - - - - - - - ./agg/src/agg_vpgen_clip_polygon.o - - - - - - - ./plugins/input/shape - - - - - - - ./bindings/python/mapnik_geometry.os - - - - - - - ./bindings/python/mapnik_text_symbolizer.os - - - - - - - ./agg/src/agg_rounded_rect.o - - - - - - - ./bindings/python - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + ./src/agg_renderer.os + + + + + + + ./agg/src + + + + + + + ./src/graphics.os + + + + + + + ./src/font_set.os + + + + + + + ./agg/src/agg_vcgen_markers_term.o + + + + + + + ./src/params.os + + + + + + + ./agg/src/agg_image_filters.o + + + + + + + ./bindings/python/mapnik_symbolizer.os + + + + + + + ./src/memory.os + + + + + + + ./bindings/python/mapnik_font_engine.os + + + + + + + ./plugins/input/shape/dbffile.os + + + + + + + ./agg/src/agg_line_aa_basics.o + + + + + + + ./src/save_map.os + + + + + + + ./bindings/python/mapnik_view_transform.os + + + + + + + ./src/color.os + + + + + + + ./agg/libagg.a + + + + + + + ./src/font_engine_freetype.os + + + + + + + ./src/stroke.os + + + + + + + ./bindings/python/mapnik_image.os + + + + + + + ./src/image_util.os + + + + + + + ./bindings/python/mapnik_datasource_cache.os + + + + + + + ./agg/include + + + + + + + ./bindings/python/mapnik_rule.os + + + + + + + ./agg/src/agg_bezier_arc.o + + + + + + + ./bindings/python/mapnik_featureset.os + + + + + + + ./agg/src/agg_arc.o + + + + + + + ./plugins/input/shape/shapefile.os + + + + + + + ./plugins/input/raster/raster_datasource.os + + + + + + + ./plugins/input/raster/raster_featureset.os + + + + + + + ./src/unicode.os + + + + + + + ./bindings/python/mapnik/ogcserver + + + + + + + ./bindings/python/mapnik_map.os + + + + + + + ./src/arrow.os + + + + + + + ./plugins + + + + + + + ./plugins/input/raster/raster.input + + + + + + + ./agg/src/agg_vcgen_contour.o + + + + + + + ./agg/src/agg_trans_warp_magnifier.o + + + + + + + ./bindings/python/mapnik_datasource.os + + + + + + + ./plugins/input/shape/shape_featureset.os + + + + + + + ./src/load_map.os + + + + + + + ./bindings/python/mapnik_point_symbolizer.os + + + + + + + ./src/line_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik + + + + + + + ./plugins/input/raster + + + + + + + ./src/map.os + + + + + + + ./src/wkb.os + + + + + + + ./agg/src/agg_vcgen_stroke.o + + + + + + + ./agg/src/agg_gsv_text.o + + + + + + + ./plugins/input/shape/shape.os + + + + + + + ./bindings + + + + + + + ./src + + + + + + + ./bindings/python/mapnik_filter.os + + + + + + + ./agg/src/agg_vcgen_bspline.o + + + + + + + ./bindings/python/mapnik_coord.os + + + + + + + ./src/envelope.os + + + + + + + ./agg/src/agg_vpgen_segmentator.o + + + + + + + ./bindings/python/mapnik_layer.os + + + + + + + ./bindings/python/mapnik_line_symbolizer.os + + + + + + + ./src/shield_symbolizer.os + + + + + + + ./agg/src/agg_trans_double_path.o + + + + + + + ./src/projection.os + + + + + + + ./src/tiff_reader.os + + + + + + + ./bindings/python/mapnik_proj_transform.os + + + + + + + ./bindings/python/mapnik_style.os + + + + + + + ./bindings/python/mapnik_shield_symbolizer.os + + + + + + + ./src/image_reader.os + + + + + + + ./agg/src/agg_bspline.o + + + + + + + ./agg/src/agg_trans_single_path.o + + + + + + + ./plugins/input/raster/raster_info.os + + + + + + + ./agg/src/agg_vcgen_dash.o + + + + + + + ./bindings/python/mapnik_projection.os + + + + + + + ./bindings/python/mapnik_image_view.os + + + + + + + ./src/distance.os + + + + + + + ./src/datasource_cache.os + + + + + + + ./bindings/python/mapnik_parameters.os + + + + + + + ./src/plugin.os + + + + + + + ./agg/src/agg_arrowhead.o + + + + + + + ./bindings/python/mapnik_feature.os + + + + + + + ./agg/src/agg_embedded_raster_fonts.o + + + + + + + ./src/libmapnik.so + + + + + + + ./src/placement_finder.os + + + + + + + ./agg/src/agg_sqrt_tables.o + + + + + + + ./agg/src/agg_vpgen_clip_polyline.o + + + + + + + ./bindings/python/mapnik_raster_symbolizer.os + + + + + + + ./agg/src/agg_line_profile_aa.o + + + + + + + ./bindings/python/mapnik_line_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik_color.os + + + + + + + ./src/proj_transform.os + + + + + + + ./src/memory_datasource.os + + + + + + + ./plugins/input + + + + + + + ./bindings/python/mapnik_python.os + + + + + + + ./src/png_reader.os + + + + + + + ./bindings/python/mapnik_envelope.os + + + + + + + ./bindings/python/mapnik_stroke.os + + + + + + + ./plugins/input/shape/shape.input + + + + + + + ./bindings/python/mapnik_query.os + + + + + + + ./src/point_symbolizer.os + + + + + + + ./src/filter_factory.os + + + + + + + ./bindings/python/mapnik_polygon_symbolizer.os + + + + + + + ./agg/src/agg_vcgen_smooth_poly1.o + + + + + + + ./plugins/input/shape/shape_index_featureset.os + + + + + + + ./bindings/python/python_cairo.os + + + + + + + ./src/symbolizer.os + + + + + + + ./bindings/python/_mapnik.so + + + + + + + ./agg/src/agg_trans_affine.o + + + + + + + ./src/polygon_pattern_symbolizer.os + + + + + + + ./bindings/python/mapnik_polygon_pattern_symbolizer.os + + + + + + + ./agg/src/agg_curves.o + + + + + + + ./src/text_symbolizer.os + + + + + + + ./src/scale_denominator.os + + + + + + + ./plugins/input/shape/shape_io.os + + + + + + + ./src/layer.os + + + + + + + ./agg + + + + + + + ./src/libxml2_loader.os + + + + + + + ./agg/src/agg_vpgen_clip_polygon.o + + + + + + + ./plugins/input/shape + + + + + + + ./bindings/python/mapnik_geometry.os + + + + + + + ./bindings/python/mapnik_text_symbolizer.os + + + + + + + ./agg/src/agg_rounded_rect.o + + + + + + + ./bindings/python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/engine/SCons/Tool/docbook/__init__.py b/src/engine/SCons/Tool/docbook/__init__.py index b1c643d..d6713c6 100644 --- a/src/engine/SCons/Tool/docbook/__init__.py +++ b/src/engine/SCons/Tool/docbook/__init__.py @@ -163,7 +163,7 @@ xsltproc_com = {'xsltproc' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGE 'xalan' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -q -out $TARGET -xsl $DOCBOOK_XSL -in $SOURCE'} xmllint_com = {'xmllint' : '$DOCBOOK_XMLLINT $DOCBOOK_XMLLINTFLAGS --xinclude $SOURCE > $TARGET'} fop_com = {'fop' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -fo $SOURCE -pdf $TARGET', - 'xep' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -o $TARGET $SOURCE', + 'xep' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -valid -fo $SOURCE -pdf $TARGET', 'jw' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -f docbook -b pdf $SOURCE -o $TARGET'} def __detect_cl_tool(env, chainkey, cdict): @@ -292,15 +292,21 @@ def __build_lxml(target, source, env): xsl_style = env.subst('$DOCBOOK_XSL') xsl_tree = etree.parse(xsl_style) + transform = etree.XSLT(xsl_tree) doc = etree.parse(str(source[0])) # Support for additional parameters parampass = {} if parampass: - result = doc.xslt(xsl_tree, *parampass) + result = transform(doc, **parampass) else: - result = doc.xslt(xsl_tree) + result = transform(doc) - result.write(str(target[0]), pretty_print=True) + try: + of = open(str(target[0]), "w") + of.write(of.write(etree.tostring(result, pretty_print=True))) + of.close() + except: + pass return None @@ -324,9 +330,8 @@ def __xinclude_lxml(target, source, env): doc = etree.parse(str(source[0])) doc.xinclude() try: - of = open(str(target[0]), 'w') - of.write(str(doc)) - of.close() + doc.write(str(target[0]), xml_declaration=True, + encoding="UTF-8", pretty_print=True) except: pass -- cgit v0.12