Fix XML in documentation, and in the bin/scons-doc.py script that generates
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 5 Apr 2010 05:06:48 +0000 (05:06 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 5 Apr 2010 05:06:48 +0000 (05:06 +0000)
the User's Guide XML from the .in files' SGML.

git-svn-id: http://scons.tigris.org/svn/scons/trunk@4767 fdb21ef1-2011-0410-befe-b5e4ea1792b1

21 files changed:
bin/scons-doc.py
doc/design/engine.xml
doc/design/goals.xml
doc/design/native.xml
doc/design/overview.xml
doc/developer/preface.xml
doc/python10/abstract.xml
doc/python10/design.xml
doc/python10/main.xml
doc/python10/process.xml
doc/user/actions.in
doc/user/actions.xml
doc/user/builders-writing.in
doc/user/builders-writing.xml
doc/user/command-line.in
doc/user/command-line.xml
doc/user/environments.in
doc/user/environments.xml
doc/user/parseflags.xml
doc/user/troubleshoot.xml
src/CHANGES.txt

index 03c66fa571f75a8fd50dd92b31dd41159e983669..f7a3a232885552f62a66fcd52e7c6cfd209e4862 100644 (file)
@@ -204,7 +204,7 @@ Sep = {
 orig = SCons.Node.FS.EntryProxy
 class MyEntryProxy(orig):
     def __str__(self):
-        return string.replace(str(self._Proxy__subject), os.sep, Sep)
+        return str(self._Proxy__subject).replace(os.sep, Sep)
 SCons.Node.FS.EntryProxy = MyEntryProxy
 
 # Slip our own RDirs() method into the Node.FS.File class so that the
@@ -213,8 +213,7 @@ SCons.Node.FS.EntryProxy = MyEntryProxy
 # running on to what's appropriate for the example system.
 orig_RDirs = SCons.Node.FS.File.RDirs
 def my_RDirs(self, pathlist, orig_RDirs=orig_RDirs):
-    return map(lambda x: string.replace(str(x), os.sep, Sep),
-               orig_RDirs(self, pathlist))
+    return [str(x).replace(os.sep, Sep) for x in orig_RDirs(self, pathlist)]
 SCons.Node.FS.File.RDirs = my_RDirs
 
 class Curry:
@@ -235,8 +234,8 @@ class Curry:
 def Str(target, source, env, cmd=""):
     result = []
     for cmd in env.subst_list(cmd, target=target, source=source):
-        result.append(string.join(map(str, cmd)))
-    return string.join(result, '\\n')
+        result.append(' '.join(map(str, cmd)))
+    return '\\n'.join(result)
 
 class ToolSurrogate:
     def __init__(self, tool, variable, func, varlist):
@@ -379,7 +378,7 @@ ToolList = {
 }
 
 toollist = ToolList[platform]
-filter_tools = string.split('%(tools)s')
+filter_tools = '%(tools)s'.split()
 if filter_tools:
     toollist = [x for x in toollist if x[0] in filter_tools]
 
@@ -564,6 +563,12 @@ class MySGML(sgmllib.SGMLParser):
     # Here is where the heavy lifting begins.  The following methods
     # handle the begin-end tags of our SCons examples.
 
+    def for_display(self, contents):
+        contents = contents.replace('__ROOT__', '')
+        contents = contents.replace('<', '&lt;')
+        contents = contents.replace('>', '&gt;')
+        return contents
+
     def start_scons_example(self, attrs):
         t = [t for t in attrs if t[0] == 'name']
         if t:
@@ -589,9 +594,7 @@ class MySGML(sgmllib.SGMLParser):
                     i = len(f.data) - 1
                     while f.data[i] == ' ':
                         i = i - 1
-                    output = f.data[:i+1].replace('__ROOT__', '')
-                    output = output.replace('<', '&lt;')
-                    output = output.replace('>', '&gt;')
+                    output = self.for_display(f.data[:i+1])
                     self.outfp.write(output)
             if e.data and e.data[0] == '\n':
                 e.data = e.data[1:]
@@ -773,8 +776,7 @@ class MySGML(sgmllib.SGMLParser):
                 content = engine_re.sub(r' File "bootstrap/src/engine/SCons/', content)
                 content = file_re.sub(r'\1 <module>', content)
                 content = nodelist_re.sub(r"\1 'NodeList' object \2", content)
-                content = content.replace('<', '&lt;')
-                content = content.replace('>', '&gt;')
+                content = self.for_display(content)
                 self.outfp.write(p + content + '\n')
 
         if o.data[0] == '\n':
@@ -811,7 +813,7 @@ class MySGML(sgmllib.SGMLParser):
     def end_sconstruct(self):
         f = self.f
         self.outfp.write('<programlisting>')
-        output = f.data.replace('__ROOT__', '')
+        output = self.for_display(f.data)
         self.outfp.write(output + '</programlisting>')
         delattr(self, 'f')
         self.afunclist = self.afunclist[:-1]
index 1a1e3354d0679985e8b6a84b8607d5afea4b25a2..afe9877101f5dbd20641c24d5233c63a0090a334 100644 (file)
@@ -85,7 +85,7 @@
 
 
 <section id="sect-envs">
- <title>&ConsEnvs</title>
+ <title>&ConsEnvs;</title>
 
  <para>
 
    <footnote>
     <para>
      It would be nice if we could avoid re-inventing the wheel here by
-     using some other Python-based tool &Autoconf replacement--like what
+     using some other Python-based tool &Autoconf; replacement--like what
      was supposed to come out of the Software Carpentry configuration
      tool contest.  It will probably be most efficient to roll our own
      logic initially and convert if something better does come along.
        MyBuilder = Builder(command = "$XX $XXFLAGS -c $_INPUTS -o $target")
 
        env.Command(targets = 'bar.out', sources = 'bar.in',
-                   command = "sed '1d' < $source > $target")
+                   command = "sed '1d' &lt; $source > $target")
        </programlisting>
 
   <para>
        <programlisting>
        env = Environment(FUNC = myfunc)
        env.Command(target = 'foo.out', source = 'foo.in',
-                   command = "${FUNC($<)}")
+                   command = "${FUNC($&lt;)}")
        </programlisting>
 
   <para>
