1. anatoly techtonik
  2. scons-all-branches

Commits

Steven Knight  committed 63d06cf

Merged revisions 1989-2302 via svnmerge from
http://scons.tigris.org/svn/scons/trunk

................
r2035 | MaciejPasternacki | 2007-06-21 05:49:48 -0500 (Thu, 21 Jun 2007) | 3 lines

Initialized merge tracking via "svnmerge" with revisions "1-2033" from
http://scons.tigris.org/svn/scons/branches/automake_model
................
r2118 | stevenknight | 2007-07-11 06:26:34 -0500 (Wed, 11 Jul 2007) | 296 lines

Merged revisions 1968-2115 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r1970 | stevenknight | 2007-06-01 18:22:37 -0500 (Fri, 01 Jun 2007) | 4 lines

Import a vanilla Python 2.3 version of textwrap.py into the compatibility
library, so we can track the changes we'll make to it. (This isn't
actually used yet.)
........
r1971 | stevenknight | 2007-06-02 00:38:20 -0500 (Sat, 02 Jun 2007) | 2 lines

Add a compatibility module for the textwrap.py module introduced in Python 2.3.
........
r1972 | stevenknight | 2007-06-02 00:39:26 -0500 (Sat, 02 Jun 2007) | 2 lines

Remove spurious <para> tags.
........
r1973 | stevenknight | 2007-06-03 08:57:05 -0500 (Sun, 03 Jun 2007) | 2 lines

Improved help-text generation using a textwrap.TextWrapper object.
........
r1991 | stevenknight | 2007-06-10 16:03:18 -0500 (Sun, 10 Jun 2007) | 3 lines

Add compatibility versions of the all() and any() functions introduced
in Python 2.5.
........
r1992 | stevenknight | 2007-06-10 17:02:18 -0500 (Sun, 10 Jun 2007) | 8 lines

SCons-time portability fixes for Python 2.[12]:

-- Use "from __future__ import nested_scopes".
-- Create "False" and "True" builtins
-- Work around the lack of a "prefix =" keyword argument to the
Python 2.[12] version of the mktemp module.
-- Accomodate pickier single-element tuple syntax.
........
r1993 | stevenknight | 2007-06-10 17:27:43 -0500 (Sun, 10 Jun 2007) | 3 lines

Delay instantiation of pstat.Stats objects until after we override
sys.stdout, which as of Python 2.5 is captured when the object is created.
........
r1994 | stevenknight | 2007-06-10 21:22:42 -0500 (Sun, 10 Jun 2007) | 6 lines

Update various tests to handle the

File "SConstruct", line 1, in <module>

Messages in Python 2.5.
........
r1995 | stevenknight | 2007-06-10 21:32:16 -0500 (Sun, 10 Jun 2007) | 3 lines

Update tests to not raise strings as exceptions, which has been
deprecated in Python 2.5.
........
r1996 | stevenknight | 2007-06-10 21:41:57 -0500 (Sun, 10 Jun 2007) | 3 lines

Fix the Scanner hash unit test for Python 2.5. (Yes, it still works
on previous versions, too.)
........
r1997 | stevenknight | 2007-06-10 21:55:46 -0500 (Sun, 10 Jun 2007) | 3 lines

Make the mock Node object's side_effect attribute a list, so it's
iterable in Python 2.1 as well.
........
r1998 | stevenknight | 2007-06-10 22:04:26 -0500 (Sun, 10 Jun 2007) | 3 lines

Append an explicit tuple to the delayed_warnings list if there are
problems interpreting --debug=memoizer.
........
r1999 | stevenknight | 2007-06-11 11:09:07 -0500 (Mon, 11 Jun 2007) | 2 lines

Fix --debug=time with -j when no arguments are rebuilt (all up-to-date).
........
r2007 | stevenknight | 2007-06-14 13:56:35 -0500 (Thu, 14 Jun 2007) | 4 lines

Performance improvement when looking up Nodes: don't use is_String(),
just check for the initial '#' that specifies a top-relative lookup,
and handle the exceptions.
........
r2008 | stevenknight | 2007-06-14 16:57:47 -0500 (Thu, 14 Jun 2007) | 11 lines

First step in refactoring command-line flag processing: Split out the
current processing into its own module, with minimal additional changes.
Among the minimal changes:
-- Store delayed warnings (for deprecated --debug= keywords)
in the option parser object, not in a global variable.
-- Remove the OptParser variable itself from the SCons.Script globals.
It's going to change significantly (and no one's probably using
it anyway).
-- Don't move definition of the --version output with the OptParser,
keep it in Main.py.
........
r2009 | stevenknight | 2007-06-15 08:15:25 -0500 (Fri, 15 Jun 2007) | 3 lines

Refactor the test/explain.py script into three individual scripts
so it's easier to deal with.
........
r2010 | stevenknight | 2007-06-15 09:49:07 -0500 (Fri, 15 Jun 2007) | 3 lines

Handle Aliases in --debug=explain. This is kind of hard-coded for the
normal lookup, and should be better handled by the signature refactoring.
........
r2011 | stevenknight | 2007-06-15 17:25:37 -0500 (Fri, 15 Jun 2007) | 5 lines

Refactor use of the command-line parser object so it's localized to the
top-level main() function, and not passed down through _exec_main() or
to _main() itself. Replace its functionality with use of an exception to
signal that the top-level main() function should print its help message.
........
r2012 | stevenknight | 2007-06-17 23:34:26 -0500 (Sun, 17 Jun 2007) | 2 lines

Remove unnecessary import of __main__.
........
r2013 | stevenknight | 2007-06-17 23:48:06 -0500 (Sun, 17 Jun 2007) | 2 lines

Pass the options object to _main(), don't use a global.
........
r2014 | stevenknight | 2007-06-18 00:12:09 -0500 (Mon, 18 Jun 2007) | 6 lines

Qt test fixes for Windows:
Link against a static library created by the test infrastructure,
not a shared library.
Escape backslashes in Windows path names.
Skip test/QT/Tool.py if Qt isn't installed.
........
r2015 | stevenknight | 2007-06-18 10:46:17 -0500 (Mon, 18 Jun 2007) | 3 lines

Support GetOption('no_exec'), and update test/NodeOps.py to use it
instead of reaching into the SCons.Script.Main internals.
........
r2016 | stevenknight | 2007-06-18 11:04:39 -0500 (Mon, 18 Jun 2007) | 4 lines

Restore use of a global delayed_warnings variable so the chicken-and-egg
warning from trying to use --debug=memoizer on Python versions without
metaclasses has somewhere to go.
........
r2017 | stevenknight | 2007-06-18 11:37:59 -0500 (Mon, 18 Jun 2007) | 3 lines

Have the test infrastructure create a mock Qt shared library on UNIX,
static library on Windows.
........
r2018 | stevenknight | 2007-06-18 11:48:10 -0500 (Mon, 18 Jun 2007) | 2 lines

Pull more globals into the command-line parser options object.
........
r2023 | stevenknight | 2007-06-19 16:46:02 -0500 (Tue, 19 Jun 2007) | 3 lines

Refactor the __checkClass() and must_be_a_Dir() methods into a more
general and more efficient must_be_same() method.
........
r2025 | stevenknight | 2007-06-19 20:56:10 -0500 (Tue, 19 Jun 2007) | 3 lines

More clean up: change various self.fs.Entry() calls to calls through
the bound directory.Entry() method.
........
r2033 | stevenknight | 2007-06-20 20:03:23 -0500 (Wed, 20 Jun 2007) | 5 lines

The --debug=count option doesn't work when run with Python - O, or
from optimized compiled Python modules (*.pyo files), because the
counting is all within "#if __debug__:" blocks that get stripped.
Print a warning so it doesn't look like --debug=count is broken.
........
r2037 | stevenknight | 2007-06-21 10:42:40 -0500 (Thu, 21 Jun 2007) | 3 lines

Replace the _stripixes() function with a more efficient/readable version
that was checked in, but commented out, prior to 0.96.96.
........
r2040 | stevenknight | 2007-06-21 12:18:57 -0500 (Thu, 21 Jun 2007) | 2 lines

Ignore *.pyo files, too, since one of the tests now generates them.
........
r2051 | stevenknight | 2007-06-26 15:11:57 -0500 (Tue, 26 Jun 2007) | 5 lines

Arrange for graceful shutdown of the worker threads by writing None to
the requestQueue and having the worker threads terminate their processing
loops when they read it. We can then .join() the threads, to wait for
their termination, avoiding exceptions in the threading library module.
........
r2052 | stevenknight | 2007-06-26 15:12:53 -0500 (Tue, 26 Jun 2007) | 3 lines

Have the SWIG tests that use the Python.h header skip gracefully if
the Python development environment isn't installed.
........
r2053 | stevenknight | 2007-06-26 15:23:55 -0500 (Tue, 26 Jun 2007) | 3 lines

Massage the datestamp and IDs in the generated PDF so we can compare
before-and-after output reliably regardless of when generated.
........
r2054 | stevenknight | 2007-06-26 15:25:56 -0500 (Tue, 26 Jun 2007) | 3 lines

Fix the regular expression that matches the Qt warning message when
the moc executable is used as a hint.
........
r2055 | stevenknight | 2007-06-26 15:48:21 -0500 (Tue, 26 Jun 2007) | 2 lines

Fix 2.5.1 string exception warnings.
........
r2056 | stevenknight | 2007-06-26 19:23:22 -0500 (Tue, 26 Jun 2007) | 2 lines

Skip the scons-time tests if the Python version can't import __future__.
........
r2057 | stevenknight | 2007-06-26 22:11:04 -0500 (Tue, 26 Jun 2007) | 3 lines

Normalize PDF output in the bibtex rerun test as well. Commonize the
PDF normalization logic by putting it in QMTest/TestSCons.py.
........
r2058 | stevenknight | 2007-06-26 22:50:39 -0500 (Tue, 26 Jun 2007) | 3 lines

Duplicate a function declaration to suppress compiler warnings about a cast,
when using certain systems/compilers.
........
r2059 | stevenknight | 2007-06-26 22:53:12 -0500 (Tue, 26 Jun 2007) | 2 lines

Use the frtbegin when compiling Fortran programs using GCC 4.
........
r2060 | stevenknight | 2007-06-26 23:13:35 -0500 (Tue, 26 Jun 2007) | 2 lines

Make the object that goes into the shared library a shared object file.
........
r2061 | stevenknight | 2007-06-26 23:53:49 -0500 (Tue, 26 Jun 2007) | 4 lines

Split test/AS/AS.py into sub-tests for the live assemblers it tests.
Only test nasm for the known configuration of version 0.98* on a
32-bit x86 system.
........
r2063 | stevenknight | 2007-06-27 09:51:43 -0500 (Wed, 27 Jun 2007) | 2 lines

Fix searching for the rmic utility.
........
r2064 | stevenknight | 2007-06-27 10:26:42 -0500 (Wed, 27 Jun 2007) | 3 lines

Improved worker-thread termination in a separate Job.cleanup() method.
(Adam Simpkins)
........
r2087 | stevenknight | 2007-07-03 12:22:10 -0500 (Tue, 03 Jul 2007) | 7 lines

Get rid of unnecessary subclassing and complicating overriding of
__init__() and parse_args() methods in favor of more straightforward
initialization of the OptionParser object.

We may need to restore subclassing in the future, but if so we'll do it
in a more OO way.
........
r2088 | stevenknight | 2007-07-03 16:12:30 -0500 (Tue, 03 Jul 2007) | 2 lines

Fix a cleanup error (no self.p4d attribute) when Perforce isn't installed.
........
r2090 | stevenknight | 2007-07-04 03:23:57 -0500 (Wed, 04 Jul 2007) | 2 lines

Import the vanilla Python 2.5 optparse.py for use as a compatibility module.
........
r2091 | stevenknight | 2007-07-04 03:35:17 -0500 (Wed, 04 Jul 2007) | 5 lines

