From 5b584a10bcc6ea92c4c460861187573f41f2fb2a Mon Sep 17 00:00:00 2001 From: Steven Knight Date: Mon, 8 Jan 2007 17:33:58 +0000 Subject: 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. ........ --- HOWTO/release.txt | 32 +++++++- QMTest/TestSCons.py | 2 +- README | 50 +++++++----- SConstruct | 2 +- debian/changelog | 4 +- rpm/scons.spec.in | 2 +- src/CHANGES.txt | 154 ++++++++++++++++++++++++++++++++++- src/setup.py | 8 +- src/test_copyrights.py | 212 ------------------------------------------------- src/test_strings.py | 212 +++++++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 436 insertions(+), 242 deletions(-) delete mode 100644 src/test_copyrights.py create mode 100644 src/test_strings.py diff --git a/HOWTO/release.txt b/HOWTO/release.txt index 57f38b7..cff44b9 100644 --- a/HOWTO/release.txt +++ b/HOWTO/release.txt @@ -347,8 +347,10 @@ Things to do to release a new X.Y version of SCons: download.php: new version number - versions.php: add new version number do $docversions[], - shift index numbers :-( + includes/versions.php: + update $stablerelease and/or $latestrelease + add new version number do $docversions[], + SHIFT $docversions[] INDEX NUMBERS :-( index.php: announcement on the home page remove out-of-date announcements @@ -405,6 +407,32 @@ Things to do to release a new X.Y version of SCons: Add news item to the SourceForge project page + Pull down "Project => News" + + Click "Submit" + + Fill in the "Subject:" box + + Cut-and-paste the announcement text into the "Details:" box + + Click "submit" + + + + Add news item to the tigris.org project page + + Click "Announcements" + + Click "Add new announcement" + + Double-check the date (probably already set) + + Fill in the "Headline" box + + Fill in the "Body" box (probably short) + + Click "Add new announcement" + Announce to the following mailing lists (template below): diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py index 091c29f..79e96d7 100644 --- a/QMTest/TestSCons.py +++ b/QMTest/TestSCons.py @@ -30,7 +30,7 @@ from TestCommon import __all__ # 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.) -SConsVersion = '0.96.93' +SConsVersion = '0.96.94' __all__.extend([ 'TestSCons', 'python', diff --git a/README b/README index 518de06..8a5b562 100644 --- a/README +++ b/README @@ -83,12 +83,12 @@ In this case, your options are: -- (Optional.) Install from a pre-packaged SCons package that does not require distutils: - Red Hat Linux scons-0.96.93.noarch.rpm + Red Hat Linux scons-0.96.94.noarch.rpm - Debian GNU/Linux scons_0.96.93_all.deb + Debian GNU/Linux scons_0.96.94_all.deb (or use apt-get) - Windows scons-0.96.93.win32.exe + Windows scons-0.96.94.win32.exe -- (Recommended.) Download the latest distutils package from the following URL: @@ -160,7 +160,7 @@ And on Windows: By default, the above commands will do the following: - -- Install the version-numbered "scons-0.96.93" and "sconsign-0.96.93" + -- Install the version-numbered "scons-0.96.94" and "sconsign-0.96.94" scripts in the default system script directory (/usr/bin or C:\Python*\Scripts, for example). This can be disabled by specifying the "--no-version-script" option on the command @@ -173,15 +173,15 @@ By default, the above commands will do the following: if you want to install and experiment with a new version before making it the default on your system. On UNIX or Linux systems, you can have the "scons" and "sconsign" scripts be hard links or - symbolic links to the "scons-0.96.93" and "sconsign-0.96.93" scripts + symbolic links to the "scons-0.96.94" and "sconsign-0.96.94" scripts by specifying the "--hardlink-scons" or "--symlink-scons" options on the command line. - -- Install "scons-0.96.93.bat" and "scons.bat" wrapper scripts in the + -- Install "scons-0.96.94.bat" and "scons.bat" wrapper scripts in the Python prefix directory on Windows (C:\Python*, for example). This can be disabled by specifying the "--no-install-bat" option on the command line. On UNIX or Linux systems, the - "--install-bat" option may be specified to have "scons-0.96.93.bat" + "--install-bat" option may be specified to have "scons-0.96.94.bat" and "scons.bat" files installed in the default system script directory, which is useful if you want to install SCons in a shared file system directory that can be used to execute SCons @@ -189,7 +189,7 @@ By default, the above commands will do the following: -- Install the SCons build engine (a Python module) in an appropriate version-numbered SCons library directory - (/usr/lib/scons-0.96.93 or C:\Python*\scons-0.96.93, for example). + (/usr/lib/scons-0.96.94 or C:\Python*\scons-0.96.94, for example). See below for more options related to installing the build engine library. @@ -504,7 +504,15 @@ you can build everything by simply running it: $ scons If you don't have SCons version 0.96.93 later already installed on your -system, you can build this version of SCons with itself with a little more +system, you can use the supplied bootstrap.py script: + + $ python bootstrap.py build/scons + +The bootstrap.py keeps the src/ subdirectory free of compiled Python +(*.pyc or *.pyo) files by copying the necessary SCons files to a local +bootstrap/ subdirectory and executing it from there. + +You can also build this version of SCons by hand with a little more typing. On UNIX or Linux (using sh or a derivative like bash or ksh): $ export SCONS_LIB_DIR=`pwd`/src/engine @@ -518,18 +526,18 @@ On Windows: Depending on the utilities installed on your system, any or all of the following packages will be built: - build/dist/scons-0.96.93-1.noarch.rpm - build/dist/scons-0.96.93-1.src.rpm - build/dist/scons-0.96.93.linux-i686.tar.gz - build/dist/scons-0.96.93.tar.gz - build/dist/scons-0.96.93.win32.exe - build/dist/scons-0.96.93.zip - build/dist/scons-doc-0.96.93.tar.gz - build/dist/scons-local-0.96.93.tar.gz - build/dist/scons-local-0.96.93.zip - build/dist/scons-src-0.96.93.tar.gz - build/dist/scons-src-0.96.93.zip - build/dist/scons_0.96.93-1_all.deb + build/dist/scons-0.96.94-1.noarch.rpm + build/dist/scons-0.96.94-1.src.rpm + build/dist/scons-0.96.94.linux-i686.tar.gz + build/dist/scons-0.96.94.tar.gz + build/dist/scons-0.96.94.win32.exe + build/dist/scons-0.96.94.zip + build/dist/scons-doc-0.96.94.tar.gz + build/dist/scons-local-0.96.94.tar.gz + build/dist/scons-local-0.96.94.zip + build/dist/scons-src-0.996.94tar.gz + build/dist/scons-src-0.96.94.zip + build/dist/scons_0.96.94-1_all.deb The SConstruct file is supposed to be smart enough to avoid trying to build packages for which you don't have the proper utilities installed. diff --git a/SConstruct b/SConstruct index a61466a..374cef0 100644 --- a/SConstruct +++ b/SConstruct @@ -45,7 +45,7 @@ import sys import time project = 'scons' -default_version = '0.96.93' +default_version = '0.96.94' copyright = "Copyright (c) %s The SCons Foundation" % copyright_years Default('.') diff --git a/debian/changelog b/debian/changelog index dc5945b..84f2b2e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -scons (0.96-93) unstable; urgency=low +scons (0.96-94) unstable; urgency=low * Pre-release of eighth beta release. - -- Steven Knight Mon, 06 Nov 2006 00:44:11 -0600 + -- Steven Knight Sun, 07 Jan 2007 18:36:20 -0600 scons (0.96-1) unstable; urgency=low diff --git a/rpm/scons.spec.in b/rpm/scons.spec.in index 50bae78..3b49196 100644 --- a/rpm/scons.spec.in +++ b/rpm/scons.spec.in @@ -1,5 +1,5 @@ %define name scons -%define version 0.96.93 +%define version 0.96.94 %define release 1 Summary: an Open Source software construction tool diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 3678dd1..711b26c 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -8,7 +8,159 @@ -RELEASE 0.97 - XXX +RELEASE 0.96.94 - Sun, 07 Jan 2007 18:36:20 -0600 + + NOTE: This is a pre-release of 0.97 for testing purposes. + + From Anonymous: + + - Allow arbitrary white space after a SWIG %module declaration. + + From Paul: + + - When compiling resources under MinGW, make sure there's a space + between the --include-dir option and its argument. + + From Jay Kint: + + - Alleviate long command line issues on Windows by executing command + lines directly via os.spawnv() if the command line doesn't need + shell interpretation (has no pipes, redirection, etc.). + + From Walter Franzini: + + - Exclude additional Debian packaging files from the copyright check. + + From Fawad Halim: + + - Handle the conflict between the impending Python 2.6 'as' keyword + and our Tool/as.py module name. + + From Steven Knight: + + - Speed up the Node.FS.Dir.rel_path() method used to generate path names + that get put into the .sconsign* file(s). + + - Optimize Node.FS.Base.get_suffix() by computing the suffix once, up + front, when we set the Node's name. (Duh...) + + - Reduce the Memoizer's responsibilities to simply counting hits and + misses when the --debug=memoizer option is used, not to actually + handling the key calculation and memoization itself. This speeds + up some configurations significantly, and should cause no functional + differences. + + - Add a new scons-time script with subcommands for generating + consistent timing output from SCons configurations, extracting + various information from those timings, and displaying them in + different formats. + + - Reduce some unnecessary stat() calls from on-disk entry type checks. + + - Fix SideEffect() when used with -j, which was badly broken in 0.96.93. + + - Propagate TypeError exceptions when evaluating construction variable + expansions up the stack, so users can see what's going on. + + - When disambiguating a Node.FS.Entry into a Dir or File, don't look + in the on-disk source directory until we've confirmed there's no + on-disk entry locally and there *is* one in the srcdir. This avoids + creating a phantom Node that can interfere with dependencies on + directory contents. + + - Add an AllowSubstExceptions() function that gives the SConscript + files control over what exceptions cause a string to expand to '' + vs. terminating processing with an error. + + - Allow the f90.py and f95.py Tool modules to compile earlier source + source files of earlier Fortran version. + + - Fix storing signatures of files retrieved from CacheDir() so they're + correctly identified as up-to-date next invocation. + + - Make sure lists of computed source suffixes cached by Builder objects + don't persist across changes to the list of source Builders (so the + addition of suffixes like .ui by the qt.py Tool module take effect). + + - Enhance the bootstrap.py script to allow it to be used to execute + SCons more easily from a checked-out source tree. + + From Ben Leslie: + + - Fix post-Memoizer value caching misspellings in Node.FS._doLookup(). + + From Rob Managan, Dmitry Mikhin and Joel B. Mohler: + + - Handle TeX/LaTeX files in subdirectories by changing directory + before invoking TeX/LaTeX. + + - Scan LaTeX files for \bibliography lines. + + - Support multiple file names in a "\bibliography{file1,file2}" string. + + - Handle TeX warnings about undefined citations. + + - Support re-running LaTeX if necessary due to a Table of Contents. + + From Dmitry Mikhin: + + - Return LaTeX if "Rerun to get citations correct" shows up on the next + line after the "Warning:" string. + + From Gary Oberbrunner: + + - Add #include lines to fix portability issues in two tests. + + - Eliminate some unnecessary os.path.normpath() calls. + + - Add a $CFLAGS variable for C-specific options, leaving $CCFLAGS + for options common to C and C++. + + From Tom Parker: + + - Have the error message print the missing file that Qt can't find. + + From John Pye: + + - Fix env.MergeFlags() appending to construction variable value of None. + + From Steve Robbins: + + - Fix the "sconsign" script when the .sconsign.dblite file is explicitly + specified on the command line (and not intuited from the old way of + calling it with just ".sconsign"). + + From Jose Pablo Ezequiel "Pupeno" Fernandez Silva: + + - Give the 'lex' tool knowledge of the additional target files produced + by the flex "--header-file=" and "--tables-file=" options. + + - Give the 'yacc' tool knowledge of the additional target files produced + by the bison "-g", "--defines=" and "--graph=" options. + + - Generate intermediate files with Objective C file suffixes (.m) when + the lex and yacc source files have appropriate suffixes (.lm and .ym). + + From Sohail Somain: + + - Have the mslink.py Tool only look for a 'link' executable on Windows + systems. + + From Vaclav Smilauer: + + - Add support for a "srcdir" keyword argument when calling a Builder, + which will add a srcdir prefix to all non-relative string sources. + + From Jonathan Ultis: + + - Allow Options converters to take the construction environment as + an optional argument. + + + +RELEASE 0.96.93 - Mon, 06 Nov 2006 00:44:11 -0600 + + NOTE: This is a pre-release of 0.97 for testing purposes. From Anonymous: diff --git a/src/setup.py b/src/setup.py index f06e717..fa2baf4 100644 --- a/src/setup.py +++ b/src/setup.py @@ -29,7 +29,13 @@ import stat import string import sys -Version = "0.96.93" +Version = "0.96.94" + +man_pages = [ + 'scons.1', + 'sconsign.1', + 'scons-time.1', +] man_pages = [ 'scons.1', diff --git a/src/test_copyrights.py b/src/test_copyrights.py deleted file mode 100644 index 2bc951e..0000000 --- a/src/test_copyrights.py +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/env python -# -# __COPYRIGHT__ -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# - -__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" - -""" -Verify that we have proper strings like Copyright notices on all the -right files in our distributions. - -Note that this is a source file and packaging test, not a functional test, -so the name of this script doesn't end in *Tests.py. -""" - -import fnmatch -import os -import os.path -import re -import string - -import TestCmd -import TestSCons - -# Use TestCmd, not TestSCons, so we don't chdir to a temporary directory. -test = TestCmd.TestCmd() - -scons_version = TestSCons.SConsVersion - -def build_path(*args): - return apply(os.path.join, ('build',)+args) - -build_scons = build_path('scons') -build_local = build_path('scons-local', 'scons-local-'+scons_version) -build_src = build_path('scons-src') - -class Checker: - def __init__(self, directory, search_list = [], remove_list=[]): - self.directory = directory - self.search_list = search_list - self.remove_dict = {} - for r in remove_list: - self.remove_dict[os.path.join(directory, r)] = 1 - - def directory_exists(self): - return os.path.exists(self.directory) - - def remove_path(self, path): - return self.remove_dict.get(path) - - def search_this(self, path): - if self.search_list: - for pattern in self.search_list: - if fnmatch.fnmatch(path, pattern): - return 1 - return None - else: - return os.path.isfile(path) - - def visit(self, result, dirname, names): - make_path_tuple = lambda n, d=dirname: (n, os.path.join(d, n)) - for name, path in map(make_path_tuple, names): - if self.remove_path(path): - names.remove(name) - elif self.search_this(path): - body = open(path, 'r').read() - for expr in self.expressions: - if not expr.search(body): - msg = '%s: missing %s' % (path, repr(expr.pattern)) - result.append(msg) - - def find_missing(self): - result = [] - os.path.walk(self.directory, self.visit, result) - return result - -class CheckUnexpandedStrings(Checker): - expressions = [ - re.compile('__COPYRIGHT__'), - re.compile('__FILE__ __REVISION__ __DATE__ __DEVELOPER__'), - ] - def must_be_built(self): - return None - -class CheckExpandedCopyright(Checker): - expressions = [ - re.compile('Copyright.*The SCons Foundation'), - ] - def must_be_built(self): - return 1 - -check_list = [ - - CheckUnexpandedStrings( - 'src', - search_list = [ '*.py' ], - remove_list = [ - 'engine/SCons/Conftest.py', - 'engine/SCons/dblite.py', - 'engine/SCons/Optik', - ], - ), - - CheckUnexpandedStrings( - 'test', - search_list = [ '*.py' ], - ), - - CheckExpandedCopyright( - build_scons, - remove_list = [ - 'build', - 'build-stamp', - 'configure-stamp', - 'debian', - 'dist', - 'engine/SCons/Conftest.py', - 'engine/SCons/dblite.py', - 'engine/SCons/Optik', - 'MANIFEST', - 'os_spawnv_fix.diff', - 'setup.cfg', - ], - ), - - CheckExpandedCopyright( - build_local, - remove_list = [ - 'SCons/Conftest.py', - 'SCons/dblite.py', - 'SCons/Optik', - ], - ), - - CheckExpandedCopyright( - build_src, - remove_list = [ - 'bin', - 'config', - 'debian', - 'doc/design', - 'doc/MANIFEST', - 'doc/python10', - 'doc/reference', - 'doc/man/MANIFEST', - 'doc/user/cons.pl', - 'doc/user/MANIFEST', - 'doc/user/SCons-win32-install-1.jpg', - 'doc/user/SCons-win32-install-2.jpg', - 'doc/user/SCons-win32-install-3.jpg', - 'doc/user/SCons-win32-install-4.jpg', - 'gentoo', - 'QMTest/classes.qmc', - 'QMTest/configuration', - 'QMTest/TestCmd.py', - 'QMTest/TestCommon.py', - 'QMTest/unittest.py', - 'src/os_spawnv_fix.diff', - 'src/MANIFEST.in', - 'src/setup.cfg', - 'src/engine/MANIFEST.in', - 'src/engine/MANIFEST-xml.in', - 'src/engine/setup.cfg', - 'src/engine/SCons/Conftest.py', - 'src/engine/SCons/dblite.py', - 'src/engine/SCons/Optik', - 'src/script/MANIFEST.in', - 'src/script/setup.cfg', - ], - ), - -] - -missing_strings = [] -not_built = [] - -for collector in check_list: - if collector.directory_exists(): - missing_strings.extend(collector.find_missing()) - elif collector.must_be_built(): - not_built.append(collector.directory) - -if missing_strings: - print "Found the following files with missing strings:" - print "\t" + string.join(missing_strings, "\n\t") - test.fail_test(1) - -if not_built: - print "Cannot check all strings, the following have apparently not been built:" - print "\t" + string.join(not_built, "\n\t") - test.no_result(1) - -test.pass_test() diff --git a/src/test_strings.py b/src/test_strings.py new file mode 100644 index 0000000..2bc951e --- /dev/null +++ b/src/test_strings.py @@ -0,0 +1,212 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +""" +Verify that we have proper strings like Copyright notices on all the +right files in our distributions. + +Note that this is a source file and packaging test, not a functional test, +so the name of this script doesn't end in *Tests.py. +""" + +import fnmatch +import os +import os.path +import re +import string + +import TestCmd +import TestSCons + +# Use TestCmd, not TestSCons, so we don't chdir to a temporary directory. +test = TestCmd.TestCmd() + +scons_version = TestSCons.SConsVersion + +def build_path(*args): + return apply(os.path.join, ('build',)+args) + +build_scons = build_path('scons') +build_local = build_path('scons-local', 'scons-local-'+scons_version) +build_src = build_path('scons-src') + +class Checker: + def __init__(self, directory, search_list = [], remove_list=[]): + self.directory = directory + self.search_list = search_list + self.remove_dict = {} + for r in remove_list: + self.remove_dict[os.path.join(directory, r)] = 1 + + def directory_exists(self): + return os.path.exists(self.directory) + + def remove_path(self, path): + return self.remove_dict.get(path) + + def search_this(self, path): + if self.search_list: + for pattern in self.search_list: + if fnmatch.fnmatch(path, pattern): + return 1 + return None + else: + return os.path.isfile(path) + + def visit(self, result, dirname, names): + make_path_tuple = lambda n, d=dirname: (n, os.path.join(d, n)) + for name, path in map(make_path_tuple, names): + if self.remove_path(path): + names.remove(name) + elif self.search_this(path): + body = open(path, 'r').read() + for expr in self.expressions: + if not expr.search(body): + msg = '%s: missing %s' % (path, repr(expr.pattern)) + result.append(msg) + + def find_missing(self): + result = [] + os.path.walk(self.directory, self.visit, result) + return result + +class CheckUnexpandedStrings(Checker): + expressions = [ + re.compile('__COPYRIGHT__'), + re.compile('__FILE__ __REVISION__ __DATE__ __DEVELOPER__'), + ] + def must_be_built(self): + return None + +class CheckExpandedCopyright(Checker): + expressions = [ + re.compile('Copyright.*The SCons Foundation'), + ] + def must_be_built(self): + return 1 + +check_list = [ + + CheckUnexpandedStrings( + 'src', + search_list = [ '*.py' ], + remove_list = [ + 'engine/SCons/Conftest.py', + 'engine/SCons/dblite.py', + 'engine/SCons/Optik', + ], + ), + + CheckUnexpandedStrings( + 'test', + search_list = [ '*.py' ], + ), + + CheckExpandedCopyright( + build_scons, + remove_list = [ + 'build', + 'build-stamp', + 'configure-stamp', + 'debian', + 'dist', + 'engine/SCons/Conftest.py', + 'engine/SCons/dblite.py', + 'engine/SCons/Optik', + 'MANIFEST', + 'os_spawnv_fix.diff', + 'setup.cfg', + ], + ), + + CheckExpandedCopyright( + build_local, + remove_list = [ + 'SCons/Conftest.py', + 'SCons/dblite.py', + 'SCons/Optik', + ], + ), + + CheckExpandedCopyright( + build_src, + remove_list = [ + 'bin', + 'config', + 'debian', + 'doc/design', + 'doc/MANIFEST', + 'doc/python10', + 'doc/reference', + 'doc/man/MANIFEST', + 'doc/user/cons.pl', + 'doc/user/MANIFEST', + 'doc/user/SCons-win32-install-1.jpg', + 'doc/user/SCons-win32-install-2.jpg', + 'doc/user/SCons-win32-install-3.jpg', + 'doc/user/SCons-win32-install-4.jpg', + 'gentoo', + 'QMTest/classes.qmc', + 'QMTest/configuration', + 'QMTest/TestCmd.py', + 'QMTest/TestCommon.py', + 'QMTest/unittest.py', + 'src/os_spawnv_fix.diff', + 'src/MANIFEST.in', + 'src/setup.cfg', + 'src/engine/MANIFEST.in', + 'src/engine/MANIFEST-xml.in', + 'src/engine/setup.cfg', + 'src/engine/SCons/Conftest.py', + 'src/engine/SCons/dblite.py', + 'src/engine/SCons/Optik', + 'src/script/MANIFEST.in', + 'src/script/setup.cfg', + ], + ), + +] + +missing_strings = [] +not_built = [] + +for collector in check_list: + if collector.directory_exists(): + missing_strings.extend(collector.find_missing()) + elif collector.must_be_built(): + not_built.append(collector.directory) + +if missing_strings: + print "Found the following files with missing strings:" + print "\t" + string.join(missing_strings, "\n\t") + test.fail_test(1) + +if not_built: + print "Cannot check all strings, the following have apparently not been built:" + print "\t" + string.join(not_built, "\n\t") + test.no_result(1) + +test.pass_test() -- cgit v0.12