@@ -1678,8 +1678,8 @@ I dunno, maybe this is fine as it is...
      <literal>target</literal> (that is, one passed to the
      &Build; or &Clean; method).  Objects which a top-level
      <literal>target</literal> is directly dependent upon have a
-     <literal>level</literal> of <1>, their direct dependencies have a
-     <literal>level</literal> of <2>, etc.  Typically used to indent
+     <literal>level</literal> of &lt;1>, their direct dependencies have a
+     <literal>level</literal> of &lt;2>, etc.  Typically used to indent
      output to reflect the recursive levels.
 
     </para>
index 2a7b69b5d05f03d908d500a5ddbaf2a9def0659f..f2e6b7c7a96b0106373a6549f1c5aa6d9ddf4cb6 100644 (file)
@@ -26,7 +26,7 @@
  <para>
 
    As a next-generation build tool,
-   &SCons should fundamentally
+   &SCons; should fundamentally
    improve on its predecessors.
    Rather than simply being driven by trying to
    <emphasis>not</emphasis> be like previous tools,
index 8cdd867d36e4364cef916eecdecf17f2e173877d..c665e0c1de4734eb790f48bf32552cb7ad0a345d 100644 (file)
@@ -52,7 +52,7 @@
  <para>
 
   By default, the &SCons; utility searches for a file named
-  &SConstruct;, &Sconstruct; or &sconstruct (in that order) in the
+  &SConstruct;, &Sconstruct; or &sconstruct; (in that order) in the
   current directory, and reads its configuration from the first file
   found.  A <option>-f</option> command-line option exists to read a
   different file name.
 
   Any variables (not just &SCons; objects) that are to be shared between configuration files must be
   explicitly passed in the &SConscript; call