Use the new optparse compatibility module for command-line processing,
and remove the SCons/Optik/*.py modules, with appropriate subclassing
in Script/SConsOptions.py to preserve the way we print help text and
SCons error messages.
........
r2108 | stevenknight | 2007-07-08 22:57:08 -0500 (Sun, 08 Jul 2007) | 3 lines

Make all of the optparse.add_options calls more-or-less consistent in
how they call the keyword arguments.
........
r2109 | stevenknight | 2007-07-09 12:31:01 -0500 (Mon, 09 Jul 2007) | 6 lines

Consolidate command-line and {Get,Set}Option() processing and access
in a single subclass of the optparse.Values() class.

Allow all options, not just those that aren't SConscript-settable,
to set their default values when calling op.add_option().
........
r2110 | stevenknight | 2007-07-09 13:17:58 -0500 (Mon, 09 Jul 2007) | 4 lines

Handle initialization of command-line repository options by passing the
option arguments directly to the _SConstruct_exists() utility function,
not by setting a global variable.
........
r2111 | stevenknight | 2007-07-09 13:42:41 -0500 (Mon, 09 Jul 2007) | 2 lines

Remove the unused _varargs() utility function.
........
r2112 | stevenknight | 2007-07-09 15:21:51 -0500 (Mon, 09 Jul 2007) | 2 lines

Clean up how we use optparse (mainly for readability).
........
r2113 | stevenknight | 2007-07-10 15:50:08 -0500 (Tue, 10 Jul 2007) | 2 lines

More old-Python-version compatibility changes in optparse.py.
........
r2114 | stevenknight | 2007-07-10 16:46:42 -0500 (Tue, 10 Jul 2007) | 3 lines

Add support for a new AddOption() function to allow the SConscript
file(s) to define new command-line flags.
........
................
r2121 | stevenknight | 2007-07-11 14:58:03 -0500 (Wed, 11 Jul 2007) | 15 lines

Merged revisions 2117-2120 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r2119 | garyo | 2007-07-11 08:53:36 -0500 (Wed, 11 Jul 2007) | 1 line

Fixed minor cut/paste doc error
........
r2120 | stevenknight | 2007-07-11 12:42:50 -0500 (Wed, 11 Jul 2007) | 4 lines

Simplify the {Add,Get,Set}Option() implementations, and initialize the
OptionsParser variable with a do-nothing class, in case it's used
by test scripts without normal SCons.Script.Main initialization.
........
................
r2136 | stevenknight | 2007-07-14 10:30:04 -0500 (Sat, 14 Jul 2007) | 41 lines

Merged revisions 2121-2135 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r2128 | stevenknight | 2007-07-13 06:27:11 -0500 (Fri, 13 Jul 2007) | 2 lines

Use the "swig -classic" option on pre-2.0 Python versions.
........
r2130 | stevenknight | 2007-07-13 09:42:45 -0500 (Fri, 13 Jul 2007) | 2 lines

Remove left-over cut-and-paste stuff about loadable modules and frameworks.
........
r2131 | stevenknight | 2007-07-13 12:08:37 -0500 (Fri, 13 Jul 2007) | 4 lines

Refactor the structure of the tests to make the java input strings
separate from the parse_java() calls. (Prep for enhancing the parser
for Java 1.5 anonymous class files.)
........
r2132 | stevenknight | 2007-07-13 12:24:09 -0500 (Fri, 13 Jul 2007) | 3 lines

Copy the Java 1.4 nested-anonymous-class test case from test/Java/live.py.
Remove a commented-out unit test already added elsewhere.
........
r2133 | stevenknight | 2007-07-13 16:16:51 -0500 (Fri, 13 Jul 2007) | 4 lines

Support the changed naming of .class files for nested anonymous inner
classes in Java 1.5 by adding a new $JAVAVERSION variable that can be set
to reflect the javac version being used.
........
r2134 | stevenknight | 2007-07-13 20:28:34 -0500 (Fri, 13 Jul 2007) | 5 lines

Add a $SWIGOUTDIR variable.
Add it, when set, to the command line as an argument to -outdir.
Have the emitter use it to figure out where the generated .java
files will be (something we didn't do at all before, -outdir aside).
........
r2135 | stevenknight | 2007-07-13 23:51:21 -0500 (Fri, 13 Jul 2007) | 2 lines

Minor unit test fixes for old Python versions (1.6 and 2.0).
........
................
r2138 | stevenknight | 2007-07-15 02:57:30 -0500 (Sun, 15 Jul 2007) | 12 lines

The svnmerge-integrated property for /branches/packaging suggests
that revisions up to 1594 have already been merged to the trunk,
but most of the files added on the branch (everything under examples/,
src/engine/SCons/Tool/Packaging, test/packaging) don't actually appear on
the trunk. Since I don't think we've ever actually merged, the 1594 rev
probably dates from when we started using svnmerge and probably reflects
incorrect initialization.

This sets the property back to revision 1501 (when the branch was cut)
in an attempt to get svnmerge to apply all the changes cleanly. If
it's necessary, we can restore it to 1594...
................
r2143 | stevenknight | 2007-07-15 08:42:20 -0500 (Sun, 15 Jul 2007) | 1243 lines

Merged revisions 1502-1677,1679-1682,1684-1918,1920-1968,1970-2116,2118-2125,2127-2136,2138 via svnmerge from
http://scons.tigris.org/svn/scons/branches/packaging

................
r1509 | pscholl | 2006-05-30 13:33:58 -0500 (Tue, 30 May 2006) | 5 lines

The first commit:
* a failing testcase.
* a Package() Builder.
................
r1510 | pscholl | 2006-05-31 15:39:42 -0500 (Wed, 31 May 2006) | 4 lines

The test passes, so this doesn't do much but calling the Tar Builder through a
different interface.
................
r1511 | pscholl | 2006-06-01 15:18:21 -0500 (Thu, 01 Jun 2006) | 3 lines

Add targz and tarbz2 packagers.
................
r1512 | pscholl | 2006-06-02 14:16:09 -0500 (Fri, 02 Jun 2006) | 4 lines

* package name generation from "projectname" and "version"
* targz and tarbz2 packager
................
r1513 | pscholl | 2006-06-02 14:24:53 -0500 (Fri, 02 Jun 2006) | 4 lines

* forgot the test for package name generation.
* add the zip packager.
................
r1514 | pscholl | 2006-06-10 15:02:50 -0500 (Sat, 10 Jun 2006) | 6 lines

* add support for "subdir".
* add support for more than one "type" of packager.
* add more testcases.
* add an example/.
................
r1516 | pscholl | 2006-06-19 14:51:44 -0500 (Mon, 19 Jun 2006) | 2 lines

* add a simple rpm testcase
* activate the builddir testcase
................
r1519 | pscholl | 2006-06-22 05:38:40 -0500 (Thu, 22 Jun 2006) | 7 lines

* add a rpm Tool.
* add a rpm Packager abstraction.
* add a new Error Class: EnvironmentError, for errors where the Environment
doesn't supply neccessary tools.
* Change Environment to include the rpm tool per default.
................
r1520 | pscholl | 2006-06-23 13:11:23 -0500 (Fri, 23 Jun 2006) | 5 lines

* create a fake_root_emitter, which puts source file under a new root
* create a rpm_spec_file emitter and actions to create a rpm specfile from a
list of files and a dict with specific keywords.
................
r1521 | pscholl | 2006-06-23 16:19:11 -0500 (Fri, 23 Jun 2006) | 8 lines

* fix the testcase/example. Problem: Proper Installation needs to be done form
rpm. Proper does mean that at least the "Installation Prefix" of the install
target can be specified.
* add an assertion to the rpm builder, that the target of the builder are the
files created by the rpmbuild call.
* hack the rpm_emitter to add possibly created targets of the rpmbuild call.
................
r1522 | pscholl | 2006-06-24 16:41:08 -0500 (Sat, 24 Jun 2006) | 11 lines

* make create_default_target() able to call a create_default_target() in a
chosen packager. This makes it possible to change the default targets for rpm
for example.

* rename fake_root to package_root

* rename subdir argument to package_root

* add method create_default_package_root()
................
r1523 | pscholl | 2006-06-25 09:12:45 -0500 (Sun, 25 Jun 2006) | 4 lines

* make international tags work.
* able to build a rpms iff with a highly specialized "install" target
................
r1524 | pscholl | 2006-06-25 09:55:00 -0500 (Sun, 25 Jun 2006) | 3 lines

* fix older testcases and change to new api
................
r1525 | pscholl | 2006-06-25 13:48:11 -0500 (Sun, 25 Jun 2006) | 1 line

set the rpm _topdir to something under the current build directory, so /usr/src/redhat does not need to be writable
................
r1526 | pscholl | 2006-06-27 09:16:31 -0500 (Tue, 27 Jun 2006) | 4 lines

* towards file tagging
* seperated source and binary packages automatically.
................
r1527 | pscholl | 2006-06-27 15:37:24 -0500 (Tue, 27 Jun 2006) | 1 line

better layout for specfile
................
r1528 | pscholl | 2006-06-28 02:43:29 -0500 (Wed, 28 Jun 2006) | 3 lines

use copy function instead of InstallAs for package_root_emitter()
................
r1529 | pscholl | 2006-06-28 06:40:17 -0500 (Wed, 28 Jun 2006) | 6 lines

* add a Tag() Builder to add packager tag to files.
* add examples for the packaging builder.
* prevent SCons from showing the stderr pipe from rpmbuild.
* clarify the compile() function of rpm specfile builder.
................
r1530 | pscholl | 2006-06-28 09:31:28 -0500 (Wed, 28 Jun 2006) | 3 lines

encoding ...
................
r1531 | pscholl | 2006-07-02 10:35:34 -0500 (Sun, 02 Jul 2006) | 8 lines

* introduce a DESTDIR command line arguments that is honored by the Install()
builders. Major caveat: SCons calculates default targets from the current
working directory. So if DESTDIR is outside of cwd, those files will not be
installed unless part of their path is given as a target ("/" will not work)

* adapt the rpm specfile accordingly.
................
r1532 | pscholl | 2006-07-09 15:52:58 -0500 (Sun, 09 Jul 2006) | 4 lines

Possible to generate WiX xml files and using the wix toolset from
http://wix.sf.net/ it is possible to create non-interactive installs.
................
r1545 | pscholl | 2006-07-26 02:34:38 -0500 (Wed, 26 Jul 2006) | 6 lines

* kill the packageversion tag.
* possible to create msi packages with the default Wix_mondo gui.
* msi honours the installation location of a File.
* x_msi_feature tag is available to split the package up into several parts.
................
r1548 | pscholl | 2006-07-27 10:32:48 -0500 (Thu, 27 Jul 2006) | 4 lines

* fix testcases
* fix wix toolchain lookup
................
r1549 | pscholl | 2006-07-27 11:13:58 -0500 (Thu, 27 Jul 2006) | 4 lines

* add license and license_tag file tags.
* add an example for msi package building.
................
r1591 | pscholl | 2006-08-14 13:32:07 -0500 (Mon, 14 Aug 2006) | 6 lines

Packaging framework refactoring:
* move common code to a superclass.
* Create BinaryPackager and SourcePackager.
* move TagCompiler from rpm to package.py
................
r1592 | pscholl | 2006-08-14 13:42:39 -0500 (Mon, 14 Aug 2006) | 3 lines

change DESTDIR to --install-sandbox
................
r1593 | pscholl | 2006-08-14 14:18:59 -0500 (Mon, 14 Aug 2006) | 1 line

fix msi builder.
................
r1595 | pscholl | 2006-08-15 09:19:05 -0500 (Tue, 15 Aug 2006) | 3 lines

add a ipkg packager.
................
r1596 | pscholl | 2006-08-15 12:09:17 -0500 (Tue, 15 Aug 2006) | 3 lines

small fix for ipk.
................
r1597 | pscholl | 2006-08-15 12:10:13 -0500 (Tue, 15 Aug 2006) | 3 lines

add some forgotten tests.
................
r1598 | pscholl | 2006-08-16 08:49:19 -0500 (Wed, 16 Aug 2006) | 11 lines

* add an ipk packaging example
* fix outstanding problems with ipk:
* split the strip_install_emitter, which strips the InstallBuilder of the
given source list and adds the install_location tag, from the
specfile_emitter.
* therefore the .ipk file is now independent of the *installed* files.

* add a 'architecture' PackageTag for ipk and rpm packages.
* rpm support is currently not working.
................
r1599 | pscholl | 2006-08-16 08:59:39 -0500 (Wed, 16 Aug 2006) | 3 lines

rename x_ipk_architecture -> architecture
................
r1601 | pscholl | 2006-08-17 04:35:00 -0500 (Thu, 17 Aug 2006) | 7 lines

First implementation of new Installer:
* is split off as a Tool in Tool/install.py and added to the 'default' tools.
* honors the --install-sandbox option

* fix the rpm package building in the process
................
r1602 | pscholl | 2006-08-17 15:20:35 -0500 (Thu, 17 Aug 2006) | 1 line

change default INSTALLSTR
................
r1603 | pscholl | 2006-08-17 16:28:44 -0500 (Thu, 17 Aug 2006) | 6 lines

* strip Install_old and InstallAs_old from Environment.py
* fix the source package building part of the rpm builder.
* add '--package-type=' option.
* add 'package' default alias.
................
r1604 | pscholl | 2006-08-17 16:39:12 -0500 (Thu, 17 Aug 2006) | 3 lines

* forgot the test
................
r1605 | pscholl | 2006-08-17 17:37:07 -0500 (Thu, 17 Aug 2006) | 5 lines

* introduce 'src_zip', 'src_tarbz2', 'src_targz' packagers. Their difference to
'zip', 'tarbz2', 'targz' is an emitter that only accepts files that have an
'InstallBuilder' attached.
................
r1606 | pscholl | 2006-08-17 17:58:54 -0500 (Thu, 17 Aug 2006) | 4 lines

* rename x_ipk_source and x_ipk_source to source_url.
* let rpm honor source_url accordingly.
................
r1607 | pscholl | 2006-08-18 09:35:53 -0500 (Fri, 18 Aug 2006) | 7 lines

* merge with trunk from r1501 to 1594
* add Environment.FindInstalledFiles(), which returns the
env['_INSTALLEDFILES'] list.
* add Environment.FindSourceFiles() which tries to find all files by inspecting
the '.' directory.
................
r1608 | pscholl | 2006-08-19 09:04:15 -0500 (Sat, 19 Aug 2006) | 3 lines

Create a Tool/filesystem.py, which creates the CopyTo() and CopyAs() builders.
................
r1609 | pscholl | 2006-08-19 09:51:50 -0500 (Sat, 19 Aug 2006) | 5 lines

add a 'change_specfile' packagetag which takes a function, that will be called
with the target and source parameters to enable the user to change the specfile
after it has been generated.
................
r1610 | pscholl | 2006-08-19 09:58:42 -0500 (Sat, 19 Aug 2006) | 1 line

fix msi packaging
................
r1612 | pscholl | 2006-08-20 12:03:28 -0500 (Sun, 20 Aug 2006) | 1 line

To fix issues with a set BuildDir, copy all tag information to the srcnode() of the file the tags are attached to.
................
r1613 | pscholl | 2006-08-20 15:20:12 -0500 (Sun, 20 Aug 2006) | 3 lines

last minute fixes.
................
r1614 | pscholl | 2006-08-20 21:38:02 -0500 (Sun, 20 Aug 2006) | 1 line

fix some smaller problems with msi.
................
r1615 | pscholl | 2006-08-20 21:44:04 -0500 (Sun, 20 Aug 2006) | 1 line

get rid of ambiguous shortname warnings.
................
r1616 | pscholl | 2006-08-21 05:55:10 -0500 (Mon, 21 Aug 2006) | 3 lines

change conf filetag in ipk to config
................
r1618 | pscholl | 2006-08-22 06:09:52 -0500 (Tue, 22 Aug 2006) | 1 line

fix bug where no builder is attached to source files
................
r1624 | pscholl | 2006-09-09 07:14:40 -0500 (Sat, 09 Sep 2006) | 35 lines

* move stip_abs.path() to SCons.Util

* Optik.option_parsers does not raise an error on interspersed option that
start with '--' or '-', while loosing the capability to raise an error on
a given commandline option that is not defined.

* change Tool/install.py to use the builder functions which were in
Environment.py

* Tools might now define their own command line options, by modifying a
env-wide Options() object. Their help text is automatically generated for
each Tool initialization. For example running 'scons -h' in a directory with
a SConstruct that uses the install builder gives this result:

scons: Reading SConscript files ...
scons: done reading SConscript files.

DESTDIR: A directory under which all installed files will be placed. (
/path/to/DESTDIR )
default: None
actual: None
aliases: ['--install-sandbox']

prefix: The prefix which can be configured for every installed
files. ( /path/to/prefix )
default: /usr/local
actual: /usr/local
aliases: ['--install-prefix']

Use scons -H for help about command-line options.

* fix packaging and filesystem from unneeded references to install internals.
................
r1669 | stevenknight | 2006-11-02 12:33:48 -0600 (Thu, 02 Nov 2006) | 2 lines

Ignore the *.pyc files.
................
r1670 | stevenknight | 2006-11-02 19:42:36 -0600 (Thu, 02 Nov 2006) | 2 lines

Changes to fix various test failures on the packaging branch.
................
r1671 | stevenknight | 2006-11-03 00:00:59 -0600 (Fri, 03 Nov 2006) | 2 lines

Map the i[456]86 flavors to i386 for RPM testing purposes.
................
r1679 | pscholl | 2006-11-04 05:34:44 -0600 (Sat, 04 Nov 2006) | 14 lines

* exclude the packaging from the default tool listing, change tests accordingly.

* remove get_tags and set_tags method from FS/Node.py, replaced by hasattr(),
setattr() and getattr()

* rename strip_abs_path to make_path_relative

* make tool initilisation only try to zipimport if the exception thrown is "No
module named <xyz>". This way you get the real error that causes problems
importing the module.

* Start the packaging.xml doc
................
r1680 | pscholl | 2006-11-04 05:42:12 -0600 (Sat, 04 Nov 2006) | 1 line

fix the filesystem tool
................
r1681 | pscholl | 2006-11-04 07:51:11 -0600 (Sat, 04 Nov 2006) | 3 lines

Packaging -> packaging
................
r1682 | pscholl | 2006-11-04 07:52:58 -0600 (Sat, 04 Nov 2006) | 3 lines

somehow I managed to let svn forget about those file through a rename ;)
................
r1685 | pscholl | 2006-11-05 03:42:52 -0600 (Sun, 05 Nov 2006) | 3 lines

Those have been missing on the last commit
................
r1686 | pscholl | 2006-11-05 15:12:13 -0600 (Sun, 05 Nov 2006) | 3 lines

add test skipping
................
r1734 | pscholl | 2006-12-15 09:07:51 -0600 (Fri, 15 Dec 2006) | 5 lines

* change rpm, tarbz, targz, ipk, zip packager to new api
* instead of hardcoding the packager type mapping use a __all__ of the
packaging submodule.
................
r1911 | pscholl | 2007-05-19 09:13:57 -0500 (Sat, 19 May 2007) | 10 lines

* convert Package() build parameters to uppercase (incomplete)

* let optik_parser pass undefined command line options starting with "-" and
"--" to the Options() parses, instead of failing with a undefined option
error.

* Small fix for a subsequent bug in handling gnu long opts, see comment in
code.
................
r1912 | stevenknight | 2007-05-19 10:21:45 -0500 (Sat, 19 May 2007) | 4 lines

Minor fixes for Python 1.5 (no list comprehensions, no +=, string.split()
instead of .split() string method). Python 2.x code has been left
in place, commented out, for when we drop 1.5.
................
r1913 | stevenknight | 2007-05-19 21:40:51 -0500 (Sat, 19 May 2007) | 2 lines

Remove the leftover "import SCons.Tool.Packaging" line so tests can pass.
................
r1915 | pscholl | 2007-05-20 10:00:20 -0500 (Sun, 20 May 2007) | 6 lines

* uppercasing construction variables complete. change tests accordingly.

* start of the man page doc xml, see SCons/Tool/packaging/__init.xml, which
lists all construction variables and all builders.
................
r1918 | stevenknight | 2007-05-21 07:20:46 -0500 (Mon, 21 May 2007) | 4 lines

Propagate a fix from the trunk: prepend './' when interpreting the file
name to install so we don't treat a file actually named '#...' as being
relative to the top-level SConstruct directory.
................
r1922 | pscholl | 2007-05-22 18:16:38 -0500 (Tue, 22 May 2007) | 3 lines

fix CopyTo builder.
................
r1923 | pscholl | 2007-05-22 19:02:33 -0500 (Tue, 22 May 2007) | 1 line

fix the try block
................
r1926 | stevenknight | 2007-05-22 22:45:48 -0500 (Tue, 22 May 2007) | 747 lines

Merged revisions 1679-1917 via svnmerge from
http://scons.tigris.org/svn/scons/trunk

(Not completely clean; some tests still fail. The failures are the same,
though, before and after the merge.)

................
r1684 | stevenknight | 2006-11-04 14:26:57 -0600 (Sat, 04 Nov 2006) | 3 lines

Update the instructions to correct a few errors in setting up svnmerge
on branches. Add a few clarifying comments.
................
r1688 | stevenknight | 2006-11-06 13:27:39 -0600 (Mon, 06 Nov 2006) | 2 lines

Change announcement etc. for 0.96.93.
................
r1738 | stevenknight | 2006-12-15 19:43:01 -0600 (Fri, 15 Dec 2006) | 195 lines

Merged revisions 1675-1736 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r1689 | stevenknight | 2006-11-06 20:56:29 -0600 (Mon, 06 Nov 2006) | 1 line

0.96.D483 - Merge changes for 0.96.93 packaging from the subsidiary branch.
........
r1690 | stevenknight | 2006-11-06 20:59:30 -0600 (Mon, 06 Nov 2006) | 1 line

0.96.D484 - Update HOWTO for releases. Fix name type in src/CHANGES.txt.
........
r1691 | stevenknight | 2006-11-08 13:55:36 -0600 (Wed, 08 Nov 2006) | 1 line

0.96.D485 - Fix MergeFlags() handling of None values. (John Pye)
........
r1692 | stevenknight | 2006-11-08 17:15:05 -0600 (Wed, 08 Nov 2006) | 1 line

0.96.D486 - Directly execute commands on Windows when possible. (Jay Kint)
........
r1693 | stevenknight | 2006-11-08 18:54:49 -0600 (Wed, 08 Nov 2006) | 1 line

0.96.D487 - Remove the semi-colon from the list of characters that determine when we use cmd
........
r1694 | stevenknight | 2006-11-09 01:34:06 -0600 (Thu, 09 Nov 2006) | 1 line

0.96.D488 - Pick up latex/bibtex 'Rerun to get citations correct' messages. (Dmitry Mikhin)
........
r1695 | stevenknight | 2006-11-11 08:36:33 -0600 (Sat, 11 Nov 2006) | 1 line

0.96.D489 - Back out the direct-execution-on-Windows change until we solve a corner case.
........
r1696 | stevenknight | 2006-11-15 10:33:10 -0600 (Wed, 15 Nov 2006) | 1 line

0.96.D490 - Fix the sconsign script when the .sconsign.dblite file is specified with its suf
........
r1697 | stevenknight | 2006-11-18 10:45:50 -0600 (Sat, 18 Nov 2006) | 4 lines

Complete move of test/sconsign/script.py to underneath test/sconsign/script/.
(This got left out of the previous checkin due to an error in the
script that resubmits Aegis changes to Subversion.)
........
r1698 | stevenknight | 2006-11-18 11:05:26 -0600 (Sat, 18 Nov 2006) | 1 line

0.96.D491 - Allow an Options converter to take the construction environment as a parameter.
........
r1699 | stevenknight | 2006-11-30 15:34:37 -0600 (Thu, 30 Nov 2006) | 1 line

0.96.D492 - Reverse the order in which we try the arguments Options converters, first a sing
........
r1700 | stevenknight | 2006-11-30 16:03:09 -0600 (Thu, 30 Nov 2006) | 1 line

0.96.D493 - Speed up rel_path() by avoiding recomputation of intermediate directory relative
........
r1701 | stevenknight | 2006-11-30 16:14:16 -0600 (Thu, 30 Nov 2006) | 1 line

0.96.D494 - More efficient get_suffix(): compute it once when we set the name.
........
r1702 | stevenknight | 2006-11-30 16:22:55 -0600 (Thu, 30 Nov 2006) | 1 line

0.96.D495 - Fix missing XML end tags.
........
r1703 | stevenknight | 2006-11-30 17:15:25 -0600 (Thu, 30 Nov 2006) | 1 line

0.96.D496 - Turn Memoizer into a simple counter for --debug=memoizer, not something that doe
........
r1704 | stevenknight | 2006-11-30 20:30:50 -0600 (Thu, 30 Nov 2006) | 1 line

0.96.D497 - Add the scons-time script, with doc and tests.
........
r1705 | stevenknight | 2006-11-30 23:28:20 -0600 (Thu, 30 Nov 2006) | 1 line

0.96.D498 - Update the copyright years string.
........
r1706 | stevenknight | 2006-12-01 11:54:22 -0600 (Fri, 01 Dec 2006) | 1 line

0.96.D499 - Fix _do_Lookup => _doLookup value-caching misspellings. (Ben Leslie)
........
r1707 | stevenknight | 2006-12-01 12:03:46 -0600 (Fri, 01 Dec 2006) | 1 line

0.96.D500 - Fix copyright test against debian build. (Walter Franzini)
........
r1708 | stevenknight | 2006-12-01 14:23:29 -0600 (Fri, 01 Dec 2006) | 1 line

0.96.D501 - Add #include lines for test portability. (Gary Oberbrunner)
........
r1709 | stevenknight | 2006-12-01 14:51:12 -0600 (Fri, 01 Dec 2006) | 1 line

0.96.D502 - Fix tests under Python versions with no profiler (pstats module).
........
r1710 | stevenknight | 2006-12-01 20:04:49 -0600 (Fri, 01 Dec 2006) | 1 line

0.96.D503 - Remove unnecessary os.path.normpath() calls. (Gary Oberbrunner)
........
r1711 | stevenknight | 2006-12-01 20:34:31 -0600 (Fri, 01 Dec 2006) | 1 line

0.96.D504 - Accomodate arbitray white space after a SWIG %module keyword. (Anonymous)
........
r1712 | stevenknight | 2006-12-05 14:49:54 -0600 (Tue, 05 Dec 2006) | 1 line

0.96.D506 - Cache substitutions of of Builder source suffixes. Use a new PathList module, and a refactor Node.FS.Rfindalldirs() method, to cache calculations of values like CPPPATH.
........
r1713 | stevenknight | 2006-12-05 18:43:36 -0600 (Tue, 05 Dec 2006) | 1 line

0.96.D507 - Use cached stat() values in diskchecks.
........
r1714 | stevenknight | 2006-12-05 21:11:24 -0600 (Tue, 05 Dec 2006) | 1 line

0.96.D508 - Fix Memoizer hit counts for methods memoizing simple values. Clean up the code for memoizing return values in a dictionary. Fix comments.
........
r1715 | stevenknight | 2006-12-06 07:23:18 -0600 (Wed, 06 Dec 2006) | 1 line

0.96.D369 - More efficient Node.FS.Dir.current() check. Fix some Windows test portability issues.
........
r1716 | stevenknight | 2006-12-06 12:24:32 -0600 (Wed, 06 Dec 2006) | 2 lines

Undo previous checkin (distributed incorrect Aegis change number).
........
r1717 | stevenknight | 2006-12-06 12:34:53 -0600 (Wed, 06 Dec 2006) | 1 line

0.96.D505 - Update ae-{cvs,svn}-ci for newer versions of aetar, and to not truncate descriptions.
........
r1718 | stevenknight | 2006-12-07 23:01:41 -0600 (Thu, 07 Dec 2006) | 1 line

0.96.D509 - Only look for mslink on Windows systems. (Sohail Somani)
........
r1719 | stevenknight | 2006-12-07 23:18:33 -0600 (Thu, 07 Dec 2006) | 1 line

0.96.D510 - Have the D compiler Tool use the same logic for shared libraries, too. (Paolo Invernizzi)
........
r1720 | stevenknight | 2006-12-07 23:29:47 -0600 (Thu, 07 Dec 2006) | 1 line

0.96.D511 - Generalize a JobTests.py test so it doesn't assume a specific order in which the operating system executes the threads.
........
r1721 | stevenknight | 2006-12-07 23:39:37 -0600 (Thu, 07 Dec 2006) | 1 line

0.96.D512 - Back out the Tool/dmd.py change; it breaks shared library linking for other lanuages beside D in the construction environment.
........
r1722 | stevenknight | 2006-12-07 23:47:11 -0600 (Thu, 07 Dec 2006) | 1 line

0.96.D513 - Test fixes: Windows portability, handle changes to Python 2.5 messages.
........
r1723 | stevenknight | 2006-12-08 00:00:13 -0600 (Fri, 08 Dec 2006) | 1 line

0.96.D514 - Change how the 'as' Tool is imported to accomodate the Python 2.6 'as' keyword.
........
r1724 | stevenknight | 2006-12-08 11:19:27 -0600 (Fri, 08 Dec 2006) | 1 line

0.96.D515 - Cache both Node.FS.find_file() and Node.FS.Dri.srcdir_find_file().
........
r1725 | stevenknight | 2006-12-08 17:27:35 -0600 (Fri, 08 Dec 2006) | 1 line

0.96.D516 - Better error when we try to fetch contents from an Entry that doesn't exist. (Tom Parker)
........
r1726 | stevenknight | 2006-12-08 23:28:55 -0600 (Fri, 08 Dec 2006) | 1 line

0.96.D517 - Make sure we pick up the scons-local directory regardless of where we chdir internally.
........
r1727 | stevenknight | 2006-12-11 16:25:53 -0600 (Mon, 11 Dec 2006) | 1 line

0.96.D518 - Cache results of Executor.get_unignored_sources() and Executor.process_sources(). Eliminate some map() and disambiguate() calls when scanning for implicit dependencies.
........
r1728 | stevenknight | 2006-12-12 14:32:22 -0600 (Tue, 12 Dec 2006) | 1 line

0.96.D519 - Fix SideEffect() when -j is used.
........
r1729 | stevenknight | 2006-12-12 16:58:15 -0600 (Tue, 12 Dec 2006) | 1 line

0.96.D520 - Add a srcdir keyword to Builder calls.
........
r1730 | stevenknight | 2006-12-12 21:40:59 -0600 (Tue, 12 Dec 2006) | 1 line

0.96.D521 - TeX/LaTeX updates, including handling files in subdirectories. (Joel B. Mohler, Rob Managan, Dmitry Mikhin)
........
r1731 | stevenknight | 2006-12-14 15:01:02 -0600 (Thu, 14 Dec 2006) | 1 line

0.96.D522 - Propogate TypeErrors during variable substitution for display to the user.
........
r1732 | stevenknight | 2006-12-14 20:01:49 -0600 (Thu, 14 Dec 2006) | 1 line

0.96.D523 - Fix the os.path.join() calls in EnvironmentTests.py.
........
r1733 | stevenknight | 2006-12-15 07:48:22 -0600 (Fri, 15 Dec 2006) | 1 line

0.96.D524 - Fix source directories as dependencies of an Alias (0.96.93 problem found by LilyPond).
........
r1735 | stevenknight | 2006-12-15 12:43:45 -0600 (Fri, 15 Dec 2006) | 1 line

0.96.D525 - Allow printing Debug.caller() output (or other end-of-run debugging info) when using -h.
........
r1736 | stevenknight | 2006-12-15 16:30:08 -0600 (Fri, 15 Dec 2006) | 1 line

0.96.D526 - Add an option to debug IndexError and NameError exceptions during variable substitution.
........
................
r1740 | stevenknight | 2006-12-15 21:17:20 -0600 (Fri, 15 Dec 2006) | 13 lines

Merged revisions 1440-1541,1543-1582,1584-1667,1669-1675,1677-1738 via svnmerge from
http://scons.tigris.org/svn/scons/branches/tools

........
r1646 | stevenknight | 2006-10-17 17:21:58 -0500 (Tue, 17 Oct 2006) | 6 lines

Move all the scons.org stuff from the scons source tree itself to a
directory next to the trunk, and delete the copies from the branches.
There's a lot of stuff there (what with all of the documentation of
the different versions) and it's ridiculous to make everyone sync it
just to work on the code.
........
................
r1757 | stevenknight | 2007-01-07 01:23:05 -0600 (Sun, 07 Jan 2007) | 65 lines

Merged revisions 1738-1754,1756 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r1741 | stevenknight | 2006-12-16 22:51:07 -0600 (Sat, 16 Dec 2006) | 1 line

0.96.D527 - Give the f90 and f95 Tool modules knowledge of how to build source files of earlier Fortran versions.
........
r1742 | stevenknight | 2006-12-16 23:22:54 -0600 (Sat, 16 Dec 2006) | 1 line

0.96.D528 - Better handling of timestamp fallback if there's no md5 module.
........
r1743 | stevenknight | 2006-12-17 00:21:31 -0600 (Sun, 17 Dec 2006) | 1 line

0.96.D529 - Fix portability of new tests on systems that don't have TeX installed.
........
r1744 | stevenknight | 2006-12-19 15:30:16 -0600 (Tue, 19 Dec 2006) | 1 line

0.96.D530 - Eliminate the ListBuilder subclass in favor of using the Executor's target lists.
........
r1745 | stevenknight | 2006-12-19 18:54:26 -0600 (Tue, 19 Dec 2006) | 1 line

0.96.D531 - Eliminate of MultiStepBuilder as a separate Builder subclass.
........
r1746 | garyo | 2006-12-21 13:21:08 -0600 (Thu, 21 Dec 2006) | 1 line

Minor doc fix, thanks to Douglas Landgraf.
........
r1747 | stevenknight | 2006-12-21 17:13:55 -0600 (Thu, 21 Dec 2006) | 1 line

0.96.D533 - Add CFLAGS for options common to C/C++. (Gary Oberbrunner)
........
r1748 | stevenknight | 2007-01-03 19:48:05 -0600 (Wed, 03 Jan 2007) | 1 line

0.96.D534 - Fix signature storage when targets are retrieved from CacheDir().
........
r1749 | stevenknight | 2007-01-04 16:48:47 -0600 (Thu, 04 Jan 2007) | 1 line

0.96.D535 - Teach the lex and yacc tools about target files generated by different flex/bison options, and about Objective C suffixes. (Pupeno)
........
r1750 | stevenknight | 2007-01-04 17:14:38 -0600 (Thu, 04 Jan 2007) | 1 line

0.96.D536 - Refactor duplicate disambiguation logic in Entry.get_contents().
........
r1751 | stevenknight | 2007-01-05 13:00:54 -0600 (Fri, 05 Jan 2007) | 1 line

0.96.D537 - Fix lprof regression from 0.96.92.
........
r1752 | stevenknight | 2007-01-05 20:43:48 -0600 (Fri, 05 Jan 2007) | 1 line

0.96.D538 - Fix caching of Builder suffix matching (to fix lprof regression).
........
r1753 | stevenknight | 2007-01-06 00:03:16 -0600 (Sat, 06 Jan 2007) | 1 line

0.96.D539 - Fix --include-dir when using MinGW. (Paul)
........
r1754 | stevenknight | 2007-01-06 00:24:53 -0600 (Sat, 06 Jan 2007) | 1 line

0.96.D540 - Make bootstrap.py something useful to execute SCons out of a source directory.
........
r1756 | stevenknight | 2007-01-06 21:32:11 -0600 (Sat, 06 Jan 2007) | 1 line

0.96.D541 - Update the Copyright year string to include 2007. Automate updating the month+year string in man page title headers. Fix hard-coded __revision__ strings that crept into some older tests.
........
................
r1764 | stevenknight | 2007-01-08 01:13:59 -0600 (Mon, 08 Jan 2007) | 2 lines

Add announcements for 0.96.94.
................
r1767 | stevenknight | 2007-01-08 11:33:58 -0600 (Mon, 08 Jan 2007) | 13 lines

Merged revisions 1757-1765 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r1759 | stevenknight | 2007-01-07 09:36:37 -0600 (Sun, 07 Jan 2007) | 1 line

0.96.D541 - Update the Copyright year string to include 2007. Automate updating the month+year string in man page title headers. Fix hard-coded __revision__ strings that crept into some older tests.
........
r1765 | stevenknight | 2007-01-08 11:28:02 -0600 (Mon, 08 Jan 2007) | 1 line

0.96.D543 - Update development line for 0.96.94.
........
................
r1784 | stevenknight | 2007-01-21 14:13:49 -0600 (Sun, 21 Jan 2007) | 57 lines

Merged revisions 1767-1783 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r1771 | stevenknight | 2007-01-11 10:42:17 -0600 (Thu, 11 Jan 2007) | 1 line

0.96.D544 - Fix maximum recursion depth exceeded when writing .sconsign files after using Nodes on two different Windows drive letters.
........
r1772 | stevenknight | 2007-01-11 12:15:07 -0600 (Thu, 11 Jan 2007) | 1 line

0.96.D545 - Restore caching of file contents in Node.FS.File.get_contents().
........
r1773 | stevenknight | 2007-01-12 10:22:40 -0600 (Fri, 12 Jan 2007) | 1 line

0.96.D405 - Add MergeFlags() and AddFlags() methods. (Greg Noel) Support recognizing compiler flags that begin with +. (Kent Boortz)
........
r1774 | stevenknight | 2007-01-16 15:58:39 -0600 (Tue, 16 Jan 2007) | 2 lines

Back out previous modification; the wrong change was distributed.
........
r1775 | stevenknight | 2007-01-16 16:08:26 -0600 (Tue, 16 Jan 2007) | 1 line

0.96.D546 - Back out previous change that cached get_contents().
........
r1776 | stevenknight | 2007-01-17 14:30:59 -0600 (Wed, 17 Jan 2007) | 1 line

0.96.D547 - Document the use of ${} to evaluate arbitrary Python code. (Gary Oberbrunner)
........
r1777 | stevenknight | 2007-01-17 15:43:18 -0600 (Wed, 17 Jan 2007) | 1 line

0.96.D548 - Better man page Scanner example (Matt Doar); add FindPathDirs() to the publicly-available functions, and document it.
........
r1778 | stevenknight | 2007-01-17 17:01:03 -0600 (Wed, 17 Jan 2007) | 1 line

0.96.D549 - Return MSVC default paths for versions >= 8.0. (Anonymous)
........
r1779 | stevenknight | 2007-01-18 08:37:58 -0600 (Thu, 18 Jan 2007) | 1 line

0.96.D550 - Windows fix for the rel_path() unit test.
........
r1780 | stevenknight | 2007-01-18 14:01:32 -0600 (Thu, 18 Jan 2007) | 1 line

0.96.D551 - Fix use of __builtins__ in Subst.py.
........
r1781 | stevenknight | 2007-01-18 16:00:27 -0600 (Thu, 18 Jan 2007) | 1 line

0.96.D552 - Collect compatibility code in its own SCons.compat subpackage.
........
r1782 | stevenknight | 2007-01-18 16:22:52 -0600 (Thu, 18 Jan 2007) | 1 line

0.96.D553 - Add the vanilla Python 2.5 subprocess.py module (currently unused) as a baseline for our backwards-compatibility changes to that module.
........
r1783 | stevenknight | 2007-01-18 17:09:39 -0600 (Thu, 18 Jan 2007) | 1 line

0.96.D554 - Change env.ParseConfig() to use the new subprocess module.
........
................
r1814 | stevenknight | 2007-02-08 09:40:05 -0600 (Thu, 08 Feb 2007) | 2 lines

Add links to queries for ENHANCEMENT issues.
................
r1826 | stevenknight | 2007-02-10 23:02:05 -0600 (Sat, 10 Feb 2007) | 137 lines

Merged revisions 1784-1824 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r1786 | stevenknight | 2007-01-25 15:29:15 -0600 (Thu, 25 Jan 2007) | 1 line

0.96.D555 - Doc string updates for TaskMaster to better describe the architecture. Get rid of some no-longer-used code.
........
r1787 | stevenknight | 2007-01-25 23:24:31 -0600 (Thu, 25 Jan 2007) | 1 line

0.96.D556 - Packaging changes to support building packages in an arbitrary directory.
........
r1788 | stevenknight | 2007-01-30 20:35:39 -0600 (Tue, 30 Jan 2007) | 1 line

0.96.D557 - Make the Scanner.Base class able to handle Scanner.Selector functionality (i.e., a dictionary to select other scanners) and prepare to deprecate Scanner.Selector and Scanner.Scanner() in the future.
........
r1789 | stevenknight | 2007-01-30 20:45:23 -0600 (Tue, 30 Jan 2007) | 1 line

0.96.D558 - Add support for a site-scons subdirectory. (Gary Oberbrunner)
........
r1790 | stevenknight | 2007-01-31 00:36:20 -0600 (Wed, 31 Jan 2007) | 1 line

0.96.D559 - Clean up various module imports and other pychecker-detected problems.
........
r1791 | stevenknight | 2007-01-31 11:51:04 -0600 (Wed, 31 Jan 2007) | 1 line

0.96.D560 - Fix detection of Java anonymous classes if a newline precedes the opening brace. (Leanid Nazdrynau)
........
r1792 | stevenknight | 2007-02-02 11:57:59 -0600 (Fri, 02 Feb 2007) | 1 line

0.96.D561 - Add a --bootstrap_src option to bootstrap.py; search the bootstrap.py directory by default. (Greg Noel)
........
r1793 | stevenknight | 2007-02-02 18:04:52 -0600 (Fri, 02 Feb 2007) | 1 line

0.96.D562 - Don't check the build/*/gentoo directories for copyright strings.
........
r1794 | stevenknight | 2007-02-02 18:12:43 -0600 (Fri, 02 Feb 2007) | 1 line

