summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool/packaging
Commit message (Collapse)AuthorAgeFilesLines
* Improve building of docs using Py3 [ci skip]Mats Wichmann2019-12-051-3/+3
| | | | | | | | | | | | | | | | | | | | * context managers on file r/w + use shutil.copy where it makes sense. * lxml wants (demands?) that xml files be processed as bytes * for the phase where we gen the entity files, read as text anyway * Need to solve a problem where the generated xml is putting the \n in literally, not evaluating it. * Fix some examples broken for py3 * Fix more octal constant instances * Cleanups suggested by PyCharm: staticmethods, two blanks before class definition, others. This addresses issues called out in #3300, but is not a complete solution because the actual doc build step still fails with the epydoc failures (which aren't directly because of Py3; epydoc build doesn't work any better on my system with Py3, even with the forked version with patches). Signed-off-by: Mats Wichmann <mats@linux.com>
* fix more Python escape complaintsMats Wichmann2019-12-021-1/+1
| | | | | | | | | Write as raw strings: Two are docstrings that contain a backslash; the third is an odd expression parenthesized for no good reason and containing backslashes. Signed-off-by: Mats Wichmann <mats@linux.com>
* [PR #3345] fix flake8 compliants on the PRMats Wichmann2019-04-251-1/+1
| | | | Signed-off-by: Mats Wichmann <mats@linux.com>
* [PY 3.8] file closes in tools and othersMats Wichmann2019-04-252-14/+15
| | | | Signed-off-by: Mats Wichmann <mats@linux.com>
* Fixup some code triggering pylint errors.Mats Wichmann2019-04-212-9/+9
| | | | | | | | | | | | | | | | | | | | Assorted fixups: exception types, redefined functions, globals, etc. Some old code removed to resolve issues (hashlib is always present on modern Pythons; no longer need the code for 2.5-and-earlier optparse). cmp is not a builtin function in Py3, drop one (unused) use; replace one. Fix another instance of renaming to SConsEnvironmentError. TODO flagged some instances of doing a raise without argument but not inside a try block - this is not considered legal, since raise with no argument is for re-raising an exception, but I don't know exactly how to resolve this in these cases. Also flagged an instance of raising an int instead of an exception class. We can either leave these as markers or update the PR. Signed-off-by: Mats Wichmann <mats@linux.com>
* Issue #3350 - Refactor EnvironmentError to SConsEnvironmentError to avoid ↵William Deegan2019-04-181-1/+1
| | | | overriding python's native EnvironmentError
* [WIP] [PY 3.8] fix more warningsMats Wichmann2019-03-301-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several locations with simple usage of deprecated "imp" module changed to use "importlib". These match with work in #3159, but this is not a complete implementation of #3159. More regex patterns are changed to be raw strings. Some strings which did not seem appropriate to change to raw strings (e.g. contain embedded tabs, which Python should honor) had backslashes escaped to avoid accidental Python interpretation. Example: '\t<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.targets" />\n' Python 3.8 was Warning \M was an unknown escape. More open().write(), open().read() style usage changed to use context managers so the file is closed. WIP part: even with Python 3.7, the tests which call sconsign.py fail; oddly they do not fail without the patch to compat.py. sconsign.py does an import using imp module (which is what generates the errors) so needs to be updated anyway. It does not quite fit the "simple usage" pattern - can't do a simple relative import since sconsign is normally located elsewhere in the tree than the main scons code body. With this version of the patch, 700 tests now pass with 3.8, and Warning messages reduced to 2800 (current master has 200 pass, 9000 warns) Signed-off-by: Mats Wichmann <mats@linux.com>
* small type-related cleanupsMats Wichmann2018-12-172-5/+9
| | | | | | | | | | | | | | | Two files in packaging: ipk.py indexed off the result of running filter, but in Python 3 filter returns an iterable, not a list. Convert to a list first. msi.py removes forbidden characters using a list comprehension, but the result is a list, so when it then calls upper() on it that's a method that does not exist on a list. Join it back into a string. Found another place in the same file that also assumed the list comprehension leaves a string, not a list, although it doesn't then call a nonexistent method on it. Signed-off-by: Mats Wichmann <mats@linux.com>
* Bugfix on packaging init syntax changeMats Wichmann2018-10-041-2/+3
| | | | Signed-off-by: Mats Wichmann <mats@linux.com>
* A few syntax cleanupsMats Wichmann2018-10-032-8/+5
| | | | | | | | | | | | | | | | | | | | | Suggested by PyCharm. Includes three "real" changes: 1. src/engine/SCons/Node/__init__.py has a print statement in a function which references 'self', but there is no 'self' defined (it is not a method in a class). Guessing it should have been 'node'. 2. src/engine/SCons/Environment.py makes a call using 'kwbd' which is not defined, looks like a copy-paste error and should be 'bd'. 3. src/engine/SCons/Tool/JavaCommon.py splits 'file', which is not defined, was evidently supposed to be 'fn'. These should be double-checked. The rest are purely syntax: whitespace, dropping trailing semicolons, using "is" to test for None, simplifying comparisons, normalizing docstring commenting ("always triple double quotes"), unneeded backslashes. Signed-off-by: Mats Wichmann <mats@linux.com>
* Resync generated docsMats Wichmann2018-10-031-1/+1
| | | | | | | | There have been a few doc changes since 3.0.1, this commit resyncs the generated docs to pick up fixes and wording. No code or test effect. Signed-off-by: Mats Wichmann <mats@linux.com>
* Add xz compression to tar packaging choices.Mats Wichmann2018-09-278-10/+103
| | | | | | | | | | | A few tweaks to scons_dev_master.py which needed to have xz added anyway: changed mercurial to git in initial setup, install different java, more pythons. Note about adding ipkg-build. Docs updated slightly for wording in addition to adding the new tar packager. Signed-off-by: Mats Wichmann <mats@linux.com>
* Update getargspec patch: actually use getfullargspecMats Wichmann2018-09-241-3/+5
| | | | | | | If able to import getfullargspec, use it to read args. Previous version still used getargspec, which might not be imported. Signed-off-by: Mats Wichmann <mats@linux.com>
* Modifications for deprected getargspecMats Wichmann2018-09-071-5/+11
| | | | | | | Py3 deprecated inspect.getargspec, prefer getfullargspec which is a drop-in replacement. Signed-off-by: Mats Wichmann <mats@linux.com>
* generalize the fix for #3164Mats Wichmann2018-09-042-6/+46
| | | | | | | | | | | | | Add a new flag, X_RPM_EXTRADEFS, which lets the user supply any additional flag lines needed in the specfile. If the tag is not present in the specfile, supply a value which turns off debug package generation. To retain debug package generation, supply the flag with a value of None, or with a list that does not include the disable value. So like the previous change the default is now not to generate debug, but that default can be overridden, and it is documented.
* Fix rpm tests for newer rpmbuild (fixes #3164)Mats Wichmann2018-08-133-25/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two issues: (1) ARCHITECTURE, if supplied, actually needs to be set in the specfile BuildArch: field (or passed on the command line). (2) rpmbuild on Fedora builds all kind of debug stuff behind the scenes (it makes packages not requested by the specfile!). This causes scons rpm tests to fail, so force in a flag to turn off this generation. That is done unconditionally at the moment by writing %global debug_package %{nil}\n to the specfile. If anyone eventually ends up needing to produce these debug packages through scons, we can add a flag to allow it by omitting the above setting. Some doc and comment cleanup done, and one of the tests now builds a noarch package to test actually supplying an ARCHITECTURE value that is not the machine default. Also, one of the tools called by rpm packaging did not supply the right suffix for the Tar builder, presumably a copy-paste error in a place that is not stressed by any test. Fedora packaging now also generates a file containing the build id and puts it into the package (another behind the scenes bit of magic - this does not appear in our %files section but is still added to the package). It is possible to turn this behavior off as well, but for the tests affected, the choice was made instead to have them now check the files in the generated package /contain/ the expected filenames rather than /exactly-match/ the expected filenames. Testing: on recent Fedora all the rpm-related tests now pass after six failed previously; on a Centos 7.4 system which did not fail any tests, the modified code still passes - did not introduce regressions. At the moment do not believe any of the CI setup will cause rpm tests to be run. Signed-off-by: Mats Wichmann <mats@linux.com>
* When iterating over dict.items(), we do not need a new list.Craig Rodrigues2017-03-123-5/+5
|
* Replace list(filter()) with list comprehension.Craig Rodrigues2017-03-111-2/+2
|
* update from upstreamWilliam Deegan2016-09-304-7/+9
|\
| * Merged in williamblevins/scons (pull request #357)William Deegan2016-09-221-0/+2
| |\ | | | | | | | | | Sorting RPM tarball sources to correct nondeterminism in ordering.
| | * Sorting RPM tarball sources to correct nondeterminism in ordering.William Blevins2016-09-181-0/+2
| | |
| * | Futurize stage 2 2to3 fixes only.William Blevins2016-09-204-7/+7
| |/
* | Merged scons/scons into defaultWilliam Deegan2016-06-143-9/+9
|\ \ | |/
| * Post merge commit for safety. Building Fortran code works, but tests fail.Russel Winder2015-12-244-46/+36
| |\
| * \ Merged default branch into python3-port to keep it up to date.Gary Oberbrunner2014-08-231-1/+1
| |\ \ | | | | | | | | | | | | | | | | Hand-updated a few things to keep them python3-safe, and handled several merge conflicts.
| * \ \ Merged with [default]Stefan Zimmermann2014-03-311-2/+2
| |\ \ \
| * | | | Made former 2to3 changes Python 2.7 compatible (or removed unneeded changes).Stefan Zimmermann2014-03-314-7/+7
| | | | |
| * | | | Result of raw 2to3 run (2to3-2.7); checkpoint for python3 conversion.Gary Oberbrunner2013-09-224-16/+16
| | | | |
* | | | | Remove duplicate entry of "X_RPM_CONFLICTS" in dictionary. (It was there twice)William Deegan2016-05-081-1/+0
| |_|_|/ |/| | |
* | | | removed several pre-2.7 methods and imports, including some basic refactoringsDirk Baechle2015-12-104-32/+19
| | | |
* | | | fix spelling mistakes found by debian lintian tool list here: ↵William Deegan2015-09-281-1/+1
| | | | | | | | | | | | | | | | https://lintian.debian.org/full/debian@jff-webhosting.net.html#scons_2.3.6-1
* | | | - switching Node class and NodeInfo/Binfo to using slotsDirk Baechle2015-02-264-13/+16
| |_|/ |/| | | | | | | | - memoizer subsystem now uses decorators instead of the metaclass approach
* | | - several smaller fixes to get the Linux buildslaves green againDirk Baechle2014-08-071-1/+1
| |/ |/|
* | - added doc editor configuration for XXE5Dirk Baechle2014-01-191-2/+2
|/ | | | | - added missing icons for XXE4 - adapted schema location, such that the validation works properly in SernaFree and XXE
* - switched to different schemaLocation URIDirk Baechle2013-05-031-1/+1
|
* - rewrote all tool/builder docs to new SCons XSDDirk Baechle2013-05-031-4/+183
|
* - several smaller fixes to get all tests running under Buildbot againdirkbaechle2012-09-271-10/+2
|
* Add the generated function documentation to the User's Guide as an appendix.Steven Knight2010-07-221-1/+1
| | | | | Fixes and refactoring in the bin/scons-proc.py script to support this. Fixes to various parts of the XML input.
* Move the authoritative source for functions from the man page to variousSteven Knight2010-07-211-8/+15
| | | | | | .xml files (some new, some updated) next to the modules that implement them. Generate the man page using the output generated from the .xml file by bin/scons-proc.py.
* Convert an old-style class in Tool/packaging/rpm.py to a new-style class.Steven Knight2010-05-161-1/+1
|
* http://scons.tigris.org/issues/show_bug.cgi?id=2345Greg Noel2010-04-243-6/+0
| | | | | | | Comb out all code that supported earlier versions of Python. Most such code is in snippets of only a few lines and can be identified by having a Python version string in it. Such snippets add up; this combing pass probably got rid of over 500 lines of code.
* http://scons.tigris.org/issues/show_bug.cgi?id=2317Greg Noel2010-04-231-1/+1
| | | | | | Apply the refactorings from the 'dict' fixer, less occurrences that were manually audited to be safe. Also pick up changes in bin/sfsum, a Python file that was not being scanned before.
* http://scons.tigris.org/issues/show_bug.cgi?id=2345Greg Noel2010-04-151-3/+3
| | | | | | Apply the first part of the 'raise' fixer (the three-argument cases are not converted and will need to wait until native support of with_traceback() is available).
* Move 2.0 changes collected in branches/pending back to trunk for furtherGreg Noel2010-03-254-49/+52
| | | | | development. Note that this set of changes is NOT backward-compatible; the trunk no longer works with Python 1.5.2, 2.0, or 2.1.
* Issue 2369: Don't use the deprecated md5 module, use hashlib.md5 instead.Steven Knight2009-03-071-1/+1
|
* Add emacs and vim editing settings to the bottom of *.py files.Steven Knight2009-02-0910-0/+58
|
* 2to3 sez, "rewrite map() as loop"Greg Noel2009-02-081-1/+3
|
* Fix entity references:Steven Knight2008-09-061-2/+2
| | | | &b-{FindInstalledFiles,Tag} => {FindInstalledFiles,Tag}
* Issue 2159: Man page formatting errors for Packaging()Greg Noel2008-08-271-13/+14
|
* Merged revisions 2725-2865 via svnmerge fromSteven Knight2008-04-171-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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(). ........