-  using the &Export method:
+  using the &Export; method:
 
  </para>
 
@@ -261,7 +261,7 @@ Equivalent to the above example:
 
  <para>
 
-  &SCons; will allow users to share &consenvs, as well as other &SCons;
+  &SCons; will allow users to share &consenvs;, as well as other &SCons;
   objects and Python variables, by importing them from a central, shared
   repository using normal Python syntax:
 
index 38e425859aaa179c018bfb2e88492faf1ec92127..266c9e8148267cb5b1245b6440bb71d53fc00161 100644 (file)
@@ -409,7 +409,7 @@ This is where it will go, anyway...
   <para>
 
    An alternate &SCons; interface would provide backwards
-   compatibility with the classic &Make utility.
+   compatibility with the classic &Make; utility.
    This would be done by embedding the &SCons; Build Engine
    in a Python script that can translate existing
    &Makefile;s into the underlying calls to the
index 5784cee3429f2568696aa4828767cbf13dc0945e..39ef93a05da497b137711d90e44ee5d1331b02da 100644 (file)
@@ -36,7 +36,7 @@
     <para>
 
     There are a few overriding principles
-    we try to live up to in designing and implementing &SCons:
+    we try to live up to in designing and implementing &SCons;:
 
     </para>
 
index 294180ba908629250c29c36175c4c9db9bb25169..45b49181c45202b1b980c3ba49f5183afd2764e9 100644 (file)
@@ -3,7 +3,7 @@
   &SCons; is a software construction tool (build tool, or make tool)
   implemented in Python, which uses Python scripts as "configuration
   files" for software builds. Based on the design which won the
-  Software Carpentry build tool competition, &SCons solves a number of
+  Software Carpentry build tool competition, &SCons; solves a number of
   problems associated with other build tools, especially including the
   classic and ubiquitous &Make; itself.
 
index cb58af97e57a405d4c7d32d628beb21371cf7898..0dd5faaf138a151cf485d4ec1cbd7a7cab2183fc 100644 (file)
@@ -6,14 +6,14 @@
 
 <mediaobject>
   <imageobject>
-    <imagedata fileref="arch" format="eps" align="center">
+    <imagedata fileref="arch" format="eps" align="center"/>
   </imageobject>
   <imageobject>
-    <imagedata fileref="arch.jpg" format="jpg" align="center">
+    <imagedata fileref="arch.jpg" format="jpg" align="center"/>
   </imageobject>
   <!--  PDF files?
   <imageobject>
-    <imagedata fileref="arch.pdf" align="center">
+    <imagedata fileref="arch.pdf" align="center"/>
   </imageobject>
   -->
 </mediaobject>
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="node" format="eps" align="center">
+        <imagedata fileref="node" format="eps" align="center"/>
       </imageobject>
       <imageobject>
-        <imagedata fileref="node.jpg" format="jpg" align="center">
+        <imagedata fileref="node.jpg" format="jpg" align="center"/>
       </imageobject>
       <!--  PDF files?
       <imageobject>
-        <imagedata fileref="node.pdf" align="center">
+        <imagedata fileref="node.pdf" align="center"/>
       </imageobject>
       -->
     </mediaobject>
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="scanner" format="eps" align="center">
+        <imagedata fileref="scanner" format="eps" align="center"/>
       </imageobject>
       <imageobject>
-        <imagedata fileref="scanner.jpg" format="jpg" align="center">
+        <imagedata fileref="scanner.jpg" format="jpg" align="center"/>
       </imageobject>
       <!--  PDF files?
       <imageobject>
-        <imagedata fileref="scanner.pdf" align="center">
+        <imagedata fileref="scanner.pdf" align="center"/>
       </imageobject>
       -->
     </mediaobject>
       signature information for &Node; objects.
       The signature subsystem in &SCons;
       supports multiple ways to
-      determine whether a &Node is up-to-date
+      determine whether a &Node; is up-to-date
       by using an abstract &Sig; class
       as a strategy wrapper:
 
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="sig" format="eps" align="center">
+        <imagedata fileref="sig" format="eps" align="center"/>
       </imageobject>
       <imageobject>