0.96.D563 - Fix pychecker clean-ups on later Python versions.
........
r1795 | stevenknight | 2007-02-02 18:38:47 -0600 (Fri, 02 Feb 2007) | 1 line

0.96.D564 - Add a NoCache() function to allow marking targets as not being suitable for propagating/ to (or retrieving from) CacheDir(). (Dave Vitek)
........
r1796 | stevenknight | 2007-02-02 20:08:33 -0600 (Fri, 02 Feb 2007) | 1 line

0.96.D565 - Add a --tree= option, to make the interface to dumping dependency graphs a little clearner, and give it a 'prune' option to avoid repeating the dependency walk for Nodes we've already visited.
........
r1797 | stevenknight | 2007-02-03 20:37:25 -0600 (Sat, 03 Feb 2007) | 1 line

0.96.D566 - Packaging fix: don't add '#' to the beginning of a build_dir name if it's already an absolute path.
........
r1798 | stevenknight | 2007-02-03 20:53:42 -0600 (Sat, 03 Feb 2007) | 1 line

0.96.D567 - Add backwards-compatibility for set() types, and restore the line that used them in the compatibility _subprocess.py module.
........
r1799 | stevenknight | 2007-02-05 10:30:28 -0600 (Mon, 05 Feb 2007) | 1 line

