Merged revisions 2898-2901,2903-2927 via svnmerge from
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 30 Apr 2008 05:39:46 +0000 (05:39 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 30 Apr 2008 05:39:46 +0000 (05:39 +0000)
commit63c273db3764fa7a3de3ba56b02c3a25672b4e4d
treef3178f3f085f178e22d840046acc862e23422870
parent5baf6c24d06b1cb2b6b9248621c9a13d5c85f274
Merged revisions 2898-2901,2903-2927 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core

........
  r2903 | stevenknight | 2008-04-22 08:23:52 -0700 (Tue, 22 Apr 2008) | 3 lines

  Issue 2019:  don't blow up when a "dictionary" source_scanner doesn't
  have a more-specific scanner entry for a specified source file's suffix.
........
  r2904 | stevenknight | 2008-04-23 11:13:19 -0700 (Wed, 23 Apr 2008) | 3 lines

  Fix regression in use of $CXXFLAGS by the default $SHCXXFLAGS setting.
  (Greg Noel)
........
  r2905 | stevenknight | 2008-04-23 11:23:12 -0700 (Wed, 23 Apr 2008) | 3 lines

  Update the test/CXX/SHCXXFLAGS.py with some more modern idioms copied
  from test/CXX/CXXFLAGS.py.
........
  r2921 | belley | 2008-04-28 08:52:13 -0700 (Mon, 28 Apr 2008) | 98 lines

  Candidate list must be flushed when stopping the taskmaster.
  ============================================================

  The taskmaster's candidate list must be flushed when the taskmaster is stopped,
  either because of a build error or a keyboard interrupt. This involves failing
  each candidates along with their waiting parents.  This is necessary because the
  waiting parents might be in the pending_children set() that is used by the
  taskmaster to determine if cycles exist in the dependency graph. Failure to do
  so leads to confusing error messages such as:

  scons: *** Found dependency cycle(s):

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/DynamicProperty.h
  (<SCons.Node.FS.File instance at 0x95d230c>)

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/Fault/NotSupported.h
  (<SCons.Node.FS.File instance at 0x960634c>)

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/Fault/InvalidRequest.h
  (<SCons.Node.FS.File instance at 0x95d2bac>)

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/Fault/RequestCanceled.h
  (<SCons.Node.FS.File instance at 0x960648c>)

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/Fault/InvalidType.h
  (<SCons.Node.FS.File instance at 0x95d2cec>)

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/Core/InvalidProperty.h
  (<SCons.Node.FS.File instance at 0x9606d2c>)

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/Fault/SecurityError.h
  (<SCons.Node.FS.File instance at 0x96065cc>)

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/Core/PropertyCollector.h
  (<SCons.Node.FS.File instance at 0x9606e6c>)

    Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/Fault/InvalidArgument.h
  (<SCons.Node.FS.File instance at 0x95d2a6c>)

  Internal Error: no cycle found for node
  /bld/vmkernel-main/scons/build/vmodl/obj/generic/Vmodl/Vmomi/DynamicData.h
  (<SCons.Node.FS.File instance at 0x95d21cc>)

  Changes made:

  Job.py:
  ------

  o Implemented an InterruptState object that allows the sharing of the
  interrupt state between the Jobs, the Serial/Parallel and the Worker
  thread object. This allows for somewhat faster interruption when
  Ctrl-C is pressed because the Worker thread will not start any new
  task, i.e. the ones siting in the request queue.

  Taskmaster.py:
  --------------

  o Moved the code contained the function Task.fail_continue() to the
  function Taskmaster.will_not_build(). This function perform the
  clean-up for nodes that will never be built. This includes failing
  these nodes along with their waiting parents and removing them from
  the list of pending children.

  o Improved the taskmaster tracing so that the pending children ref
  counts of nodes is also printed.

  o When stopping the taskmaster, no_next_candidate() now calls
  will_not_build() repetitively to make sure that all candidate nodes
  that will never be build are properly cleaned-up.

  test/Parallel/multiple-parents.py
  ---------------------------------

  Improved the test to also exercise the following functionality:

  o Nodes with multiple targets (not just aliases as it was before).
  o SideEffect()
  o Interrupting the build.

  Submitted against changeset 2920.
  All tests pass with both Python 2.5.1 and 1.5.2

  Benoit
........
  r2922 | stevenknight | 2008-04-28 11:50:10 -0700 (Mon, 28 Apr 2008) | 26 lines

  Issue 2024:  http://scons.tigris.org/issues/show_bug.cgi?id=2024

  Some public packages were importing specific SCons.Options.*Option
  submodules directly, instead of using the SCons.Options package
  itself (which actually exposed all the SCons.Options.*Option variable
  names directly, but what they hey).  Our scripts didn't test for
  direct importing of the submodules, so this broke when I implemented
  backwards comptability with a SCons/Options.py module, instead of a full
  SCons/Options/*.py package.

  This restores the SCons/Options/*.py package files with stub modules that
  provide backwards compatibility (by referring to the new SCons.Variables
  functions and classes) and allow for importing all of

  The test/Deprecated/Options/*Option.py scripts have had specific submodule
  imports added.  To make sure this corresponding "feature" continues to
  work in the future, I'll be following this with another checkin that
  adds submodule imports for the SCons.Variables.*Variable modules.

  I ran this with the SCons/Options.py file in place, and also with
  a compiled SCons/Options.pyc file in place, to try to make sure it
  works regardless.  We've seen issues on Debian where their packaging
  doesn't clean up old *.pyc files when a Python *.py module is removed.
  It looks like this should work regardless of whether the Options.pyc
  file is there or not.
........
  r2923 | stevenknight | 2008-04-28 11:52:52 -0700 (Mon, 28 Apr 2008) | 3 lines

  Update the test/Variables/*Variable.py scripts to verify that importing
  SCons.Variables.*Variable submodules continues to work in the future.
........
  r2924 | belley | 2008-04-28 14:06:54 -0700 (Mon, 28 Apr 2008) | 6 lines

  Fixed a test that my morning change broke. The taskmaster tracing now
  includes the pending children ref count.

  Benoit
........
  r2925 | stevenknight | 2008-04-28 18:00:25 -0700 (Mon, 28 Apr 2008) | 4 lines

  Issue 2028: Make sure already-existing Entry Nodes that we find
  are converted to Dir Nodes when searching a *PATH list for implicit
  dependencies.
........
  r2926 | stevenknight | 2008-04-29 08:11:40 -0700 (Tue, 29 Apr 2008) | 3 lines

  Issue 2034:  Fix $FORTRANMODDIR values like ${TARGET.dir} in the
  default $_FORTANMODFLAG expansion.  (Stefano)
........
  r2927 | stevenknight | 2008-04-29 11:34:02 -0700 (Tue, 29 Apr 2008) | 3 lines

  Restore the SCons.Options package (maintains backwards compatibility of
  importing submodules) to setup.py.
........

git-svn-id: http://scons.tigris.org/svn/scons/trunk@2928 fdb21ef1-2011-0410-befe-b5e4ea1792b1
35 files changed:
src/CHANGES.txt
src/engine/MANIFEST.in
src/engine/SCons/Executor.py
src/engine/SCons/Job.py
src/engine/SCons/Node/FS.py
src/engine/SCons/Options/BoolOption.py [new file with mode: 0644]
src/engine/SCons/Options/EnumOption.py [new file with mode: 0644]
src/engine/SCons/Options/ListOption.py [new file with mode: 0644]
src/engine/SCons/Options/PackageOption.py [new file with mode: 0644]
src/engine/SCons/Options/PathOption.py [new file with mode: 0644]
src/engine/SCons/Options/__init__.py [moved from src/engine/SCons/Options.py with 89% similarity]
src/engine/SCons/Taskmaster.py
src/engine/SCons/TaskmasterTests.py
src/engine/SCons/Tool/FortranCommon.py
src/engine/SCons/Tool/c++.py
src/engine/SCons/Tool/g++.py
src/setup.py
test/CXX/CXXFLAGS.py [new file with mode: 0644]
test/CXX/SHCXXFLAGS.py
test/Deprecated/Options/BoolOption.py
test/Deprecated/Options/EnumOption.py
test/Deprecated/Options/ListOption.py
test/Deprecated/Options/PackageOption.py
test/Deprecated/Options/PathOption.py
test/Fortran/FORTRANMODDIR.py
test/Interactive/taskmastertrace.py
test/Parallel/multiple-parents.py
test/Scanner/Entry-to-Dir.py [new file with mode: 0644]
test/Scanner/source_scanner-dict.py [new file with mode: 0644]
test/Variables/BoolVariable.py
test/Variables/EnumVariable.py
test/Variables/ListVariable.py
test/Variables/PackageVariable.py
test/Variables/PathVariable.py
test/option/taskmastertrace.py