-        <imagedata fileref="sig.jpg" format="jpg" align="center">
+        <imagedata fileref="sig.jpg" format="jpg" align="center"/>
       </imageobject>
       <!--  PDF files?
       <imageobject>
-        <imagedata fileref="sig.pdf" align="center">
+        <imagedata fileref="sig.pdf" align="center"/>
       </imageobject>
       -->
     </mediaobject>
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="builder" format="eps" align="center">
+        <imagedata fileref="builder" format="eps" align="center"/>
       </imageobject>
       <imageobject>
-        <imagedata fileref="builder.jpg" format="jpg" align="center">
+        <imagedata fileref="builder.jpg" format="jpg" align="center"/>
       </imageobject>
       <!--  PDF files?
       <imageobject>
-        <imagedata fileref="builder.pdf" align="center">
+        <imagedata fileref="builder.pdf" align="center"/>
       </imageobject>
       -->
     </mediaobject>
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="job-task" format="eps" align="center">
+        <imagedata fileref="job-task" format="eps" align="center"/>
       </imageobject>
       <imageobject>
-        <imagedata fileref="job-task.jpg" format="jpg" align="center">
+        <imagedata fileref="job-task.jpg" format="jpg" align="center"/>
       </imageobject>
       <!--  PDF files?
       <imageobject>
-        <imagedata fileref="job-task.pdf" align="center">
+        <imagedata fileref="job-task.pdf" align="center"/>
       </imageobject>
       -->
     </mediaobject>
 
     <para>
 
-      The &Taskmaster uses the node subsystem's
+      The &Taskmaster; uses the node subsystem's
       &Walker; class to walk the dependency tree,
       and the &Sig; class to use the
       appropriate method
     <para>
 
       &Builder; objects are associated with a &consenv; through a
-      &consvar; named &BUILDERS;, a list of the &Builder objects that
-      will be available for execution through the &consenv:
+      &consvar; named &BUILDERS;, a list of the &Builder; objects that
+      will be available for execution through the &consenv;:
 
     </para>
 
 
       &Scanner; objects are associated with a &consenv; through a
       &consvar; named &SCANNERS;, a list of the &Scanner; objects that
-      will be available through the &consenv:
+      will be available through the &consenv;:
 
     </para>
 
     The most noticeable difference between &scons; and &Make;, or most
     other build tools, is that the configuration files are actually
     Python scripts, generically called "SConscripts" (although the
-    top-level "Makefile" is named &SConstruct). Users do not have to
+    top-level "Makefile" is named &SConstruct;). Users do not have to
     learn a new language syntax, but instead configure dependency
     information by making direct calls to the Python API of the
-    &SCons; Build Engine. Here is an example &SConstruct file which
+    &SCons; Build Engine. Here is an example &SConstruct; file which
     builds a program in side-by-side normal and debug versions:
 
   </para>
index 42bc4af23204f86acce08259806f7ed8d174f5a2..e061b90a49d7ba4fa88b413fb7f18eafb38e8796 100644 (file)
         <holder>O'Reilly &amp; Associates, Inc.</holder>
       </copyright>
       <publisher>
-        <publishername>O'Reilly & Associates, Inc.</publishername>
+        <publishername>O'Reilly &amp; Associates, Inc.</publishername>
       </publisher>
       <title>Managing Projects with Make, 2nd Ed.</title>
     </biblioentry>
index f1b247985eeffffa9f6a7f04a660c1f7bdebcc5a..6b049be77974359148b4da3f249162986ba9bf51 100644 (file)
 
     <para>
 
-      In practice, these restrictions can be overridden as necessary­for
+      In practice, these restrictions can be overridden as necessary--for
       example, when changing comments or documentation.
 
     </para>
index c1e56166b07c0f4d0f5aedc5aa8ac29283c160af..d2a3dad8a148abdccaa0cf943a4ea2df3b9008be 100644 (file)
@@ -245,7 +245,7 @@ solutions to the above limitations.
   </para>
 
   <sconstruct>