0.96.D568 - Capture outline and build configuration for a possible future Developer's Guide.
........
r1800 | stevenknight | 2007-02-05 11:03:37 -0600 (Mon, 05 Feb 2007) | 1 line

0.96.D569 - Exclude the new developer guide MANIFEST from Copyright string checks.
........
r1801 | stevenknight | 2007-02-05 11:16:04 -0600 (Mon, 05 Feb 2007) | 1 line

0.96.D570 - Track fix in upstream subprocess.py. (Ralf W. Grosse-Kunstleve)
........
r1802 | stevenknight | 2007-02-05 20:05:59 -0600 (Mon, 05 Feb 2007) | 1 line

0.96.D571 - Change the Windows installer to register scons.bat as an 'App Path', so the directory doesn't need to be added to %PATH%.
........
r1803 | stevenknight | 2007-02-05 21:33:01 -0600 (Mon, 05 Feb 2007) | 1 line

0.96.D572 - Prepare SConf for use with the subprocess module by refactoring the Unbuffered class.
........
r1804 | stevenknight | 2007-02-05 22:37:09 -0600 (Mon, 05 Feb 2007) | 1 line

0.96.D573 - Get rid of left-over Node.Node.{pre,post}_actions attributes.
........
r1805 | stevenknight | 2007-02-06 12:04:14 -0600 (Tue, 06 Feb 2007) | 1 line

0.96.D574 - Remove leftover print in the test/CacheDir/NoCache.py test.
........
r1806 | stevenknight | 2007-02-06 17:11:03 -0600 (Tue, 06 Feb 2007) | 1 line

0.96.D575 - Support the ability to evaluate a ${} construction variable to select the spawner function.
........
r1809 | stevenknight | 2007-02-07 00:30:10 -0600 (Wed, 07 Feb 2007) | 1 line

0.96.D576 - Documentation fixes and updates.
........
r1810 | stevenknight | 2007-02-07 15:51:20 -0600 (Wed, 07 Feb 2007) | 1 line

0.96.D577 - Don't expect a bootstrap.py runtest.py file to be generated when swig -noproxy is used.
........
r1811 | stevenknight | 2007-02-07 16:55:06 -0600 (Wed, 07 Feb 2007) | 1 line

0.96.D578 - Make --srcdir a synonym for -Y/--repository.
........
r1812 | stevenknight | 2007-02-07 23:46:22 -0600 (Wed, 07 Feb 2007) | 1 line

0.96.D579 - More doc updates: PathAccept, #include+Repository double-quote limitation.
........
r1817 | stevenknight | 2007-02-08 12:46:42 -0600 (Thu, 08 Feb 2007) | 1 line

0.96.D580 - Fix use of toolpath with BuildDir.
........
r1818 | stevenknight | 2007-02-08 12:59:23 -0600 (Thu, 08 Feb 2007) | 1 line

0.96.D581 - Enable build of the text version of the User's Guide.
........
r1819 | stevenknight | 2007-02-08 14:21:31 -0600 (Thu, 08 Feb 2007) | 1 line

0.96.D582 - Fix handling of Java inner classes with JARCHDIR.
........
r1820 | stevenknight | 2007-02-08 14:39:33 -0600 (Thu, 08 Feb 2007) | 1 line

0.96.D583 - Add linking with -lm to the dmd.py Tool smart linker. (Anonymous)
........
r1821 | stevenknight | 2007-02-08 17:26:29 -0600 (Thu, 08 Feb 2007) | 1 line

0.96.D584 - Fix ParseConfig() when *FLAGS variables have been replaced with strings.
........
r1822 | stevenknight | 2007-02-09 12:21:17 -0600 (Fri, 09 Feb 2007) | 1 line

0.96.D585 - Fix installation of file names beginning with #. (Dave Weber)
........
r1823 | stevenknight | 2007-02-09 14:14:47 -0600 (Fri, 09 Feb 2007) | 1 line

0.96.D586 - Post-review improvements to recent toolpath and MergeFlags() changes. (Gary Oberbrunner, Greg Noel)
........
r1824 | stevenknight | 2007-02-10 00:53:13 -0600 (Sat, 10 Feb 2007) | 1 line

0.96.D587 - Commonize flags initialization between the c and c++ Tools.
........
................
r1834 | stevenknight | 2007-02-15 00:58:45 -0600 (Thu, 15 Feb 2007) | 2 lines

Update project highlights for 0.96.95.
................
r1863 | stevenknight | 2007-03-15 17:16:54 -0500 (Thu, 15 Mar 2007) | 2 lines

Add banner about SoC2007 to the project highlights.
................
r1884 | stevenknight | 2007-04-13 18:36:39 -0500 (Fri, 13 Apr 2007) | 185 lines

Merged revisions 1826-1882 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r1828 | stevenknight | 2007-02-12 13:29:17 -0600 (Mon, 12 Feb 2007) | 1 line

0.96.D588 - Speed up Builder suffix-matching.
........
r1829 | stevenknight | 2007-02-14 08:12:32 -0600 (Wed, 14 Feb 2007) | 1 line

0.96.D589 - The scons command, branch 0.96.94.
........
r1830 | stevenknight | 2007-02-14 09:49:44 -0600 (Wed, 14 Feb 2007) | 1 line

0.96.D590 - Fix the scons-doc .tar.gz file packaging.
........
r1835 | stevenknight | 2007-02-15 11:03:20 -0600 (Thu, 15 Feb 2007) | 1 line

0.96.D591 - Update the release HOWTO.
........
r1836 | stevenknight | 2007-02-15 13:39:24 -0600 (Thu, 15 Feb 2007) | 1 line

0.96.D592 - The scons command, branch 0.96.95.
........
r1837 | stevenknight | 2007-02-15 18:34:18 -0600 (Thu, 15 Feb 2007) | 1 line

0.96.D593 - Back out (comment out) Windows registry installer changes.
........
r1838 | stevenknight | 2007-02-16 10:37:28 -0600 (Fri, 16 Feb 2007) | 1 line

0.96.D594 - Update Debian packaging to remove hard-coded references to Python 2.2. (Jean-Baptiste Lab)
........
r1839 | stevenknight | 2007-02-20 09:34:23 -0600 (Tue, 20 Feb 2007) | 1 line

0.96.D595 - Documentation fixes. In the construction variable appendix, use cross-referenced links to entries.
........
r1840 | stevenknight | 2007-02-21 05:11:35 -0600 (Wed, 21 Feb 2007) | 1 line

0.96.D596 - Handle Java '.class' attributes after non-word tokens without assuming it introduces an inner class.
........
r1841 | stevenknight | 2007-02-21 22:33:28 -0600 (Wed, 21 Feb 2007) | 1 line

0.96.D597 - CPPDEFINES regression
........
r1842 | stevenknight | 2007-02-22 14:19:10 -0600 (Thu, 22 Feb 2007) | 1 line

0.96.D598 - Do not detect a Java anonymous class when the first non-skipped token after "new" is a closing brace.
........
r1843 | stevenknight | 2007-02-23 10:45:06 -0600 (Fri, 23 Feb 2007) | 1 line

0.96.D599 - Better [Errno 21] Is a directory error message.
........
r1844 | stevenknight | 2007-02-23 13:32:11 -0600 (Fri, 23 Feb 2007) | 1 line

0.96.D600 - Fix expansion of non-Node objects within a PathList (maximum recursion / unhashable type bug).
........
r1847 | stevenknight | 2007-03-02 00:12:27 -0600 (Fri, 02 Mar 2007) | 1 line

0.96.D601 - Generate SCons API documentation from the docstrings using epydoc.
........
r1848 | stevenknight | 2007-03-02 14:10:06 -0600 (Fri, 02 Mar 2007) | 1 line

0.96.D602 - Fix use of custom include and lib paths with Visual Studio 8. (Richard Viney)
........
r1849 | stevenknight | 2007-03-03 01:00:22 -0600 (Sat, 03 Mar 2007) | 1 line

0.96.D603 - Man page fix: ParseDepends(). User's Guide updates: NoCache(), Clean(), fix CPPDEFINES output, markers for to-be-documented features, white space clean-up.
........
r1850 | stevenknight | 2007-03-06 02:29:08 -0600 (Tue, 06 Mar 2007) | 1 line

0.96.D604 - Fix use of --debug=presub with the Actions for our out-of-the-box Builders.
........
r1851 | stevenknight | 2007-03-06 09:10:43 -0600 (Tue, 06 Mar 2007) | 1 line

0.96.D605 - User Guide updates: --random, AlwaysBuild(), --tree=, --debug=presub, --debug=stacktrace.
........
r1852 | stevenknight | 2007-03-06 15:38:06 -0600 (Tue, 06 Mar 2007) | 1 line

0.96.D606 - Have the Intel toolchain use the default smart linking logic. (Dmitry Grigorenko and Gary Oberbrunner)
........
r1853 | stevenknight | 2007-03-06 17:56:44 -0600 (Tue, 06 Mar 2007) | 1 line

0.96.D607 - Fix tests: ActionTests.py for presub change, command detection in test/Intel/icpc-link.py.
........
r1854 | stevenknight | 2007-03-08 09:35:25 -0600 (Thu, 08 Mar 2007) | 1 line

0.96.D608 - Better selection of .NET Framework SDK paths. (Richard Viney)
........
r1855 | stevenknight | 2007-03-08 10:34:37 -0600 (Thu, 08 Mar 2007) | 1 line

0.96.D609 - Don't re-run TeX if the triggering strings (\makeindex, \bibliography, \tableofcontents) are commented out. (Matthias Troffaes)
........
r1856 | stevenknight | 2007-03-09 16:18:36 -0600 (Fri, 09 Mar 2007) | 1 line

0.96.D610 - Teach the new PathList module to handle nested lists within CPPPATH and the like.
........
r1857 | stevenknight | 2007-03-10 23:30:29 -0600 (Sat, 10 Mar 2007) | 1 line

0.96.D611 - Qt builders_used failure.
........
r1858 | stevenknight | 2007-03-11 15:33:34 -0500 (Sun, 11 Mar 2007) | 1 line

0.96.D612 - Document limitations of --implicit-cache w.r.t. CPPPATH/LIBPATH/etc.
........
r1859 | stevenknight | 2007-03-11 21:11:26 -0500 (Sun, 11 Mar 2007) | 1 line

0.96.D613 - Document --debug=findlibs and --taskmastertrace in the User's Guide.
........
r1860 | stevenknight | 2007-03-12 13:28:42 -0500 (Mon, 12 Mar 2007) | 1 line

0.96.D614 - Remove deleted cons file from the User's Guide MANIFEST. Fix epydoc API build if the build directory is outside the current directory.
........
r1861 | stevenknight | 2007-03-13 13:03:56 -0500 (Tue, 13 Mar 2007) | 2 lines

Ignore '*.pyc' files in the compat/ subdirectory.
........
r1862 | stevenknight | 2007-03-13 19:08:19 -0500 (Tue, 13 Mar 2007) | 1 line

0.96.D615 - Fix use of $VAR expansions within CPPPATH/LIBPATH values when the expansion is itself a Dir node concatenated with a string.
........
r1866 | stevenknight | 2007-03-16 01:46:10 -0500 (Fri, 16 Mar 2007) | 1 line

0.96.D616 - Back off to the 0.96.94 of Builder.py (with some performance improvements).
........
r1867 | stevenknight | 2007-03-16 11:20:39 -0500 (Fri, 16 Mar 2007) | 1 line

