Merged revisions 2725-2865 via svnmerge from
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 17 Apr 2008 06:35:51 +0000 (06:35 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 17 Apr 2008 06:35:51 +0000 (06:35 +0000)
commit46da15e7343ccb3b81fd9fb9d4f7558d14f117c8
tree340da0ff0ef5002982fcfd5ee2a2a5e34a4bf5e0
parent047efda8553e1b6d20fa407e8b9d577d527143a7
Merged revisions 2725-2865 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
  r2731 | stevenknight | 2008-04-01 09:22:37 -0700 (Tue, 01 Apr 2008) | 4 lines

  Fix test/Interactive/version.py, which still had the old hard-coded
  Copyright string, by moving the test copy of the Copyright string
  into QMTest/TestSCons.py, where it's available to all test scripts.
........
  r2732 | stevenknight | 2008-04-02 13:28:32 -0700 (Wed, 02 Apr 2008) | 3 lines

  Issues 317, 323, 329:  Ignore the -d, -e and -w options, which we're
  not going to implement.
........
  r2734 | stevenknight | 2008-04-05 07:50:49 -0700 (Sat, 05 Apr 2008) | 2 lines

  Fix bootstrap.py for pre-2.3 versions of Python, which don't have __file__.
........
  r2735 | stevenknight | 2008-04-05 07:54:44 -0700 (Sat, 05 Apr 2008) | 2 lines

  Fix the non-breaking-hyphen regular expression(s) for Python 1.5.
........
  r2736 | garyo | 2008-04-05 19:15:52 -0700 (Sat, 05 Apr 2008) | 1 line

  Added Users Guide section for AddMethod.
........
  r2737 | stevenknight | 2008-04-08 09:43:31 -0700 (Tue, 08 Apr 2008) | 3 lines

  Don't raise strings as exceptions in the exception-handling unit tests.
  That's now deprecated Python behavior.
........
  r2738 | stevenknight | 2008-04-08 10:36:00 -0700 (Tue, 08 Apr 2008) | 5 lines

  Address a serious inefficiency in Java builds by moving the pre-build
  check for whether source files exist from the Node class to the Executor
  class, so we only have to perform the check once when building a whole
  bunch of targets from a whole bunch of sources.
........
  r2739 | stevenknight | 2008-04-08 13:53:44 -0700 (Tue, 08 Apr 2008) | 2 lines

  Add a backwards-compatibility version of the "itertools" module.
........
  r2740 | stevenknight | 2008-04-08 14:12:05 -0700 (Tue, 08 Apr 2008) | 2 lines

  Issue 1961:  speed up SCons.Util.to_String*() functions.  (Benoit Belley)
........
  r2741 | stevenknight | 2008-04-08 14:15:36 -0700 (Tue, 08 Apr 2008) | 2 lines

  Use the itertools.izip() method for some key Node.FS methods.  (Benoit Belley)
........
  r2742 | stevenknight | 2008-04-08 14:35:35 -0700 (Tue, 08 Apr 2008) | 2 lines

  Issues 1961:  use izip() instead of zip() where possible (Benoit Belley)
........
  r2743 | stevenknight | 2008-04-08 14:48:08 -0700 (Tue, 08 Apr 2008) | 3 lines

  Issue 1961:  more efficient get_contents() implementation for Python
  function Actions.  (Benoit Belley)
........
  r2744 | stevenknight | 2008-04-08 17:55:30 -0700 (Tue, 08 Apr 2008) | 3 lines

  Issue 1961:  make SCons.Node.* state variables global in Taskmaster.py so
  we avoid unneceesary attribute fetches.  (Benoit Belley)
........
  r2745 | stevenknight | 2008-04-08 20:40:31 -0700 (Tue, 08 Apr 2008) | 2 lines

  Issue 1961:  Optimize the code in Node.get_binfo().  (Benoit Belley)
........
  r2746 | stevenknight | 2008-04-08 21:05:17 -0700 (Tue, 08 Apr 2008) | 3 lines

  Issue 1961:  Enhance the backwards-compatibility sets() module with the
  ability to compare sets.  (Benoit Belley)
........
  r2747 | stevenknight | 2008-04-08 22:11:20 -0700 (Tue, 08 Apr 2008) | 2 lines

  Issue 1961:  Optimize Executor.scan().  (Benoit Belley)
........
  r2748 | stevenknight | 2008-04-08 22:17:55 -0700 (Tue, 08 Apr 2008) | 3 lines

  Python 1.5 compatibility:  use for p in paths.keys() for dictionaries.
  (Benoit Belley)
........
  r2749 | stevenknight | 2008-04-08 22:54:02 -0700 (Tue, 08 Apr 2008) | 10 lines

  Issue 1961:  additional build optimizations:
  --  Make taskmastertrace output more useful and readable.
  --  Move dependency cycle checking to avoid re-doing it.
  --  Have Nodes use sets, not dictionaries, to track various things.
  --  Eliminate intermediate function calls from fetching Node children.
  --  Add a Task.needs_execute() method to avoid doing that check over and
      over as part of needs_execute().
  --  Remove the unused Node.found_includes attribute.
  (Benoit Belley)
........
  r2750 | stevenknight | 2008-04-09 14:47:44 -0700 (Wed, 09 Apr 2008) | 4 lines

  Make target Java .class files depend *only* on the input .java files as
  their sources when determining if they require rebuilding.  This eliminates
  O(NxM) checking for every single edge in a big, overly-connected DAG mesh.
........
  r2751 | stevenknight | 2008-04-09 16:58:41 -0700 (Wed, 09 Apr 2008) | 2 lines

  Remove 0.95 and 0.96* release notes.
........
  r2752 | stevenknight | 2008-04-10 02:24:50 -0700 (Thu, 10 Apr 2008) | 2 lines

  Issue 1956:  Fix --debug=stree printing its tree twice.  (Benoit Belley)
........
  r2753 | stevenknight | 2008-04-10 02:33:28 -0700 (Thu, 10 Apr 2008) | 2 lines

  Issue 1896:  Add support for the GDC D language compiler.  (Matthew Wesley)
........
  r2754 | stevenknight | 2008-04-10 02:39:24 -0700 (Thu, 10 Apr 2008) | 2 lines

  Fix tabs.
........
  r2755 | stevenknight | 2008-04-10 02:41:50 -0700 (Thu, 10 Apr 2008) | 3 lines

  Issue 1964:  Fix passing variable names in a list to Return() (as
  already documented in the man page!)  (Mike Wake)
........
  r2756 | stevenknight | 2008-04-10 02:55:40 -0700 (Thu, 10 Apr 2008) | 2 lines

  Support the ability to download 2.6 candidate releases (e.g. 2.6a2).
........
  r2757 | stevenknight | 2008-04-10 02:58:35 -0700 (Thu, 10 Apr 2008) | 3 lines

  Issue 1669:  Fix the ability to use LoadableModule() under MinGW.
  (Johan Boule)
........
  r2758 | stevenknight | 2008-04-10 03:03:15 -0700 (Thu, 10 Apr 2008) | 3 lines

  Update the test/Interactive/tree.py script for Benoit's fix to
  remove duplicate tree printing.
........
  r2759 | stevenknight | 2008-04-10 06:43:44 -0700 (Thu, 10 Apr 2008) | 3 lines

  Fix Tool/dmd.py when no D compiler is installed -- we don't want to
  search for a path if the result is None.
........
  r2760 | GregNoel | 2008-04-10 15:30:34 -0700 (Thu, 10 Apr 2008) | 1 line

  Issue 2009: separate Debug.caller() by functionality
........
  r2761 | stevenknight | 2008-04-11 04:47:25 -0700 (Fri, 11 Apr 2008) | 3 lines

  Issue 1882:  Add the scons.bat directory to %PATH% so it can find python.exe.
  (Anatoly Techtonik)
........
  r2762 | stevenknight | 2008-04-11 09:15:22 -0700 (Fri, 11 Apr 2008) | 4 lines

  Issues 1835,1901:  fix the ability to list a source file multiple
  times for a target by making sure we only store unique entries in the
  .sconsign file.
........
  r2763 | stevenknight | 2008-04-11 10:58:26 -0700 (Fri, 11 Apr 2008) | 4 lines

  Issue 1882:  Fix earlier patch to scons.bat by adding ~dp0;~dp0.. to
  the front of %PATH%, and only executing endlocal on NT-based systems.
  (Anatoly Techtonik)
........
  r2764 | stevenknight | 2008-04-11 13:06:29 -0700 (Fri, 11 Apr 2008) | 4 lines

  Add a Variables object and {Bool,Envum,List,Package,Path}Variable()
  functions as a first step towards eventually deprecating the
  Options object and {Bool,Envum,List,Package,Path}Option() functions.
........
  r2765 | stevenknight | 2008-04-11 18:13:53 -0700 (Fri, 11 Apr 2008) | 3 lines

  Issue 1962:  Capture a test case for ListActions that contain a
  command-line string containing unicode, and Python FunctionAction.
........
  r2766 | stevenknight | 2008-04-11 22:03:14 -0700 (Fri, 11 Apr 2008) | 3 lines

  Issue 1933:  expect .py files generated by the SWIG -python option
  to be in the same (sub)directory as the target.
........
  r2767 | stevenknight | 2008-04-12 06:41:57 -0700 (Sat, 12 Apr 2008) | 2 lines

  Remove the SCons.Options package in favor of the new SCons.Variables package.
........
  r2768 | stevenknight | 2008-04-12 13:33:52 -0700 (Sat, 12 Apr 2008) | 5 lines

  Issue 1971:  Move the incorporation of $CCFLAGS and $SHCCFLAGS directly
  into the C++ command lines (${SHCXX,CXX}COM) instead of through indirect
  expansion of $CXXFLAGS and $SHCXXFLAGS.  This requires removing -fPIC
  from the default setting of $SHCXXFLAGS under the GNU toolchain.
........
  r2769 | stevenknight | 2008-04-13 07:01:27 -0700 (Sun, 13 Apr 2008) | 3 lines

  Fix __all__ definitions in the Variables/*Variable.py file that were
  cause epydoc to blow up when generating developer documentation.
........
  r2770 | stevenknight | 2008-04-13 11:47:49 -0700 (Sun, 13 Apr 2008) | 3 lines

  Add variables= keyword argument to Environment() creation as a first
  step towards deprecating options=.
........
  r2771 | stevenknight | 2008-04-13 11:54:19 -0700 (Sun, 13 Apr 2008) | 2 lines

  Correct underscore-instead-of-hyphen misspellings in option names.
........
  r2772 | bdbaddog | 2008-04-13 17:39:21 -0700 (Sun, 13 Apr 2008) | 3 lines

  Changes to fix 15 tests which were failing on cygwin.
........
  r2773 | GregNoel | 2008-04-13 22:31:07 -0700 (Sun, 13 Apr 2008) | 1 line

  Various fixes to tests on Darwin using 1.5.2
........
  r2774 | stevenknight | 2008-04-14 15:00:44 -0700 (Mon, 14 Apr 2008) | 2 lines

  Python 1.5.2 fix in new test/SWIG/subdir.py script (use the -classic option).
........
  r2775 | belley | 2008-04-14 18:02:40 -0700 (Mon, 14 Apr 2008) | 32 lines

  Dont use KeyboardInterrupt to stop a build! [Issue 1907]

  SCons would often hang after pressing Ctrl-C. I started investigating and I
  realized that most of the Python libraries are not really safe with respect to
  asynchronous exceptions. Although,there are enough try/finally blocks to handle
  exceptions thrown synchronously by the library code, the Python libraries are
  not always protected against exceptions being thrown asynchronously, such as a
  KeyboardInterrupt being thrown at a completely random location.

  For example, the function Queue.empty() does not protect its mutex with a
  try/finally block. If the KeyboardInterrupt exception gets thrown while the
  mutex is held, any further attempt to access the Queue will lead to dead-lock
  (explaining why SCons hangs sometimes after pressing CTRL-C). Even the
  threading.Condition condition variables are not async-exception safe. It
  therefore seems a lost battle to try to stop a build by raising an exception.

  Instead, I have implemented a signal handler that tells the Jobs (and its
  associated Taskmaster) to stop the build. I have been careful to wait after the
  .sconsign file has been written back to re-install the default SIGINT signal
  handler that raises a KeyboardInterrupt exception.

  This patch is submitted against changeset 2773 of branches/core. The
  regression test suite has been run on RHEL4 using Pyhon 2.5.1 and
  1.5.2. My team has been using an SCons build with this patch for a
  while now on Windows, Linux and OSX.

  See:
  http://scons.tigris.org/issues/show_bug.cgi?id=1907

  Benoit Belley
........
  r2777 | cournape | 2008-04-14 20:11:56 -0700 (Mon, 14 Apr 2008) | 3 lines

  Initialized merge tracking via "svnmerge" with revisions "1-2776" from
  http://scons.tigris.org/svn/scons/branches/fortran_refactor
........
  r2788 | stevenknight | 2008-04-14 22:09:27 -0700 (Mon, 14 Apr 2008) | 2 lines

  Fix the print the "script" line in the --version output.
........
  r2789 | stevenknight | 2008-04-14 22:18:27 -0700 (Mon, 14 Apr 2008) | 2 lines

  Add a __COPYRIGHT__ line.
........
  r2790 | stevenknight | 2008-04-14 22:20:39 -0700 (Mon, 14 Apr 2008) | 3 lines

  Issue 2008:  in checkpoint releases, use a '.' to separate (e.g.) 0.98.0
  from 0d20080414.
........
  r2817 | belley | 2008-04-15 06:44:21 -0700 (Tue, 15 Apr 2008) | 13 lines

  TestSCons.up_to_date() should use match_re_dotall

  I changed TestSCons.up_to_date() to use match_re_dotall instead of
  match_exact. This is necessary so that I can call up_to_date() with
  the TestSCons.deprecated_python_expr error message in one of my test.

  Note that TestSCons.not_up_to_date() is already using match_re_dotall.

  Ran the test suite on both Python 2.5.1 and 1.5.2.

  Benoit
........
  r2818 | belley | 2008-04-15 12:10:52 -0700 (Tue, 15 Apr 2008) | 10 lines

  Improved the multiple-parents.py test to also tests the following
  cases:

  d) Some children are ignored
  e) Some children are pre-requesites
  f) Some sources are missing

  The test still passes. No extra bug were found.
........
  r2850 | stevenknight | 2008-04-16 11:15:24 -0700 (Wed, 16 Apr 2008) | 4 lines

  Fix problems with the __del__() method referencing other module functions
  through global variables, which can get deleted out from under us at
  shutdown.
........
  r2851 | stevenknight | 2008-04-16 11:17:07 -0700 (Wed, 16 Apr 2008) | 4 lines

  Fix use of --interactive with -u/-U/-D and VariantDir() by making the
  method that cleans Node states between interactive commands aware of
  the alter_targets() method that tells us about an associated VariantDir().
........

git-svn-id: http://scons.tigris.org/svn/scons/trunk@2868 fdb21ef1-2011-0410-befe-b5e4ea1792b1
136 files changed:
QMTest/TestSCons.py
SConstruct
bin/install-python.sh
bootstrap.py
doc/SConscript
doc/man/scons.1
doc/scons.mod
doc/user/MANIFEST
doc/user/README [new file with mode: 0644]
doc/user/add-method.in [new file with mode: 0644]
doc/user/add-method.xml [new file with mode: 0644]
doc/user/main.in
doc/user/main.xml
src/CHANGES.txt
src/RELEASE.txt
src/engine/MANIFEST.in
src/engine/SCons/Action.py
src/engine/SCons/ActionTests.py
src/engine/SCons/Debug.py
src/engine/SCons/Environment.py
src/engine/SCons/EnvironmentTests.py
src/engine/SCons/Executor.py
src/engine/SCons/ExecutorTests.py
src/engine/SCons/Job.py
src/engine/SCons/JobTests.py
src/engine/SCons/Node/FS.py
src/engine/SCons/Node/NodeTests.py
src/engine/SCons/Node/__init__.py
src/engine/SCons/Options.py [new file with mode: 0644]
src/engine/SCons/Options/.cvsignore [deleted file]
src/engine/SCons/Platform/posix.py
src/engine/SCons/SConfTests.py
src/engine/SCons/Script/Interactive.py
src/engine/SCons/Script/Main.py
src/engine/SCons/Script/SConsOptions.py
src/engine/SCons/Script/SConscript.py
src/engine/SCons/Script/__init__.py
src/engine/SCons/Subst.py
src/engine/SCons/Taskmaster.py
src/engine/SCons/TaskmasterTests.py
src/engine/SCons/Tool/ToolTests.py
src/engine/SCons/Tool/__init__.py
src/engine/SCons/Tool/c++.py
src/engine/SCons/Tool/dmd.py
src/engine/SCons/Tool/dmd.xml
src/engine/SCons/Tool/g++.py
src/engine/SCons/Tool/intelc.py
src/engine/SCons/Tool/javac.py
src/engine/SCons/Tool/mingw.py
src/engine/SCons/Tool/mingw.xml
src/engine/SCons/Tool/packaging/__init__.py
src/engine/SCons/Tool/swig.py
src/engine/SCons/Util.py
src/engine/SCons/Variables/BoolVariable.py [moved from src/engine/SCons/Options/BoolOption.py with 89% similarity]
src/engine/SCons/Variables/BoolVariableTests.py [moved from src/engine/SCons/Options/BoolOptionTests.py with 82% similarity]
src/engine/SCons/Variables/EnumVariable.py [moved from src/engine/SCons/Options/EnumOption.py with 91% similarity]
src/engine/SCons/Variables/EnumVariableTests.py [moved from src/engine/SCons/Options/EnumOptionTests.py with 85% similarity]
src/engine/SCons/Variables/ListVariable.py [moved from src/engine/SCons/Options/ListOption.py with 94% similarity]
src/engine/SCons/Variables/ListVariableTests.py [moved from src/engine/SCons/Options/ListOptionTests.py with 81% similarity]
src/engine/SCons/Variables/PackageVariable.py [moved from src/engine/SCons/Options/PackageOption.py with 94% similarity]
src/engine/SCons/Variables/PackageVariableTests.py [moved from src/engine/SCons/Options/PackageOptionTests.py with 81% similarity]
src/engine/SCons/Variables/PathVariable.py [moved from src/engine/SCons/Options/PathOption.py with 94% similarity]
src/engine/SCons/Variables/PathVariableTests.py [moved from src/engine/SCons/Options/PathOptionTests.py with 82% similarity]
src/engine/SCons/Variables/VariablesTests.py [moved from src/engine/SCons/Options/OptionsTests.py with 91% similarity]
src/engine/SCons/Variables/__init__.py [moved from src/engine/SCons/Options/__init__.py with 91% similarity]
src/engine/SCons/compat/__init__.py
src/engine/SCons/compat/_scons_itertools.py [new file with mode: 0644]
src/engine/SCons/compat/_scons_sets15.py
src/engine/SCons/compat/_scons_textwrap.py
src/engine/SCons/dblite.py
src/script/scons.bat
src/setup.py
test/Actions/function.py
test/Actions/unicode-signature.py [new file with mode: 0644]
test/CXX/CCFLAGS.py [new file with mode: 0644]
test/CXX/CXXCOM.py
test/CXX/CXXCOMSTR.py
test/CXX/SHCXXCOM.py
test/CXX/SHCXXCOMSTR.py
test/Case.py
test/Configure/VariantDir-SConscript.py
test/Copy-Option.py
test/Deprecated/Copy-Method.py [moved from test/Deprecated/Copy.py with 100% similarity]
test/Deprecated/Options/BoolOption.py [moved from test/Options/BoolOption.py with 100% similarity]
test/Deprecated/Options/EnumOption.py [moved from test/Options/EnumOption.py with 100% similarity]
test/Deprecated/Options/ListOption.py [moved from test/Options/ListOption.py with 97% similarity]
test/Deprecated/Options/Options.py [moved from test/Options/Options.py with 100% similarity]
test/Deprecated/Options/PackageOption.py [moved from test/Options/PackageOption.py with 100% similarity]
test/Deprecated/Options/PathOption.py [moved from test/Options/PathOption.py with 100% similarity]
test/Deprecated/Options/chdir.py [moved from test/Options/chdir.py with 100% similarity]
test/Deprecated/Options/help.py [moved from test/Options/help.py with 100% similarity]
test/Deprecated/Options/import.py [moved from test/Options/import.py with 100% similarity]
test/Deprecated/debug-stree.py
test/Fortran/F77COMSTR.py
test/Fortran/F90COMSTR.py
test/Fortran/F95COMSTR.py
test/Fortran/FORTRANCOMSTR.py
test/Fortran/SHF77COMSTR.py
test/Fortran/SHF90COMSTR.py
test/Fortran/SHF95COMSTR.py
test/Fortran/SHFORTRANCOMSTR.py
test/Interactive/taskmastertrace.py
test/Interactive/tree.py
test/Interactive/variant_dir.py [new file with mode: 0644]
test/Interactive/version.py
test/Java/multi-step.py
test/KeyboardInterrupt.py [new file with mode: 0644]
test/LoadableModule.py
test/Parallel/multiple-parents.py [new file with mode: 0644]
test/QT/Tool.py
test/SConscript/Return.py
test/SWIG/subdir.py [new file with mode: 0644]
test/Variables/BoolVariable.py [new file with mode: 0644]
test/Variables/EnumVariable.py [new file with mode: 0644]
test/Variables/ListVariable.py [new file with mode: 0644]
test/Variables/PackageVariable.py [new file with mode: 0644]
test/Variables/PathVariable.py [new file with mode: 0644]
test/Variables/Variables.py [new file with mode: 0644]
test/Variables/chdir.py [new file with mode: 0644]
test/Variables/help.py [new file with mode: 0644]
test/Variables/import.py [new file with mode: 0644]
test/YACC/live.py
test/dependency-cycle.py
test/duplicate-sources.py [new file with mode: 0644]
test/exceptions.py
test/no-global-dependencies.py
test/option-v.py
test/option/d.py [moved from test/option-d.py with 95% similarity]
test/option/environment-overrides.py [moved from test/option-e.py with 86% similarity]
test/option/help-options.py [moved from test/option--H.py with 79% similarity]
test/option/no-print-directory.py [moved from test/option--npd.py with 90% similarity]
test/option/print-directory.py [moved from test/option-w.py with 87% similarity]
test/option/taskmastertrace.py
test/option/tree-all.py
test/option/tree-lib.py
test/symlink/dangling-include.py