-    b = Builder(action = 'build < $SOURCE > $TARGET')
+    b = Builder(action = 'build &lt; $SOURCE &gt; $TARGET')
   </sconstruct>
 
   <para>
@@ -255,7 +255,7 @@ solutions to the above limitations.
   </para>
 
   <sconstruct>
-    b = Builder(action = Action('build < $SOURCE > $TARGET'))
+    b = Builder(action = Action('build &lt; $SOURCE &gt; $TARGET'))
   </sconstruct>
 
   <para>
index 04178b0d6062bb9ae9f96e74826bc1d5086b4756..ea76eb9dd8cc5e2201d18af275163267ad03ea4c 100644 (file)
@@ -245,7 +245,7 @@ solutions to the above limitations.
   </para>
 
   <programlisting>
-    b = Builder(action = 'build < $SOURCE > $TARGET')
+    b = Builder(action = 'build &lt; $SOURCE &gt; $TARGET')
   </programlisting>
 
   <para>
@@ -255,7 +255,7 @@ solutions to the above limitations.
   </para>
 
   <programlisting>
-    b = Builder(action = Action('build < $SOURCE > $TARGET'))
+    b = Builder(action = Action('build &lt; $SOURCE &gt; $TARGET'))
   </programlisting>
 
   <para>
index 2c5cce2409099e7c3b82a62419ead6a5368d7384..2410831e052a4f28a739360602e50fb9f4affb2c 100644 (file)
@@ -129,7 +129,7 @@ This functionality could be invoked as in the following example:
     </para>
 
     <programlisting>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
     </programlisting>
 
     <para>
@@ -165,7 +165,7 @@ This functionality could be invoked as in the following example:
 
     <scons_example name="ex1">
        <file name="SConstruct">
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env = Environment(BUILDERS = {'Foo' : bld})
        import os
        env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
@@ -180,7 +180,7 @@ This functionality could be invoked as in the following example:
     </scons_example>
 
     <sconstruct>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env = Environment(BUILDERS = {'Foo' : bld})
     </sconstruct>
 
@@ -276,7 +276,7 @@ This functionality could be invoked as in the following example:
        env = Environment()
        import os
        env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env.Append(BUILDERS = {'Foo' : bld})
        env.Foo('file.foo', 'file.input')
        env.Program('hello.c')
@@ -294,7 +294,7 @@ This functionality could be invoked as in the following example:
 
     <sconstruct>
        env = Environment()
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env.Append(BUILDERS = {'Foo' : bld})
        env.Foo('file.foo', 'file.input')
        env.Program('hello.c')
@@ -309,7 +309,7 @@ This functionality could be invoked as in the following example:
 
     <sconstruct>
        env = Environment()
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env['BUILDERS']['Foo'] = bld
        env.Foo('file.foo', 'file.input')
        env.Program('hello.c')
@@ -352,7 +352,7 @@ This functionality could be invoked as in the following example:
 
     <scons_example name="ex4">
        <file name="SConstruct">
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET',
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET',
                      suffix = '.foo',
                      src_suffix = '.input')
        env = Environment(BUILDERS = {'Foo' : bld})
@@ -373,7 +373,7 @@ This functionality could be invoked as in the following example:
     </scons_example>
 
     <sconstruct>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET',
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET',
                      suffix = '.foo',
                      src_suffix = '.input')
        env = Environment(BUILDERS = {'Foo' : bld})
@@ -544,7 +544,7 @@ This functionality could be invoked as in the following example:
 
     <programlisting>
        def generate_actions(source, target, env, for_signature):
-           return 'foobuild < %s > %s' % (target[0], source[0])
+           return 'foobuild &lt; %s &gt; %s' % (target[0], source[0])
     </programlisting>
 
     <para>
@@ -647,7 +647,7 @@ This functionality could be invoked as in the following example:
     <scons_example name="ex6">
        <file name="SConstruct">
        def generate_actions(source, target, env, for_signature):