0.96.D617 - Fix an unnamed variable error if we can't map the Visual Studio version to a default framework version.
........
r1868 | stevenknight | 2007-03-16 12:08:18 -0500 (Fri, 16 Mar 2007) | 1 line

0.96.D618 - Quote the MSVS build target in command lines to handle spaces target name. (Jeff Mahovsky)
........
r1869 | stevenknight | 2007-03-16 13:30:06 -0500 (Fri, 16 Mar 2007) | 1 line

0.96.D619 - Portability fixes for tests run on Windows.
........
r1870 | stevenknight | 2007-03-20 00:18:04 -0500 (Tue, 20 Mar 2007) | 1 line

0.96.D620 - Windows portability fixes: test scripts and infrastructure, detect vcexpress.exe.
........
r1871 | garyo | 2007-03-21 18:32:54 -0500 (Wed, 21 Mar 2007) | 1 line

Fix bug where site_scons dir was added to sys.path as relative, not absolute. Added test case. Bug reported by Timothy Woods; thanks for the test case!
........
r1872 | stevenknight | 2007-03-22 09:43:23 -0500 (Thu, 22 Mar 2007) | 1 line

0.96.D622 - Add mention of site_scons fix to src/CHANGES.txt.
........
r1873 | stevenknight | 2007-04-02 23:49:36 -0500 (Mon, 02 Apr 2007) | 1 line

0.96.D623 - Parallel build dependencies with multiple entries in children. (Adam Simpkins)
........
r1874 | stevenknight | 2007-04-04 07:45:05 -0500 (Wed, 04 Apr 2007) | 1 line

0.96.D624 - Make all necessary LaTeX auxiliary files Precious, so bibliography contents aren't affected by whether the auxiliary files exist or not. (Joel B. Mohler)
........
r1875 | stevenknight | 2007-04-04 13:15:39 -0500 (Wed, 04 Apr 2007) | 1 line

0.96.D625 - Fix --debug-time value when -j option is used.
........
r1876 | stevenknight | 2007-04-09 19:40:08 -0500 (Mon, 09 Apr 2007) | 1 line

0.96.D626 - Fix man page example of propagating external user environment. Eliminate cut-and-paste sentence in NoCache() description. (Helmut Grohne, Joe Bloggs) [Issue 1626] [Issue 1627]
........
r1877 | stevenknight | 2007-04-09 23:20:14 -0500 (Mon, 09 Apr 2007) | 1 line

0.96.D627 - Re-run latex after bibtex runs. (Rob Managan)
........
r1878 | stevenknight | 2007-04-11 23:38:17 -0500 (Wed, 11 Apr 2007) | 1 line

0.96.D628 - Fix typo in the User's Guide. [issue 1600]
........
r1879 | stevenknight | 2007-04-12 01:06:35 -0500 (Thu, 12 Apr 2007) | 1 line

0.96.D629 - Avoid name conflicts with compat/ modules (specifically _subprocess.py).
........
r1880 | stevenknight | 2007-04-12 01:33:42 -0500 (Thu, 12 Apr 2007) | 1 line

0.96.D630 - Portability fixes and other improvements in test scripts.
........
r1882 | stevenknight | 2007-04-13 16:42:02 -0500 (Fri, 13 Apr 2007) | 1 line

0.96.D631 - The scons command, branch 0.96.96.
........
................
r1905 | stevenknight | 2007-05-17 16:27:36 -0500 (Thu, 17 May 2007) | 2 lines

Update project highlights and the roadmap for the release of 0.97.
................
r1907 | stevenknight | 2007-05-18 00:40:31 -0500 (Fri, 18 May 2007) | 29 lines

Merged revisions 1884-1905 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r1891 | stevenknight | 2007-04-24 08:57:03 -0500 (Tue, 24 Apr 2007) | 1 line

0.96.D632 - Fix 0.96.96 reference count regression during parallel builds.
........
r1892 | stevenknight | 2007-04-24 12:51:05 -0500 (Tue, 24 Apr 2007) | 1 line

0.96.D633 - Fix documented default value(s) of $MSVS_USE_MFC_DIRS.
........
r1893 | stevenknight | 2007-04-24 16:12:14 -0500 (Tue, 24 Apr 2007) | 1 line

0.96.D634 - Make the DirEntryScanner tolerant of non-Dir nodes.
........
r1898 | stevenknight | 2007-05-09 15:07:15 -0500 (Wed, 09 May 2007) | 1 line

0.96.D635 - Portability fixes in test scripts.
........
r1899 | stevenknight | 2007-05-12 08:19:13 -0500 (Sat, 12 May 2007) | 1 line

0.96.D636 - Update documentation with rudimentary Tool module descriptions.
........
r1901 | stevenknight | 2007-05-17 14:32:14 -0500 (Thu, 17 May 2007) | 1 line

0.97.D001 - Initialize 0.97 for release.
........
................
................
r1931 | pscholl | 2007-05-23 18:41:24 -0500 (Wed, 23 May 2007) | 5 lines

Install, InstallAs, CopyTo and CopyAs will not get instantiated for each
environment.
................
r1936 | stevenknight | 2007-05-26 14:56:36 -0500 (Sat, 26 May 2007) | 3 lines

Windows has no os.uname() method, so just leave "machine" initialized to
None on those systems.
................
r1946 | pscholl | 2007-05-30 11:44:51 -0500 (Wed, 30 May 2007) | 3 lines

* let FindSourceFile use '.' as the default target
................
r1948 | pscholl | 2007-05-30 12:23:42 -0500 (Wed, 30 May 2007) | 3 lines

* use has_builder() instead of len(node.sources)==0 to select leaves in the DAG
................
r1950 | stevenknight | 2007-05-31 09:03:19 -0500 (Thu, 31 May 2007) | 6 lines

Clean ups:
Add a missing test.pass_test() call.
Use test.skip_test() when a utility isn't found.
Un-indent the test.*() calls in the main bodies of the test.
Use test.must_exist() instead of test.fail_test(not os.path.exists()).
................
r1965 | stevenknight | 2007-06-01 15:24:14 -0500 (Fri, 01 Jun 2007) | 3 lines

Remove the Install() and InstallAs() unit tests, since those are
no longer native construction environment methods.
................
r1966 | stevenknight | 2007-06-01 15:25:47 -0500 (Fri, 01 Jun 2007) | 3 lines

Remove an extra line interfering with a fix for installing files that
begin with '#'. (Probably left over from a hasty merge.)
................
r1967 | stevenknight | 2007-06-01 15:32:36 -0500 (Fri, 01 Jun 2007) | 2 lines

Remove a duplicate line.
................
r1974 | stevenknight | 2007-06-04 12:41:16 -0500 (Mon, 04 Jun 2007) | 7 lines

Change FindSourceFiles so it disambiguates Entry nodes into File
nodes while performing its walk.
Use isinstance() instead explicit __class__ comparison to allow for
future subclassing.
Use set() to find uniq elements in a list (available to earlier
Python versions through our compatibility library).
................
r2122 | stevenknight | 2007-07-11 15:52:15 -0500 (Wed, 11 Jul 2007) | 3 lines

1.5 portability issues (nested scope, comment out Help-text stuff that
will be superceded by the AddOption() support).
................
r2124 | stevenknight | 2007-07-12 11:55:38 -0500 (Thu, 12 Jul 2007) | 2 lines

Skip MSI tests if xml.dom.minidom isn't installed (early Python version)
................
r2125 | stevenknight | 2007-07-12 12:27:36 -0500 (Thu, 12 Jul 2007) | 13 lines

Set TAR_OPTIONS=--wildcards when executing rpmbuild, so the extraction
of the .spec file from the tarball will work with newer versions of tar.

Change the RPM tool to initialize variables using env.SetDefault(), so
the re-application of the tools to the construction environment (?)
doesn't wipe out our $RPM setting (to add TAR_OPTIONS=--wildcards).

Have the .spec files generated by the tests build/install the software
using the version of SCons under test, not whatever happens to be
installed as "scons" on the system.

Python 1.5 fixes in various RPM code.
................
r2127 | stevenknight | 2007-07-12 15:03:45 -0500 (Thu, 12 Jul 2007) | 10 lines

Use the new AddOption() method to support --install-sandbox, restoring
the ability to call the options() function of a Tool module.

Python 2.2 fix in packaging/test/packaging/rpm/tagging.py.

Earlier-version Python fixes in other tests.

Removal of unnecessary "import os" lines, and use of TestCmd.must_exist()
where it can be.
................
r2129 | stevenknight | 2007-07-13 09:39:26 -0500 (Fri, 13 Jul 2007) | 7 lines

Pre-2.2 Python fixes:

Pull a recursively-called embedded function into the global Environment.py
namespace.

Avoid .split() and .replace() string object methods.
................
................
r2248 | stevenknight | 2007-08-10 11:51:07 -0500 (Fri, 10 Aug 2007) | 2 lines

Add announcements of checkpoint release 0.97.0d20070809.
................
r2302 | stevenknight | 2007-08-16 22:17:04 -0500 (Thu, 16 Aug 2007) | 419 lines

Merged revisions 2136-2200,2202-2290,2292-2301 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
r2145 | stevenknight | 2007-07-17 09:15:12 -0500 (Tue, 17 Jul 2007) | 3 lines

Don't put null strings (from variable expansion) in a path list.
(They get turned into the current directory on later expansion.)
........
r2146 | stevenknight | 2007-07-17 10:47:39 -0500 (Tue, 17 Jul 2007) | 3 lines

Add support for optional arguments on command-line long options
by specifying nargs='?'.
........
r2149 | stevenknight | 2007-07-17 15:22:24 -0500 (Tue, 17 Jul 2007) | 2 lines

Remove left-over Optik mentions.
........
r2150 | stevenknight | 2007-07-17 15:39:34 -0500 (Tue, 17 Jul 2007) | 4 lines

Add a $SWIGPATH variable for finding SWIG dependencies, with
$SWIGINC{PREFIX,SUFFIX} for adding them to the command line.
........
r2154 | stevenknight | 2007-07-18 20:05:31 -0500 (Wed, 18 Jul 2007) | 2 lines

Fix variable misspellings in the doc added for $SWIGOUTPUT.
........
r2155 | stevenknight | 2007-07-18 20:07:28 -0500 (Wed, 18 Jul 2007) | 2 lines

Add the Python eggs info file to the RPM packaging build.
........
r2156 | stevenknight | 2007-07-18 20:15:08 -0500 (Wed, 18 Jul 2007) | 2 lines

Convert documentation from DocBook SGML to XML.
........
r2158 | stevenknight | 2007-07-19 17:16:19 -0500 (Thu, 19 Jul 2007) | 3 lines

Conditionally add the .egg-info the RPM file list only if the distutils
in the version of Python that rpmbuild will execute knows about them.
........
r2161 | stevenknight | 2007-07-19 19:12:29 -0500 (Thu, 19 Jul 2007) | 5 lines

Capture a test case (contributed by Tilo Prutz) where instantiation of
a private class causes javac to generate an additional anonymous inner
class file. (No solution yet, but there's no sense throwing away the
preparatory work.)
........
r2162 | stevenknight | 2007-07-20 11:29:56 -0500 (Fri, 20 Jul 2007) | 3 lines

Support passing a list of .java files as source to the Java() builder.
(Leanid Nazdrynau)
........
r2163 | garyo | 2007-07-20 12:00:35 -0500 (Fri, 20 Jul 2007) | 1 line

Fixed cut-n-paste error in Touch factory method doc in users guide.
........
r2167 | stevenknight | 2007-07-21 22:59:40 -0500 (Sat, 21 Jul 2007) | 2 lines

Don't execute the SWIGOUTDIR test if swig isn't installed.
........
r2168 | stevenknight | 2007-07-21 23:14:17 -0500 (Sat, 21 Jul 2007) | 2 lines

Fix the test's ability to run under a path name containing spaces.
........
r2171 | stevenknight | 2007-07-24 15:54:41 -0500 (Tue, 24 Jul 2007) | 2 lines

Handle white space in key file names in the packaging build.
........
r2172 | stevenknight | 2007-07-24 21:41:15 -0500 (Tue, 24 Jul 2007) | 2 lines

More efficient copying of construction environments.
........
r2173 | stevenknight | 2007-07-25 10:56:02 -0500 (Wed, 25 Jul 2007) | 2 lines

Update the SCons build for Subversion and general clean-up.
........
r2174 | stevenknight | 2007-07-25 11:35:16 -0500 (Wed, 25 Jul 2007) | 3 lines

Suppress the [brackets] around a node in the --tree=prune output if
the node is a source.
........
r2175 | stevenknight | 2007-07-25 12:52:18 -0500 (Wed, 25 Jul 2007) | 3 lines

Commonize the skip_test() method and make its behavior configurable
via a TESTCOMMON_PASS_SKIPS environment variable.
........
r2178 | stevenknight | 2007-07-25 21:43:47 -0500 (Wed, 25 Jul 2007) | 3 lines

Add $JAVACLASSPATH and $JAVASOURCEPATH construction variables. (Leanid
Nazdrynau)
........
r2182 | stevenknight | 2007-07-30 12:10:20 -0500 (Mon, 30 Jul 2007) | 3 lines

Refactor Builder suffix-adjusting into its own method, so we can
(potentially) re-use it for Builders with attached source Builders.
........
r2183 | stevenknight | 2007-07-30 14:51:53 -0500 (Mon, 30 Jul 2007) | 2 lines

More efficient source-builder suffix matching.
........
r2184 | stevenknight | 2007-07-30 16:01:42 -0500 (Mon, 30 Jul 2007) | 4 lines

Encapsulate initialization of the default FS object by an accessor
function in SCons.Node.FS. (This also gets rid of an unnecessary
reference to SCons.Node.FS.default_fs in the LaTeX scanner.)
........
r2193 | stevenknight | 2007-07-30 18:24:07 -0500 (Mon, 30 Jul 2007) | 3 lines

Fix interpretation of source arguments that have no suffix when the
called Builder has both a src_suffix and a src_builder.
........
r2194 | stevenknight | 2007-07-31 10:25:31 -0500 (Tue, 31 Jul 2007) | 2 lines

Increase the number of tries for random output from three to ten.
........
r2195 | stevenknight | 2007-07-31 10:52:28 -0500 (Tue, 31 Jul 2007) | 3 lines

Skip the test gracefully if the zipfile module can't read the file it
just wrote (which is the case for Python 2.1 on 64-bit systems).
........
r2196 | stevenknight | 2007-07-31 13:06:21 -0500 (Tue, 31 Jul 2007) | 2 lines

Move the "import zipfile" so it doesn't fail on Python <= 2.0.
........
r2197 | stevenknight | 2007-07-31 14:51:50 -0500 (Tue, 31 Jul 2007) | 3 lines

Commonize initialization of the various Java builders so they can be
hooked up into a multi-stage Builder chain. (Leanid Nazdrynau)
........
r2198 | stevenknight | 2007-07-31 16:15:18 -0500 (Tue, 31 Jul 2007) | 3 lines

Fix use of ${TARGET.dir} and ${SOURCE.dir} expansions in $FORTRANMODDIR
$JARCHDIR, $JARFLAGS, $LEXFLAGS, $SWIGFLAGS, $SWIGOUTDIR and $YACCFLAGS.
........
r2199 | stevenknight | 2007-07-31 16:25:48 -0500 (Tue, 31 Jul 2007) | 2 lines

Remove left-over Trace() call.
........
r2202 | stevenknight | 2007-08-01 12:31:48 -0500 (Wed, 01 Aug 2007) | 3 lines

Bail out via test.skip_test() if wix ("candle") isn't found.
Put the main body of code flush left instead of under an if: block.
........
r2203 | stevenknight | 2007-08-01 15:35:55 -0500 (Wed, 01 Aug 2007) | 5 lines

Fix Tool.packaging.rpm.package() so it doesn't always overwrite
$RPMFLAGS with -ta.
Set --buildroot in RPM packaging tests so they don't overwrite
each other when run simultaneously.
........
r2204 | stevenknight | 2007-08-01 15:37:36 -0500 (Wed, 01 Aug 2007) | 2 lines

Fix a nested scope issue with the internal build_sources() function.
........
r2205 | stevenknight | 2007-08-01 15:46:08 -0500 (Wed, 01 Aug 2007) | 5 lines

Normalize (X out) the CreationDate field inside embedded, compressed
PostScript streams within the generated PDF files. Also normalize
preceding Length field, since compression length is affected by different
patterns of input, including the variable CreationDate value.
........
r2211 | stevenknight | 2007-08-02 08:52:06 -0500 (Thu, 02 Aug 2007) | 2 lines

Add the new modules from branches/packaging to the SCons packaging build.
........
r2212 | stevenknight | 2007-08-02 19:59:01 -0500 (Thu, 02 Aug 2007) | 2 lines

Fix the JAVACLASSPATH test when javah isn't on the default $PATH.
........
r2214 | stevenknight | 2007-08-03 15:05:21 -0500 (Fri, 03 Aug 2007) | 4 lines

Hook up the Java builders into a multi-step chain underneath a Java()
pseudo-builder (wrapper) that examines its arguments and calls the
appropriate underlying file-or-dir builder.
........
r2215 | stevenknight | 2007-08-03 15:49:58 -0500 (Fri, 03 Aug 2007) | 2 lines

Fix for old Python versions: use apply() instead of *args, **kw.
........
r2216 | stevenknight | 2007-08-03 16:49:31 -0500 (Fri, 03 Aug 2007) | 2 lines

Hook up the SWIG builder as a source builder for .java files.
........
r2217 | stevenknight | 2007-08-03 17:28:19 -0500 (Fri, 03 Aug 2007) | 2 lines

Don't use .endswith(), which didn't appear until later Python versions.
........
r2218 | stevenknight | 2007-08-03 17:29:38 -0500 (Fri, 03 Aug 2007) | 2 lines

Replace tabs with spaces.
........
r2219 | stevenknight | 2007-08-04 08:06:23 -0500 (Sat, 04 Aug 2007) | 3 lines

Initialize a loop-invariant lambda for matching .java suffixes outside
the loop.
........
r2220 | stevenknight | 2007-08-07 15:06:13 -0500 (Tue, 07 Aug 2007) | 2 lines

Refactor parallel class-generation loops into one.
........
r2221 | stevenknight | 2007-08-07 16:04:06 -0500 (Tue, 07 Aug 2007) | 5 lines

Have the Java multi-step builder test actually check for generated files,
and fix the generation of .java and .class file names, and interaction
with the SWIG builder, so that the files are generated in the correct
place.
........
r2222 | stevenknight | 2007-08-07 16:45:05 -0500 (Tue, 07 Aug 2007) | 3 lines

Fix dependencies on SWIG-generated .java files so they don't have to
be built in multiple passes.
........
r2226 | stevenknight | 2007-08-07 18:00:22 -0500 (Tue, 07 Aug 2007) | 2 lines

Fix SWIG when used with BuildDir().
........
r2227 | stevenknight | 2007-08-07 22:15:55 -0500 (Tue, 07 Aug 2007) | 5 lines

User's guide updates:
- Make the multiple files example match its text.
- Expand a truncated sentence about being able to use Python function actions
in the Command() Builder.
........
r2228 | stevenknight | 2007-08-07 23:25:18 -0500 (Tue, 07 Aug 2007) | 3 lines

Don't generate an error if a #include file matches a same-named
directory in $CPPPATH (or $FORTRANPATH, etc.).
........
r2229 | stevenknight | 2007-08-07 23:40:00 -0500 (Tue, 07 Aug 2007) | 2 lines

Fix a code example. (Gary Oberbrunner)
........
r2230 | stevenknight | 2007-08-08 00:05:43 -0500 (Wed, 08 Aug 2007) | 3 lines

Capture a test case to make sure AddPostAction() doesn't interfere
with normal linking. (Matt Doar, Gary Oberbrunner)
........
r2233 | stevenknight | 2007-08-08 14:15:44 -0500 (Wed, 08 Aug 2007) | 2 lines

Fix documentation typo in a construction variable cross-reference.
........
r2234 | stevenknight | 2007-08-08 17:03:25 -0500 (Wed, 08 Aug 2007) | 2 lines

Changes to SCons packaging to support checkpoint releases.
........
r2235 | stevenknight | 2007-08-09 10:10:01 -0500 (Thu, 09 Aug 2007) | 2 lines

Sidestep false negatives on heavily loaded systems.
........
r2236 | garyo | 2007-08-09 11:16:26 -0500 (Thu, 09 Aug 2007) | 1 line

Allow unpackaged files (e.g. *.pyo) to exist in the build dir without being packaged in the RPM. Without this, on some systems the rpmbuild may error out.
........
r2237 | stevenknight | 2007-08-09 11:27:56 -0500 (Thu, 09 Aug 2007) | 5 lines

Fix test/SWIG/build-dir.py so it works on old Python versions without
distutils.sysconfig.
Instead of just cutting-and-pasting initialization code from other
SWIG tests, centralize it in some new TestSCons methods.
........
r2238 | garyo | 2007-08-09 11:30:58 -0500 (Thu, 09 Aug 2007) | 1 line

Use docbook 4.3 instead of 4.4 for the XML doctype since some older(?) jade parsers can't handle new 4-byte Unicode chars in the 4.4 version of isogrk4.ent.
........
r2240 | stevenknight | 2007-08-09 16:35:06 -0500 (Thu, 09 Aug 2007) | 2 lines

User's Guide updates (post packaging changes).
........
r2243 | stevenknight | 2007-08-10 10:31:51 -0500 (Fri, 10 Aug 2007) | 3 lines

Fix the User's Guide build to use openjade, and to accomodate a change
in the name of the main generated file (book1.html => index.html).
........
r2245 | stevenknight | 2007-08-10 11:09:16 -0500 (Fri, 10 Aug 2007) | 2 lines

Update the {CHANGES,RELEASE}.txt datestamp lines.
........
r2253 | stevenknight | 2007-08-10 16:21:54 -0500 (Fri, 10 Aug 2007) | 2 lines

Fix the wix Tool module's ability to handle null entries in $PATH.
........
r2261 | stevenknight | 2007-08-11 23:08:12 -0500 (Sat, 11 Aug 2007) | 3 lines

Remove unnecessary files (.svnt/*, .{ae,cvs}ignore, www/*) from the
scons-src packages.
........
r2262 | stevenknight | 2007-08-11 23:24:49 -0500 (Sat, 11 Aug 2007) | 2 lines

Add missing __revision__ lines.
........
r2263 | stevenknight | 2007-08-11 23:33:42 -0500 (Sat, 11 Aug 2007) | 2 lines

Skip the test if the MANIFEST file hasn't been built.
........
r2264 | stevenknight | 2007-08-11 23:36:30 -0500 (Sat, 11 Aug 2007) | 2 lines

Add recent compatibility modules to the relevant exceptions lists.
........
r2265 | stevenknight | 2007-08-11 23:39:00 -0500 (Sat, 11 Aug 2007) | 3 lines

Update __VERSION__ strings in the QMTest/*.py modules, so that packaging
tests (src/test_*.py) will pass after builds of checkpoint releases.
........
r2266 | stevenknight | 2007-08-12 07:36:19 -0500 (Sun, 12 Aug 2007) | 2 lines

Add a comment about why we construct the __VERSION__ string at run time.
........
r2267 | stevenknight | 2007-08-12 07:42:30 -0500 (Sun, 12 Aug 2007) | 2 lines

Avoid reading the MANIFEST file twice. (Courtesy review by Greg Noel.)
........
r2268 | stevenknight | 2007-08-12 08:14:53 -0500 (Sun, 12 Aug 2007) | 3 lines

Shift Install() and InstallAs() from being documented as functions
to being documented as Builders.
........
r2269 | garyo | 2007-08-13 08:49:52 -0500 (Mon, 13 Aug 2007) | 1 line

Tests: Skip some more Java tests if javac is not installed on the test machine so they don't get marked as failing.
........
r2270 | garyo | 2007-08-13 11:09:39 -0500 (Mon, 13 Aug 2007) | 1 line

Fixed typo in test (shows up on non-Linux platforms).
........
r2271 | garyo | 2007-08-13 14:09:05 -0500 (Mon, 13 Aug 2007) | 4 lines

Test portability fixes for Darwin/OSX and IRIX.
This does not make all the tests pass on those OSes,
but it takes care of some of the more obvious errors that
I have time for right now. More to come.
........
r2272 | stevenknight | 2007-08-13 15:33:29 -0500 (Mon, 13 Aug 2007) | 2 lines

Tab => space fix.
........
r2273 | stevenknight | 2007-08-13 15:33:52 -0500 (Mon, 13 Aug 2007) | 2 lines

Test for swig, too, which is used to build from the .i file.
........
r2277 | garyo | 2007-08-14 10:40:00 -0500 (Tue, 14 Aug 2007) | 8 lines

Test portability on IRIX: test/Actions/pre-post creates target file
before building target, then IRIX CC does not chmod +x afterwards.
I think this change is safe on all OSes.

test/AS/ml.py: I think this is only supposed to be run on win32
(not skipped only on win32); the sense of the skip test was backwards.
........
r2278 | stevenknight | 2007-08-14 11:04:40 -0500 (Tue, 14 Aug 2007) | 2 lines

Add -tt when running tests, to catch inconsistent tab usage.
........
r2279 | stevenknight | 2007-08-14 14:00:43 -0500 (Tue, 14 Aug 2007) | 2 lines

Minor refactor of logic in File.retrieve_from_cache().
........
r2280 | stevenknight | 2007-08-15 01:11:40 -0500 (Wed, 15 Aug 2007) | 2 lines

Refactor CacheDir support into its own module.
........
r2281 | stevenknight | 2007-08-15 07:24:51 -0500 (Wed, 15 Aug 2007) | 2 lines

Move the cachepath() method from FS.File to the CacheDir class.
........
r2282 | stevenknight | 2007-08-15 08:31:34 -0500 (Wed, 15 Aug 2007) | 2 lines

Python 1.5.2 fix in the new Null class.
........
r2283 | stevenknight | 2007-08-15 10:45:53 -0500 (Wed, 15 Aug 2007) | 5 lines

Refactor CacheDir unit tests to:
- restore functionality that was dropped in the transition;
- commonize creation of test Nodes and other (mock) objects
- separate CacheDir tests from tests of CacheDir through Node.FS.File.
........
r2284 | stevenknight | 2007-08-15 11:46:38 -0500 (Wed, 15 Aug 2007) | 3 lines

Replace the Executor.Null.NullEnvironment object with a real Null object,
so it will absorb the CacheDir method calls as well.
........
r2285 | stevenknight | 2007-08-15 11:52:57 -0500 (Wed, 15 Aug 2007) | 5 lines

Add a get_CacheDir() method to a construction environment, which will
be used to fetch per-environment CacheDir specifications. (Right now
all calls to it still just return the one attached to underlying default
FS object.)
........
r2286 | stevenknight | 2007-08-15 15:15:46 -0500 (Wed, 15 Aug 2007) | 2 lines

Support per-construction-environment configuration of CacheDir().
........
r2287 | stevenknight | 2007-08-15 15:33:04 -0500 (Wed, 15 Aug 2007) | 2 lines

Move the tests of CacheDir()-related command-line options into test/CacheDir.
........
r2293 | stevenknight | 2007-08-16 11:14:49 -0500 (Thu, 16 Aug 2007) | 3 lines

Add the Package() builder description to the documentation build,
fixing the XML so that it will build.
........
r2294 | stevenknight | 2007-08-16 12:51:19 -0500 (Thu, 16 Aug 2007) | 3 lines

Reorganize packaging documentation: alphabetize the variable definitions
(and function names), document Tag() as a function, not a builder.
........
r2296 | stevenknight | 2007-08-16 12:55:01 -0500 (Thu, 16 Aug 2007) | 2 lines

Add a build command.
........
r2300 | stevenknight | 2007-08-16 16:49:13 -0500 (Thu, 16 Aug 2007) | 2 lines

First cut at documenting packaging variables.
........
r2301 | stevenknight | 2007-08-16 16:51:21 -0500 (Thu, 16 Aug 2007) | 3 lines

Construct the .src.rpm and .arch.rpm file names independnetly, not
by trying to massage one into the other.
........
................

  • Participants
  • Parent commits 7b54c26
  • Branches tools

Comments (0)

Files changed (438)

File .svnt/conf

View file
  • Ignore whitespace
 
 python = os.environ.get('PYTHON', sys.executable)
 
+build = [
+    '"%(python)s" bootstrap.py %%s' % locals()
+]
+
 cmd = '"%(python)s" runtest.py -q --noqmtest %%s' % locals()
 
 test_inputs = [

File HOWTO/release.txt

View file
  • Ignore whitespace
         aecp SConstruct
         vi SConstruct
 
-        aecp rpm/scons.spec.in
-        vi rpm/scons.spec.in
-
         aecp QMTest/TestSCons.py
         vi QMTest/TestSCons.py
 
-        aecp src/setup.py
-        vi src/setup.py
-
         # Read through and update the README files if necessary
         [optional] aecp README
         [optional] vi README

File HOWTO/subrelease.txt

View file
  • Ignore whitespace
         aecp SConstruct
         vi SConstruct
 
-        aecp rpm/scons.spec.in
-        vi rpm/scons.spec.in
-
-        aecp src/setup.py
-        vi src/setup.py
-
         aecp QMTest/TestSCons.py
         vi QMTest/TestSCons.py
 

File QMTest/SConscript

View file
  • Ignore whitespace
 #
 
 import os.path
+import string
 
 Import('build_dir', 'env')
 
 def copy(target, source, env):
     t = str(target[0])
     s = str(source[0])
-    open(t, 'wb').write(open(s, 'rb').read())
+    c = open(s, 'rb').read()
+    # Note:  We construct the __ VERSION __ substitution string at
+    # run-time so it doesn't get replaced when this file gets copied
+    # into the tree for packaging.
+    c = string.replace(c, '__' + 'VERSION' + '__', env['VERSION'])
+    open(t, 'wb').write(c)
 
 for file in files:
     # Guarantee that real copies of these files always exist in

File QMTest/TestCommon.py

View file
  • Ignore whitespace
             print self.stdout()
             self.diff(stderr, self.stderr(), 'STDERR ')
             raise TestFailed
+
+    def skip_test(self, message="Skipping test.\n"):
+        """Skips a test.
+
+        Proper test-skipping behavior is dependent on the external
+        TESTCOMMON_PASS_SKIPS environment variable.  If set, we treat
+        the skip as a PASS (exit 0), and otherwise treat it as NO RESULT.
+        In either case, we print the specified message as an indication
+        that the substance of the test was skipped.
+
+        (This was originally added to support development under Aegis.
+        Technically, skipping a test is a NO RESULT, but Aegis would
+        treat that as a test failure and prevent the change from going to
+        the next step.  Since we ddn't want to force anyone using Aegis
+        to have to install absolutely every tool used by the tests, we
+        would actually report to Aegis that a skipped test has PASSED
+        so that the workflow isn't held up.)
+        """
+        if message:
+            sys.stdout.write(message)
+            sys.stdout.flush()
+        pass_skips = os.environ.get('TESTCOMMON_PASS_SKIPS')
+        if pass_skips in [None, 0, '0']:
+            # skip=1 means skip this function when showing where this
+            # result came from.  They only care about the line where the
+            # script called test.skip_test(), not the line number where
+            # we call test.no_result().
+            self.no_result(skip=1)
+        else:
+            # We're under the development directory for this change,
+            # so this is an Aegis invocation; pass the test (exit 0).
+            self.pass_test()

File QMTest/TestRuntest.py

View file
  • Ignore whitespace
         os.environ['PYTHONPATH'] = ''
         os.environ['SCONS_SOURCE_PATH_EXECUTABLE'] = ''
 
-    def skip_test(self, message="Skipping test.\n"):
-        """Skips a test.
-
-        Proper test-skipping behavior is dependent on whether we're being
-        executed as part of development of a change under Aegis.
-
-        Technically, skipping a test is a NO RESULT, but Aegis will
-        treat that as a test failure and prevent the change from going
-        to the next step.  We don't want to force anyone using Aegis
-        to have to install absolutely every tool used by the tests,
-        so we actually report to Aegis that a skipped test has PASSED
-        so that the workflow isn't held up.
-        """
-        if message:
-            sys.stdout.write(message)
-            sys.stdout.flush()
-        devdir = os.popen("aesub '$dd' 2>/dev/null", "r").read()[:-1]
-        intdir = os.popen("aesub '$intd' 2>/dev/null", "r").read()[:-1]
-        if devdir and self._cwd[:len(devdir)] == devdir or \
-           intdir and self._cwd[:len(intdir)] == intdir:
-            # We're under the development directory for this change,
-            # so this is an Aegis invocation; pass the test (exit 0).
-            self.pass_test()
-        else:
-            # skip=1 means skip this function when showing where this
-            # result came from.  They only care about the line where the
-            # script called test.skip_test(), not the line number where
-            # we call test.no_result().
-            self.no_result(skip=1)
-
     def write_fake_scons_source_tree(self):
         os.mkdir('src')
         os.mkdir('src/script')

File QMTest/TestSCons.py

View file
  • Ignore whitespace
 
 # Some tests which verify that SCons has been packaged properly need to
 # look for specific version file names.  Replicating the version number
-# here provides independent verification that what we packaged conforms
-# to what we expect.  (If we derived the version number from the same
-# data driving the build we might miss errors if the logic breaks.)
+# here provides some independent verification that what we packaged
+# conforms to what we expect.
 
-SConsVersion = '0.97'
+default_version = '0.97.0'
+
+SConsVersion = '__VERSION__'
+if SConsVersion == '__' + 'VERSION' + '__':
+    SConsVersion = default_version
 
 __all__.extend([ 'TestSCons',
+                 'machine',
                  'python',
                  '_exe',
                  '_obj',
                  '_dll'
                ])
 
+machine_map = {
+    'i686'  : 'i386',
+    'i586'  : 'i386',
+    'i486'  : 'i386',
+}
+
+try:
+    uname = os.uname
+except AttributeError:
+    # Windows doesn't have a uname() function.  We could use something like
+    # sys.platform as a fallback, but that's not really a "machine," so
+    # just leave it as None.
+    machine = None
+else:
+    machine = uname()[4]
+    machine = machine_map.get(machine, machine)
+
 python = python_executable
 _python_ = '"' + python_executable + '"'
 _exe = exe_suffix
     for l in stderr.readlines():
         list = string.split(l)
         if len(list) > 3 and list[:2] == ['gcc', 'version']:
-            if list[2][:2] == '3.':
+            if list[2][:2] in ('3.', '4.'):
                 libs = ['frtbegin'] + libs
                 break
     return libs
             kw['workdir'] = ''
         apply(TestCommon.__init__, [self], kw)
 
+        import SCons.Node.FS
+        if SCons.Node.FS.default_fs is None:
+            SCons.Node.FS.default_fs = SCons.Node.FS.FS()
+
     def Environment(self, ENV=None, *args, **kw):
         """
         Return a construction Environment that optionally overrides
         kw['match'] = self.match_re_dotall
         apply(self.run, [], kw)
 
-    def skip_test(self, message="Skipping test.\n"):
-        """Skips a test.
-
-        Proper test-skipping behavior is dependent on whether we're being
-        executed as part of development of a change under Aegis.
-
-        Technically, skipping a test is a NO RESULT, but Aegis will
-        treat that as a test failure and prevent the change from going
-        to the next step.  We don't want to force anyone using Aegis
-        to have to install absolutely every tool used by the tests,
-        so we actually report to Aegis that a skipped test has PASSED
-        so that the workflow isn't held up.
-        """
-        if message:
-            sys.stdout.write(message)
-            sys.stdout.flush()
-        devdir = os.popen("aesub '$dd' 2>/dev/null", "r").read()[:-1]
-        intdir = os.popen("aesub '$intd' 2>/dev/null", "r").read()[:-1]
-        if devdir and self._cwd[:len(devdir)] == devdir or \
-           intdir and self._cwd[:len(intdir)] == intdir:
-            # We're under the development directory for this change,
-            # so this is an Aegis invocation; pass the test (exit 0).
-            self.pass_test()
-        else:
-            # skip=1 means skip this function when showing where this
-            # result came from.  They only care about the line where the
-            # script called test.skip_test(), not the line number where
-            # we call test.no_result().
-            self.no_result(skip=1)
-
-    def diff_substr(self, expect, actual):
+    def diff_substr(self, expect, actual, prelen=20, postlen=40):
         i = 0
         for x, y in zip(expect, actual):
             if x != y:
                 return "Actual did not match expect at char %d:\n" \
                        "    Expect:  %s\n" \
                        "    Actual:  %s\n" \
-                       % (i, repr(expect[i-20:i+40]), repr(actual[i-20:i+40]))
+                       % (i, repr(expect[i-prelen:i+postlen]),
+                             repr(actual[i-prelen:i+postlen]))
             i = i + 1
         return "Actual matched the expected output???"
 
         x = string.replace(x, 'line 1,', 'line %s,' % line)
         return x
 
+    def normalize_pdf(self, s):
+        s = re.sub(r'/CreationDate \(D:[^)]*\)',
+                   r'/CreationDate (D:XXXX)', s)
+        s = re.sub(r'/ID \[<[0-9a-fA-F]*> <[0-9a-fA-F]*>\]',
+                   r'/ID [<XXXX> <XXXX>]', s)
+        s = re.sub(r'/(BaseFont|FontName) /[A-Z]{6}',
+                   r'/\1 /XXXXXX', s)
+        s = re.sub(r'/Length \d+ *\n/Filter /FlateDecode\n',
+                   r'/Length XXXX\n/Filter /FlateDecode\n', s)
+
+
+        try:
+            import zlib
+        except ImportError:
+            pass
+        else:
+            begin_marker = '/FlateDecode\n>>\nstream\n'
+            end_marker = 'endstream\nendobj'
+
+            encoded = []
+            b = string.find(s, begin_marker, 0)
+            while b != -1:
+                b = b + len(begin_marker)
+                e = string.find(s, end_marker, b)
+                encoded.append((b, e))
+                b = string.find(s, begin_marker, e + len(end_marker))
+
+            x = 0
+            r = []
+            for b, e in encoded:
+                r.append(s[x:b])
+                d = zlib.decompress(s[b:e])
+                d = re.sub(r'%%CreationDate: [^\n]*\n',
+                           r'%%CreationDate: 1970 Jan 01 00:00:00\n', d)
+                d = re.sub(r'%DVIPSSource:  TeX output \d\d\d\d\.\d\d\.\d\d:\d\d\d\d',
+                           r'%DVIPSSource:  TeX output 1970.01.01:0000', d)
+                d = re.sub(r'/(BaseFont|FontName) /[A-Z]{6}',
+                           r'/\1 /XXXXXX', d)
+                r.append(d)
+                x = e
+            r.append(s[x:])
+            s = string.join(r, '')
+
+        return s
+
     def java_ENV(self):
         """
         Return a default external environment that uses a local Java SDK
     else: opt_string = opt_string + ' ' + opt
 for a in args:
     contents = open(a, 'rb').read()
+    a = string.replace(a, '\\\\', '\\\\\\\\')
     subst = r'{ my_qt_symbol( "' + a + '\\\\n" ); }'
     if impl:
         contents = re.sub( r'#include.*', '', contents )
 
         self.write([dir, 'lib', 'SConstruct'], r"""
 env = Environment()
-env.SharedLibrary( 'myqt', 'my_qobject.cpp' )
+import sys
+if sys.platform == 'win32':
+    env.StaticLibrary( 'myqt', 'my_qobject.cpp' )
+else:
+    env.SharedLibrary( 'myqt', 'my_qobject.cpp' )
 """)
 
         self.run(chdir = self.workpath(dir, 'lib'),
                 print "-----------------------------------------------------"
                 self.fail_test()
 
+    def get_python_version(self):
+        """
+        Returns the Python version (just so everyone doesn't have to
+        hand-code slicing the right number of characters).
+        """
+        # see also sys.prefix documentation
+        return sys.version[:3]
+
+    def get_platform_python(self):
+        """
+        Returns a path to a Python executable suitable for testing on
+        this platform.
+
+        Mac OS X has no static libpython for SWIG to link against,
+        so we have to link against Apple's framwork version.  However,
+        testing must use the executable version that corresponds to the
+        framework we link against, or else we get interpreter errors.
+        """
+        if sys.platform == 'darwin':
+            return '/System/Library/Frameworks/Python.framework/Versions/Current/bin/python'
+        else:
+            global python
+            return python
+
+    def get_quoted_platform_python(self):
+        """
+        Returns a quoted path to a Python executable suitable for testing on
+        this platform.
+
+        Mac OS X has no static libpython for SWIG to link against,
+        so we have to link against Apple's framwork version.  However,
+        testing must use the executable version that corresponds to the
+        framework we link against, or else we get interpreter errors.
+        """
+        if sys.platform == 'darwin':
+            return '"' + self.get_platform_python() + '"'
+        else:
+            global _python_
+            return _python_
+
+    def get_platform_sys_prefix(self):
+        """
+        Returns a "sys.prefix" value suitable for linking on this platform.
+
+        Mac OS X has a built-in Python but no static libpython,
+        so we must link to it using Apple's 'framework' scheme.
+        """
+        if sys.platform == 'darwin':
+            fmt = '/System/Library/Frameworks/Python.framework/Versions/%s/'
+            return fmt % self.get_python_version()
+        else:
+            return sys.prefix
+
+    def get_python_frameworks_flags(self):
+        """
+        Returns a FRAMEWORKSFLAGS value for linking with Python.
+
+        Mac OS X has a built-in Python but no static libpython,
+        so we must link to it using Apple's 'framework' scheme.
+        """
+        if sys.platform == 'darwin':
+            return '-framework Python'
+        else:
+            return ''
+
+    def get_python_inc(self):
+        """
+        Returns a path to the Python include directory.
+        """
+        try:
+            import distutils.sysconfig
+        except ImportError:
+            return os.path.join(self.get_platform_sys_prefix(),
+                                'include',
+                                'python' + self.get_python_version())
+        else:
+            return distutils.sysconfig.get_python_inc()
+
 # In some environments, $AR will generate a warning message to stderr
 # if the library doesn't previously exist and is being created.  One
 # way to fix this is to tell AR to be quiet (sometimes the 'c' flag),

File QMTest/TestSCons_time.py

View file
  • Ignore whitespace
 
         apply(TestCommon.__init__, [self], kw)
 
+        # Now that the testing object has been set up, check if we should
+        # skip the test due to the Python version.  We need to be able to
+        # import __future__ (which scons-time.py uses for nested scopes)
+        # and to handle list comprehensions (just because we're avoiding
+        # the old map() and filter() idioms).
+
+        try:
+            import __future__
+        except ImportError:
+            version = string.split(sys.version)[0]
+            msg = 'scons-time does not work on Python version %s\n' % version
+            self.skip_test(msg)
+
         try:
             eval('[x for x in [1, 2]]')
         except SyntaxError:
         self.write(python_name, profile_py % d)
         self.run(program = python_name, interpreter = sys.executable)
 
-    def skip_test(self, message="Skipping test.\n"):
-        """Skips a test.
-
-        Proper test-skipping behavior is dependent on whether we're being
-        executed as part of development of a change under Aegis.
-
-        Technically, skipping a test is a NO RESULT, but Aegis will
-        treat that as a test failure and prevent the change from going
-        to the next step.  We don't want to force anyone using Aegis
-        to have to install absolutely every tool used by the tests,
-        so we actually report to Aegis that a skipped test has PASSED
-        so that the workflow isn't held up.
-        """
-        if message:
-            sys.stdout.write(message)
-            sys.stdout.flush()
-        devdir = os.popen("aesub '$dd' 2>/dev/null", "r").read()[:-1]
-        intdir = os.popen("aesub '$intd' 2>/dev/null", "r").read()[:-1]
-        if devdir and self._cwd[:len(devdir)] == devdir or \
-           intdir and self._cwd[:len(intdir)] == intdir:
-            # We're under the development directory for this change,
-            # so this is an Aegis invocation; pass the test (exit 0).
-            self.pass_test()
-        else:
-            # skip=1 means skip this function when showing where this
-            # result came from.  They only care about the line where the
-            # script called test.skip_test(), not the line number where
-            # we call test.no_result().
-            self.no_result(skip=1)
-
     def write_fake_aegis_py(self, name):
         name = self.workpath(name)
         self.write(name, aegis_py)

File QMTest/scons_tdb.py

View file
  • Ignore whitespace
         and fails otherwise. The program output is logged, but not validated."""
 
         command = RedirectedExecutable()
-        args = [context.get('python', sys.executable), self.script]
+        args = [context.get('python', sys.executable), '-tt', self.script]
         status = command.Run(args, os.environ)
         if not check_exit_status(result, 'Test.', self.script, status):
             # In case of failure record exit code, stdout, and stderr.

File README

View file
  • Ignore whitespace
                 of lines in each
             --  a script for synchronizing the Aegis tree to SourceForge
             --  a prototype script for capturing sample SCons output
-                in sgml files
+                in xml files
             --  a script that can profile and time a packaging build of
                 SCons itself
             --  a copy of xml_export, which can retrieve project data

File SConstruct

View file
  • Ignore whitespace
 #
 
 import distutils.util
+import fnmatch
 import os
 import os.path
 import re
-import socket
 import stat
 import string
 import sys
-import time
 
 project = 'scons'
-default_version = '0.97'
+default_version = '0.97.0'
 copyright = "Copyright (c) %s The SCons Foundation" % copyright_years
 
 SConsignFile()
     return None
 
 #
-# We let the presence or absence of various utilities determine
-# whether or not we bother to build certain pieces of things.
-# This should allow people to still do SCons work even if they
-# don't have Aegis or RPM installed, for example.
+# We let the presence or absence of various utilities determine whether
+# or not we bother to build certain pieces of things.  This should allow
+# people to still do SCons packaging work even if they don't have all
+# of the utilities installed (e.g. RPM).
 #
-aegis = whereis('aegis')
-aesub = whereis('aesub')
 dh_builddeb = whereis('dh_builddeb')
 fakeroot = whereis('fakeroot')
 gzip = whereis('gzip')
 rpmbuild = whereis('rpmbuild') or whereis('rpm')
+svn = whereis('svn')
 unzip = whereis('unzip')
 zip = whereis('zip')
 
 #
 # Now grab the information that we "build" into the files.
 #
-try:
-    date = ARGUMENTS['date']
-except:
+date = ARGUMENTS.get('DATE')
+if not date:
+    import time
     date = time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(time.time()))
 
-if ARGUMENTS.has_key('developer'):
-    developer = ARGUMENTS['developer']
-elif os.environ.has_key('USERNAME'):
-    developer = os.environ['USERNAME']
-elif os.environ.has_key('LOGNAME'):
-    developer = os.environ['LOGNAME']
-elif os.environ.has_key('USER'):
-    developer = os.environ['USER']
+developer = ARGUMENTS.get('DEVELOPER')
+if not developer:
+    for variable in ['USERNAME', 'LOGNAME', 'USER']:
+        developer = os.environ.get(variable)
+        if developer:
+            break
 
-if ARGUMENTS.has_key('build_system'):
-    build_system = ARGUMENTS['build_system']
-else:
+build_system = ARGUMENTS.get('BUILD_SYSTEM')
+if not build_system:
+    import socket
     build_system = string.split(socket.gethostname(), '.')[0]
 
-if ARGUMENTS.has_key('version'):
-    revision = ARGUMENTS['version']
-elif aesub:
-    revision = os.popen(aesub + " \\$version", "r").read()[:-1]
+version = ARGUMENTS.get('VERSION', '')
+if not version:
+    version = default_version
+
+revision = ARGUMENTS.get('REVISION', '')
+if not revision and svn:
+    svn_info = os.popen("%s info 2> /dev/null" % svn, "r").read()
+    m = re.search('Revision: (\d+)', svn_info)
+    if m:
+        revision = m.group(1)
+
+checkpoint = ARGUMENTS.get('CHECKPOINT', '')
+if checkpoint:
+    if checkpoint == 'd':
+        import time
+        checkpoint = time.strftime('d%Y%m%d', time.localtime(time.time()))
+    elif checkpoint == 'r':
+        checkpoint = 'r' + revision
+    version = version + checkpoint
+
+if svn:
+    svn_status = os.popen("%s status --verbose 2> /dev/null" % svn, "r").read()
+    svn_status_lines = svn_status[:-1].split('\n')
 else:
-    revision = default_version
+    svn_status_lines = []
 
-# This is old code that adds an initial "0" to revision numbers < 10.
-#a = string.split(revision, '.')
-#arr = [a[0]]
-#for s in a[1:]:
-#    if len(s) == 1:
-#        s = '0' + s
-#    arr.append(s)
-#revision = string.join(arr, '.')
-
-# Here's how we'd turn the calculated $revision into our package $version.
-# This makes it difficult to coordinate with other files (debian/changelog
-# and rpm/scons.spec) that hard-code the version number, so just go with
-# the flow for now and hard code it here, too.
-#if len(arr) >= 2:
-#    arr = arr[:-1]
-#def xxx(str):
-#    if str[0] == 'C' or str[0] == 'D':
-#        str = str[1:]
-#    while len(str) > 2 and str[0] == '0':
-#        str = str[1:]
-#    return str
-#arr = map(lambda x, xxx=xxx: xxx(x), arr)
-#version = string.join(arr, '.')
-version = default_version
-
-build_id = string.replace(revision, version + '.', '')
-
-if ARGUMENTS.has_key('change'):
-    change = ARGUMENTS['change']
-elif aesub:
-    change = os.popen(aesub + " \\$change", "r").read()[:-1]
-else:
-    change = default_version
+build_id = ARGUMENTS.get('BUILD_ID')
+if build_id is None:
+    if revision:
+        build_id = 'r' + revision
+        if filter(lambda l: l[0] in 'ACDMR', svn_status_lines):
+            build_id = build_id + '[MODIFIED]'
+    else:
+        build_id = ''
 
 python_ver = sys.version[0:3]
 
 platform = distutils.util.get_platform()
 
 ENV = { 'PATH' : os.environ['PATH'] }
-for key in ['AEGIS_PROJECT', 'LOGNAME', 'PYTHONPATH']:
+for key in ['LOGNAME', 'PYTHONPATH']:
     if os.environ.has_key(key):
         ENV[key] = os.environ[key]
 
 if not os.path.isabs(build_dir):
     build_dir = os.path.normpath(os.path.join(os.getcwd(), build_dir))
 
+command_line_variables = [
+    ("BUILDDIR=",       "The directory in which to build the packages.  " +
+                        "The default is the './build' subdirectory."),
+
+    ("BUILD_ID=",       "An identifier for the specific build." +
+                        "The default is the Subversion revision number."),
+
+    ("BUILD_SYSTEM=",   "The system on which the packages were built.  " +
+                        "The default is whatever hostname is returned " +
+                        "by socket.gethostname()."),
+
+    ("CHECKPOINT=",     "The specific checkpoint release being packaged.  " +
+                        "This will be appended to the VERSION string.  " +
+                        "A value of CHECKPOINT=d will generate a string " +
+                        "of 'd' plus today's date in the format YYYMMDD." +
+                        "A value of CHECKPOINT=r will generate a " +
+                        "string of 'r' plus the Subversion revision number.  " +
+                        "Any other CHECKPOINT= string will be used as is." +
+                        "There is no default value."),
+
+    ("DATE=",           "The date string representing when the packaging " +
+                        "build occurred.  The default is the day and time " +
+                        "the SConstruct file was invoked, in the format " +
+                        "YYYY/MM/DD HH:MM:SS."),
+
+    ("DEVELOPER=",      "The developer who created the packages.  " +
+                        "The default is the first set environment " +
+                        "variable from the list $USERNAME, $LOGNAME, $USER."),
+
+    ("REVISION=",       "The revision number of the source being built.  " +
+                        "The default is the Subversion revision returned " +
+                        "'svn info', with an appended string of " +
+                        "'[MODIFIED]' if there are any changes in the " +
+                        "working copy."),
+
+    ("VERSION=",        "The SCons version being packaged.  The default " +
+                        "is the hard-coded value '%s' " % default_version +
+                        "from this SConstruct file."),
+]
+
 Default('.', build_dir)
 
 packaging_flavors = [
-    'deb',
-    'rpm',
-    'tar-gz',
-    'src-tar-gz',
-    'local-tar-gz',
-    'zip',
-    'src-zip',
-    'local-zip',
+    ('deb',             "A .deb package.  (This is currently not supported.)"),
+
+    ('rpm',             "A RedHat Package Manager file."),
+
+    ('tar-gz',          "The normal .tar.gz file for end-user installation."),
+
+    ('src-tar-gz',      "A .tar.gz file containing all the source " +
+                        "(including tests and documentation)."),
+
+    ('local-tar-gz',    "A .tar.gz file for dropping into other software " +
+                        "for local use."),
+
+    ('zip',             "The normal .zip file for end-user installation."),
+
+    ('src-zip',         "A .zip file containing all the source " +
+                        "(including tests and documentation)."),
+
+    ('local-zip',       "A .zip file for dropping into other software " +
+                        "for local use."),
 ]
 
 test_deb_dir          = os.path.join(build_dir, "test-deb")
     project_script_subinst_dir = 'bin'
 
 
+
+import textwrap
+
+indent_fmt = '  %-26s  '
+
+Help("""
+The following aliases build packages of various types, and unpack the
+contents into build/test-$PACKAGE subdirectories, which can be used by the
+runtest.py -p option to run tests against what's been actually packaged:
+
+""")
+
+aliases = packaging_flavors + [('doc', 'The SCons documentation.')]
+aliases.sort()
+
+for alias, help_text in aliases:
+    tw = textwrap.TextWrapper(
+        width = 78,
+        initial_indent = indent_fmt % alias,
+        subsequent_indent = indent_fmt % '' + '  ',
+    )
+    Help(tw.fill(help_text) + '\n')
+
+Help("""
+The following command-line variables can be set:
+
+""")
+
+for variable, help_text in command_line_variables:
+    tw = textwrap.TextWrapper(
+        width = 78,
+        initial_indent = indent_fmt % variable,
+        subsequent_indent = indent_fmt % '' + '  ',
+    )
+    Help(tw.fill(help_text) + '\n')
+
+
+
 zcat = 'gzip -d -c'
 
 #
                    COPYRIGHT           = copyright,
                    DATE                = date,
                    DEVELOPER           = developer,
+                   DISTDIR             = os.path.join(build_dir, 'dist'),
                    MONTH_YEAR          = month_year,
                    REVISION            = revision,
                    VERSION             = version,
                    BUILDERS            = { 'SCons_revision' : revbuilder,
                                            'SOElim' : soelimbuilder },
 
-                   PYTHON              = sys.executable,
+                   PYTHON              = '"%s"' % sys.executable,
                    PYTHONFLAGS         = '-tt',
                  )
 
 
         'buildermap'    : {},
 
+        'extra_rpm_files' : [],
+
         'explicit_deps' : {
                             'SCons/__init__.py' : Version_values,
                           },
 }
 
+# The RPM spec file we generate will just execute "python", not
+# necessarily the one in sys.executable.  If that version of python has
+# a distutils that knows about Python eggs, then setup.py will generate
+# a .egg-info file.  Check for whether or not to add it to the expected
+# RPM files by executing "python" in a subshell.
+
+cmd = "python -c 'import distutils.command.install_egg_info' > /dev/null 2>&1"
+import_egg_error = os.system(cmd)
+
+if not import_egg_error:
+    egg_info_file = 'scons-' + version + '.egg-info'
+    python_scons['extra_rpm_files'].append(egg_info_file)
+
 #
 # The original packaging scheme would have have required us to push
 # the Python version number into the package name (python1.5-scons,
     setup_py = os.path.join(build, 'setup.py')
     env.Replace(PKG = pkg,
                 PKG_VERSION = pkg_version,
-                SETUP_PY = setup_py)
+                SETUP_PY = '"%s"' % setup_py)
     Local(setup_py)
 
     #
 
     distutils_targets = [ win32_exe ]
 
-    install_targets = distutils_targets[:]
+    Local(env.Install('$DISTDIR', distutils_targets))
 
     if gzip:
 
         src_deps.append(tar_gz)
 
         distutils_targets.extend([ tar_gz, platform_tar_gz ])
-        install_targets.extend([ tar_gz, platform_tar_gz ])
+
+        dist_tar_gz             = env.Install('$DISTDIR', tar_gz)
+        dist_platform_tar_gz    = env.Install('$DISTDIR', platform_tar_gz)
+        Local(dist_tar_gz, dist_platform_tar_gz)
 
         #
         # Unpack the tar.gz archive created by the distutils into
         unpack_tar_gz_files = map(lambda x, u=unpack_tar_gz_dir, pv=pkg_version:
                                          os.path.join(u, pv, x),
                                   src_files)
-        env.Command(unpack_tar_gz_files, tar_gz, [
+        env.Command(unpack_tar_gz_files, dist_tar_gz, [
                     Delete(os.path.join(unpack_tar_gz_dir, pkg_version)),
                     "$ZCAT $SOURCES > .temp",
                     "tar xf .temp -C $UNPACK_TAR_GZ_DIR",
         src_deps.append(zip)
 
         distutils_targets.extend([ zip, platform_zip ])
-        install_targets.extend([ zip, platform_zip ])
+
+        dist_zip            = env.Install('$DISTDIR', zip)
+        dist_platform_zip   = env.Install('$DISTDIR', platform_zip)
+        Local(dist_zip, dist_platform_zip)
 
         #
         # Unpack the zip archive created by the distutils into
                                       os.path.join(u, pv, x),
                                src_files)
 
-        env.Command(unpack_zip_files, zip, [
+        env.Command(unpack_zip_files, dist_zip, [
             Delete(os.path.join(unpack_zip_dir, pkg_version)),
             unzipit,
         ])
                 os.path.join(unpack_zip_dir, pkg_version, 'setup.py'),
         ])
 
-    if rpmbuild:
+    if not rpmbuild:
+        msg = "@echo \"Warning:  Can not build 'rpm':  no rpmbuild utility found\""
+        AlwaysBuild(Alias('rpm', [], msg))
+    else:
         topdir = os.path.join(build, 'build',
                               'bdist.' + platform, 'rpm')
 
             maintain multiple lists.
             """
             c = open(str(source[0]), 'rb').read()
-            c = string.replace(c, '__RPM_FILES__', env['RPM_FILES'])
+            c = string.replace(c, '__VERSION' + '__', env['VERSION'])
+            c = string.replace(c, '__RPM_FILES' + '__', env['RPM_FILES'])
             open(str(target[0]), 'wb').write(c)
 
         rpm_files.sort()
         cmd = "$RPMBUILD --define '_topdir $(%s$)' --buildroot %s -ba $SOURCES" % (topdir, buildroot)
         if not os.path.isdir(BUILDdir):
             cmd = ("$( mkdir -p %s; $)" % BUILDdir) + cmd
-        env.Command(targets, specfile, cmd)
-        env.Depends(targets, sourcefile)
+        t = env.Command(targets, specfile, cmd)
+        env.Depends(t, sourcefile)
 
-        install_targets.extend(targets)
+        dist_noarch_rpm = env.Install('$DISTDIR', noarch_rpm)
+        dist_src_rpm    = env.Install('$DISTDIR', src_rpm)
+        Local(dist_noarch_rpm, dist_src_rpm)
 
         dfiles = map(lambda x, d=test_rpm_dir: os.path.join(d, 'usr', x),
                      dst_files)
         env.Command(dfiles,
-                    noarch_rpm,
+                    dist_noarch_rpm,
                     "$RPM2CPIO $SOURCES | (cd $TEST_RPM_DIR && cpio -id)")
 
     if dh_builddeb and fakeroot:
         # Our Debian packaging builds directly into build/dist,
-        # so we don't need to add the .debs to install_targets.
+        # so we don't need to Install() the .debs.
         deb = os.path.join(build_dir, 'dist', "%s_%s-1_all.deb" % (pkg, version))
         for d in p['debian_deps']:
             b = env.SCons_revision(os.path.join(build, d), d)
     build_dir_local = os.path.join(build_dir, local)
     build_dir_local_slv = os.path.join(build_dir, local, s_l_v)
 
-    local_tar_gz = os.path.join(build_dir, 'dist', "%s.tar.gz" % s_l_v)
-    local_zip = os.path.join(build_dir, 'dist', "%s.zip" % s_l_v)
+    dist_local_tar_gz = os.path.join("$DISTDIR/%s.tar.gz" % s_l_v)
+    dist_local_zip = os.path.join("$DISTDIR/%s.zip" % s_l_v)
 
     commands = [
         Delete(build_dir_local),
     Local(l)
 
     if gzip:
-        env.Command(local_tar_gz,
+        env.Command(dist_local_tar_gz,
                     local_targets,
                     "cd %s && tar czf $( ${TARGET.abspath} $) *" % build_dir_local)
 
                     Mkdir(test_local_tar_gz_dir),
                     "cd %s && tar xzf $( ${SOURCE.abspath} $)" % test_local_tar_gz_dir]
 
-        env.Command(unpack_targets, local_tar_gz, commands)
+        env.Command(unpack_targets, dist_local_tar_gz, commands)
 
     if zipit:
-        env.Command(local_zip, local_targets, zipit,
+        env.Command(dist_local_zip, local_targets, zipit,
                     CD = build_dir_local, PSV = '.')
 
         unpack_targets = map(lambda x, d=test_local_zip_dir:
                     Mkdir(test_local_zip_dir),
                     unzipit]
 
-        env.Command(unpack_targets, local_zip, unzipit,
+        env.Command(unpack_targets, dist_local_zip, unzipit,
                     UNPACK_ZIP_DIR = test_local_zip_dir)
 
-    #
-    # And, lastly, install the appropriate packages in the
-    # appropriate subdirectory.
-    #
-    b_d_files = env.Install(os.path.join(build_dir, 'dist'), install_targets)
-    Local(b_d_files)
-
 #
 #
 #
 SConscript('doc/SConscript')
 
 #
-# If we're running in the actual Aegis project, pack up a complete
-# source archive from the project files and files in the change,
-# so we can share it with helpful developers who don't use Aegis.
+# If we're running in a Subversion working directory, pack up a complete
+# source archive from the project files and files in the change.
 #
 
-if change:
-    df = []
-    cmd = "aegis -list -unf -c %s cf 2>/dev/null" % change
-    for line in map(lambda x: x[:-1], os.popen(cmd, "r").readlines()):
-        a = string.split(line)
-        if a[1] == "remove":
-            df.append(a[-1])
+if svn_status:
+    slines = filter(lambda l: l[0] in ' MA', svn_status_lines)
+    sentries = map(lambda l: l.split()[-1], slines)
+    sfiles = filter(os.path.isfile, sentries)
 
-    cmd = "aegis -list -terse pf 2>/dev/null"
-    pf = map(lambda x: x[:-1], os.popen(cmd, "r").readlines())
-    cmd = "aegis -list -terse -c %s cf 2>/dev/null" % change
-    cf = map(lambda x: x[:-1], os.popen(cmd, "r").readlines())
-    u = {}
-    for f in pf + cf:
-        u[f] = 1
-    for f in df:
-        try:
-            del u[f]
-        except KeyError:
-            pass
-    sfiles = filter(lambda x: x[-9:] != '.aeignore' and
-                              x[-9:] != '.sconsign' and
-                              x[-10:] != '.cvsignore',
-                    u.keys())
+    remove_patterns = [
+        '.svnt/*',
+        '*.aeignore',
+        '*.cvsignore',
+        'www/*',
+    ]
+
+    for p in remove_patterns:
+        sfiles = filter(lambda s, p=p: not fnmatch.fnmatch(s, p), sfiles)
 
     if sfiles:
         ps = "%s-src" % project
                                     'scons',
                                     'build')),
                 Delete("$TEST_SRC_TAR_GZ_DIR"),
-                'cd "%s" && $PYTHON $PYTHONFLAGS "%s" "%s"' % \
+                'cd "%s" && $PYTHON $PYTHONFLAGS "%s" "%s" VERSION="$VERSION"' % \
                     (os.path.join(unpack_tar_gz_dir, psv),
                      os.path.join('src', 'script', 'scons.py'),
                      os.path.join('build', 'scons')),
                                     'scons',
                                     'build')),
                 Delete("$TEST_SRC_ZIP_DIR"),
-                'cd "%s" && $PYTHON $PYTHONFLAGS "%s" "%s"' % \
+                'cd "%s" && $PYTHON $PYTHONFLAGS "%s" "%s" VERSION="$VERSION"' % \
                     (os.path.join(unpack_zip_dir, psv),
                      os.path.join('src', 'script', 'scons.py'),
                      os.path.join('build', 'scons')),
                 ],
                 ENV = ENV)
 
-for pf in packaging_flavors:
-    Alias(pf, ['build/test-'+pf, 'build/QMTest', 'build/runtest.py'])
+for pf, help_text in packaging_flavors:
+    Alias(pf, [
+        os.path.join(build_dir, 'test-'+pf),
+        os.path.join(build_dir, 'QMTest'),
+        os.path.join(build_dir, 'runtest.py'),
+    ])

File bin/docdiff

View file
  • Ignore whitespace
 
 if test $# -eq 0; then
     for f in doc/user/*.in; do
-        sgml=doc/user/`basename $f .in`.sgml
+        xml=doc/user/`basename $f .in`.xml
         echo $f:
-        python bin/sconsoutput.py $f | diff $DIFFFLAGS $sgml -
+        python bin/sconsoutput.py $f | diff $DIFFFLAGS $xml -
     done
 else
     for a in $*; do
         f=doc/user/$a.in
-        sgml=doc/user/$a.sgml
+        xml=doc/user/$a.xml
         echo $f:
-        python bin/sconsoutput.py $f | diff $DIFFFLAGS $sgml -
+        python bin/sconsoutput.py $f | diff $DIFFFLAGS $xml -
     done
 fi

File bin/docrun

View file
  • Ignore whitespace
 
 if test $# -eq 0; then
     for f in doc/user/*.in; do
-        sgml=doc/user/`basename $f .in`.sgml
+        xml=doc/user/`basename $f .in`.xml
         echo $f:
         python bin/sconsoutput.py $f
     done