-           return 'foobuild < %s > %s' % (source[0], target[0])
+           return 'foobuild &lt; %s &gt; %s' % (source[0], target[0])
        bld = Builder(generator = generate_actions,
                      suffix = '.foo',
                      src_suffix = '.input')
@@ -666,7 +666,7 @@ This functionality could be invoked as in the following example:
 
     <sconstruct>
        def generate_actions(source, target, env, for_signature):
-           return 'foobuild < %s > %s' % (source[0], target[0])
+           return 'foobuild &lt; %s &gt; %s' % (source[0], target[0])
        bld = Builder(generator = generate_actions,
                      suffix = '.foo',
                      src_suffix = '.input')
@@ -790,7 +790,7 @@ This functionality could be invoked as in the following example:
     <scons_example name="MY_EMITTER">
 
       <file name="SConstruct" printme="1">
-        bld = Builder(action = 'my_command $SOURCES > $TARGET',
+        bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
                       suffix = '.foo',
                       src_suffix = '.input',
                       emitter = '$MY_EMITTER')
@@ -828,7 +828,7 @@ This functionality could be invoked as in the following example:
     </scons_example>
 
     <sconstruct>
-      bld = Builder(action = 'my_command $SOURCES > $TARGET',
+      bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
                     suffix = '.foo',
                     src_suffix = '.input',
                     emitter = '$MY_EMITTER')
@@ -934,8 +934,8 @@ This functionality could be invoked as in the following example:
       <file name="site_scons/site_init.py" printme=1>
         def TOOL_ADD_HEADER(env):
            """A Tool to add a header from $HEADER to the source file"""
-           add_header = Builder(action=['echo "$HEADER" > $TARGET',
-                                        'cat $SOURCE >> $TARGET'])
+           add_header = Builder(action=['echo "$HEADER" &gt; $TARGET',
+                                        'cat $SOURCE &gt;&gt; $TARGET'])
            env.Append(BUILDERS = {'AddHeader' : add_header})
            env['HEADER'] = '' # set default value
       </file>
index 3932181bec17383886f49113eeb48452a8c193ec..99dfc94ee689cb7c6b70d214228315528cd66f2e 100644 (file)
@@ -166,7 +166,7 @@ This functionality could be invoked as in the following example:
     
 
     <programlisting>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env = Environment(BUILDERS = {'Foo' : bld})
     </programlisting>
 
@@ -251,7 +251,7 @@ This functionality could be invoked as in the following example:
 
     <programlisting>
        env = Environment()
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env.Append(BUILDERS = {'Foo' : bld})
        env.Foo('file.foo', 'file.input')
        env.Program('hello.c')
@@ -266,7 +266,7 @@ This functionality could be invoked as in the following example:
 
     <programlisting>
        env = Environment()
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env['BUILDERS']['Foo'] = bld
        env.Foo('file.foo', 'file.input')
        env.Program('hello.c')
@@ -313,7 +313,7 @@ This functionality could be invoked as in the following example:
     
 
     <programlisting>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET',
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET',
                      suffix = '.foo',
                      src_suffix = '.input')
        env = Environment(BUILDERS = {'Foo' : bld})
@@ -586,7 +586,7 @@ This functionality could be invoked as in the following example:
 
     <programlisting>
        def generate_actions(source, target, env, for_signature):
-           return 'foobuild < %s > %s' % (source[0], target[0])
+           return 'foobuild &lt; %s &gt; %s' % (source[0], target[0])
        bld = Builder(generator = generate_actions,
                      suffix = '.foo',
                      src_suffix = '.input')
@@ -708,7 +708,7 @@ This functionality could be invoked as in the following example:
     </programlisting>
 
     <programlisting>
-      bld = Builder(action = 'my_command $SOURCES > $TARGET',
+      bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
                     suffix = '.foo',
                     src_suffix = '.input',
                     emitter = '$MY_EMITTER')
index 6834d2a870ec8cdc2295b5e870d0a2583e138243..f26f2c7dd05c0822e2c1b21df15d4f3b0ab31081 100644 (file)
         choices to a specific set of allowed colors.
         This can be set up quite easily
         using the &EnumVariable;,
-        which takes a list of &allowed_values
+        which takes a list of &allowed_values;
         in addition to the variable name,
         default value,
         and help text arguments:
 
         &SCons; supports a &DEFAULT_TARGETS; variable
         that lets you get at the current list of default targets.
-        The &DEFAULT_TARGETS variable has
+        The &DEFAULT_TARGETS; variable has
         two important differences from the &COMMAND_LINE_TARGETS; variable.
         First, the &DEFAULT_TARGETS; variable is a list of
         internal &SCons; nodes,
index 148922eb4967a0b3fb8b7926dd682127cdae15cf..f5e70ad7dbd55f491a429ce639754be90c0ffaa4 100644 (file)
         choices to a specific set of allowed colors.
         This can be set up quite easily
         using the &EnumVariable;,
-        which takes a list of &allowed_values
+        which takes a list of &allowed_values;
         in addition to the variable name,
         default value,
         and help text arguments:
 
         &SCons; supports a &DEFAULT_TARGETS; variable
         that lets you get at the current list of default targets.
-        The &DEFAULT_TARGETS variable has
+        The &DEFAULT_TARGETS; variable has
         two important differences from the &COMMAND_LINE_TARGETS; variable.
         First, the &DEFAULT_TARGETS; variable is a list of
         internal &SCons; nodes,
index afd1463c2e9f22dea43b1696c87eafcf76b5b931..7bb9d01e320754038982c62d810508f7788bdc5d 100644 (file)
@@ -1553,7 +1553,7 @@ environment, of directory names, suffixes, etc.
       #!/usr/bin/env python
       import os
       import sys
-      if len(sys.argv) > 1:
+      if len(sys.argv) &gt; 1:
           keys = sys.argv[1:]
       else:
           keys = sorted(os.environ.keys())
index 563d63531599e13595f98c09091b962fa36108f0..8f62b3bf2bb649be1b3b99307deb5b6b20118bbc 100644 (file)
@@ -1540,7 +1540,7 @@ environment, of directory names, suffixes, etc.
       #!/usr/bin/env python
       import os
       import sys
-      if len(sys.argv) > 1:
+      if len(sys.argv) &gt; 1:
           keys = sys.argv[1:]
       else:
           keys = sorted(os.environ.keys())
index 09533d24cf16371262ae735c0ea4fc65a795c51c..e5aadec26b8cd3c5be6c39ae2f9112575625333b 100644 (file)
  <programlisting>
     env = Environment()
     d = env.ParseFlags(["!echo -I/opt/include", "!echo -L/opt/lib", "-lfoo"])
-    for k,v in l:
+    for k,v in sorted(d.items()):
         if v:
             print k, v
     env.MergeFlags(d)
index a3339e03c83b81f511231e87074eb22a69d1af9b..ffc37fcf8da478718b80599b70976f29abcfff9e 100644 (file)
       % <userinput>scons -Q --debug=stacktrace</userinput>
       scons: *** [prog.o] Source `prog.c' not found, needed by target `prog.o'.
       scons: internal stack trace:
-        File "bootstrap/src/engine/SCons/Job.py", line 197, in start
+        File "bootstrap/src/engine/SCons/Job.py", line 199, in start
           task.prepare()
         File "bootstrap/src/engine/SCons/Script/Main.py", line 167, in prepare
           return SCons.Taskmaster.OutOfDateTask.prepare(self)
index 9749e4327e83239a5d8c6f46a26aef3cd970621b..e1c1f0a21149128eb22cc77560b8cd01f994ac5f 100644 (file)
@@ -7,6 +7,13 @@
                             Change Log
 
 
+RELEASE X.X.X - 
+
+  From Dirk Baechle:
+
+    - Fix XML in documentation.
+
+
 RELEASE 1.3.0 - Tue, 23 Mar 2010 21:44:19 -0400
 
   From Steven Knight: