diff options
99 files changed, 420 insertions, 2805 deletions
diff --git a/.travis.yml b/.travis.yml index 9d8b96d..a1f58b0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,10 @@ dist: trusty language: python +addons: + apt: + update: true + install: - ./.travis/install.sh diff --git a/HOWTO/README b/HOWTO/README deleted file mode 100644 index e20df73..0000000 --- a/HOWTO/README +++ /dev/null @@ -1,24 +0,0 @@ -__COPYRIGHT__ - -Here you'll find plain text documentation of how to handle various SCons -project procedures. Files contained herein: - -change.txt - How changes are integrated, including generating and - distributing aedist change sets, and updating the CVS repository - on SourceForge. - -new-platform.txt - Steps to add a new Platform/*.py file. This is probably out - of date. - -new-script.txt - Steps to add a new script or utility (like scons and sconsign) - to what we ship. - -new-tool.txt - Steps to add a new Tool/*.py file. This is probably out of date. - -release.txt - Steps to go through when releasing a new version of SCons. - diff --git a/HOWTO/change.txt b/HOWTO/change.txt deleted file mode 100644 index f295003..0000000 --- a/HOWTO/change.txt +++ /dev/null @@ -1,61 +0,0 @@ -__COPYRIGHT__ - -Handling a change set: - - -- Start the change: - - aedb {cnum} [if it's initiated locally] - aedist -r [if it's a remote submission] - - -- Normal development cycle: - - aeb - aet - aet -bl - aet -reg [optional] - aed - aede - - -- As the reviewer: - - aerpass {cnum} - - -- As the integrator: - - aeib {cnum} - aeb - aet - aet -bl - aet -reg - aed - aeipass - - -- Distribute the change to scons-aedist: - - aedist -s -p scons.0.96 {cnum} > scons.0.96.C{cnum}.ae - pine -attach scons.0.96.C{cnum}.ae scons-aedist@lists.sourceforge.net - Subject: scons.0.96 - {SUMMARY} - Body: aegis -l -p scons.0.96 -c {cnum} cd - - rm scons.0.96.C{cnum}.ae - - [This will eventually be automated.] - - -- Update the aedist baseline on the web site: - - aedist -s -bl -p scons.0.96 > scons.0.96.ae - scp scons.0.96.ae stevenknight@scons.sourceforge.net:/home/groups/s/sc/scons/htdocs/scons.0.96.ae - rm scons.0.96.ae - - [This will eventually be automated.] - - -- Distribute the change to CVS: - - export CVS_RSH=ssh - ae2cvs -n -aegis -p scons.0.96 -c {cnum} -u ~/SCons/scons - ae2cvs -X -aegis -p scons.0.96 -c {cnum} -u ~/SCons/scons - - If you need the "ae2cvs" Perl script, you can find a copy - checked in to the bin/subdirectory. - - [This may eventually be automated.] diff --git a/HOWTO/new-platform.txt b/HOWTO/new-platform.txt deleted file mode 100644 index 8aa11ec..0000000 --- a/HOWTO/new-platform.txt +++ /dev/null @@ -1,74 +0,0 @@ -__COPYRIGHT__ - -Adding a new Platform to the SCons distribution: - - -- Add the following files (aenf): - - src/engine/SCons/Platform/xxx.py - - Use one of the other Platform files as a template. - - The tool_list() function should return the list of tools - that will be available through the default construction - Environment. - - The generate() function should set construction variables: - - ENV - OBJPREFIX - OBJSUFFIX - PROGPREFIX - PROGSUFFIX - LIBPREFIX - LIBSUFFIX - SHLIBPREFIX - SHLIBSUFFIX - LIBPREFIXES - LIBSUFFIXES - - -- Modify the following files (aecp): - - doc/man/scons.1 - - Add the new platform to the example of the platform - keyword when instantiating an Environment. - - Add the list of default tools returned by tool_list() - for this platform. - - rpm/scons.spec - - Add to the list at the bottom of the file: - - /usr/lib/scons/SCons/Platform/xxx.py - /usr/lib/scons/SCons/Platform/xxx.pyc - - [THIS LIST SHOULD BE GENERATED FROM MANIFEST.in, - AND WILL BE SOME DAY.] - - src/CHANGES.txt - - Add mention of the new Platform specification. - - src/engine/MANIFEST.in - - Add to the list: - - SCons/Platform/xxx.py - - src/engine/SCons/Platform/Platform/PlatformTests.py - - Copy and paste one of the other platform tests to verify - the ability to initialize an environment through a call - to the object returned by Platform('xxx') - - src/engine/SCons/Platform/__init__.py - - Add logic to platform_default() (if necessary) to return - the appropriate platform string. - - test/Platform.py - - Add the new platform to the SConstruct and SConscript - files. Add the expected output to the "expect" - variable. diff --git a/HOWTO/new-script.txt b/HOWTO/new-script.txt deleted file mode 100644 index f859c48..0000000 --- a/HOWTO/new-script.txt +++ /dev/null @@ -1,75 +0,0 @@ -__COPYRIGHT__ - -Steps for adding a new script/utility to the SCons packages. Assume -that you're creating a new man page, too. In the template steps -below, "newscript" is the name of the new script/utility being added. - - New files: - - doc/man/newscript.1 - - New man page; use an existing one as a template. - - src/script/newscript.py - - The new script itself. - - test/*.py - - Appropriate tests for the new script. - - Modified files: - - SConstruct - - In the "scons_script" package description: - - Add "newscript" : "newscript.py" to the "filemap" - dictionary. - - In the "scons" package description: - - Add "newscript.1" to the "files" list. - - Add "newscript.1" : "../doc/man/newscript.1" to the - "filemap" dictionary. - - Add "newscript" to the scripts[] list - - debian/rules - - Add: - - rm -f debian/scons/usr/bin/newscript - cp build/scripts/newscript debian/scons/user/bin/newscript - sed '1s|.*|#!/usr/bin/python2.1|' build/scripts/newscript > debian/scons/user/bin/newscript - chmod +x debian/scons/user/bin/newscript - - rm -f debian/scons/usr/share/man/man1/newscript.1 - cp newscript.1 debian/scons/user/share/man/man1/ - - doc/SConscript - - Add "newscript" to man_page_list[] - - gentoo/scons.ebuild.in - - Add "doman newscript.1" - - rpm/scons.spec.in - - Add "gzip -c newscript.1" > $RPM_BUILD_ROOT/usr/man/man1/newscript.1.gz - - Add "%doc /usr/man/man1/newscript.1.gz" - - src/CHANGES.txt - - Document the addition of the new script. - - src/script/MANIFEST.in - - Add a line: "newscript" - - src/setup.py - - Add "script/newscript" to the 'scripts' list. diff --git a/HOWTO/new-tool.txt b/HOWTO/new-tool.txt deleted file mode 100644 index 4297fe6..0000000 --- a/HOWTO/new-tool.txt +++ /dev/null @@ -1,81 +0,0 @@ -__COPYRIGHT__ - -Adding a new Tool to the SCons distribution: - - -- Add the following files (aenf): - - src/engine/SCons/Tool/xxx.py - - Use one of the other Tool files as a template. - - The tool should set and use construction variables: - - XXX (specific tool) - XXXCOM (the command line) - XXXFLAGS (flags for the command line) - - -- Modify the following files (aecp): - - doc/man/scons.1 - - Add the new tool to the default Platform lists - (if appropriate). - - If this creates object files from a new source - file type, add the new file suffixes. - - Document the new construction variables. - - rpm/scons.spec - - Add to the list at the bottom of the file: - - /usr/lib/scons/SCons/Tool/xxx.py - /usr/lib/scons/SCons/Tool/xxx.pyc - - [THIS LIST SHOULD BE GENERATED FROM MANIFEST.in, - AND WILL BE SOME DAY.] - - src/CHANGES.txt - - Add mention of the new Tool specification. - - src/engine/MANIFEST.in - - Add to the list: - - SCons/Tool/xxx.py - - src/engine/SCons/Defaults.py - - If there are any new Actions for the Tool, add them - here. - - src/engine/SCons/Platform/*.py - - Add the Tool to the list(s) returned by tool_list(). - - -- Add the following tests (aent): - - test/XXX.py - - Use one of the other tests as a template. - - The first part should be a platform-independent test - using dummy 'myxxx.py' utilities to test if $XXX is set. - - Remaining parts of the test can check to see if the - specific tool is installed on the system, and test - actually executing the tool. - - test/XXXFLAGS.py - - Use one of the other tests as a template. - - The first part should be a platform-independent test - using dummy 'myxxx.py' utilities to test if $XXXFLAGS is - set. - - Optionally, remaining parts of the test can check to see - if the specific tool is installed on the system, and - test actually executing the tool. diff --git a/HOWTO/release.txt b/HOWTO/release.txt deleted file mode 100644 index 5fbbfc7..0000000 --- a/HOWTO/release.txt +++ /dev/null @@ -1,656 +0,0 @@ -__COPYRIGHT__ - -This document covers how to prepare major releases of SCons--that is, -releases numbered with X.Y format, such as 0.93, 1.0, etc. - -If you need to prepare a specific subrelease (X.Y.Z, such as 0.94.1), -then see the document HOWTO/subrelease.txt. - -Things to do to release a new X.Y version of SCons: - - Prepare the describe-the-release section for the announcements - - summarize changes from src/CHANGES.txt - - template is below, search for "describe-the-release" - - send this out for review while you get the rest of the - release ready! - - Build and test candidate packages - - test on Linux - - test on Windows NT - - 1) tar zxf scons-src-{version}.tar.gz - cd scons-src-{version} - python runtest.py -a - - 2) tar zxf scons-{version}.tar.gz - cd scons-{version} - python setup.py install - cd scons-src-{version} - python runtest.py -a -X -x C:\Python20\scons.bat - - 3) scons-{verson}.win32.exe - cd scons-src-{version} - python runtest.py -a -X -x C:\Python20\scons.bat - - 4) mkdir temporary_directory - cd temporary_directory - tar zxf scons-local-{version}.tar.gz - cd scons-src-{version} - python runtest.py -a -x C:\temporary_directory\scons.py - - Check in any changes necessary to make everything work - - Update the user's guide - - sh bin/docdiff - - sh bin/docupdate - - END THE CURRENT DEVELOPMENT BRANCH - - ae_p scons.0 - - aede {96} - - aerpass {96} - - aeib {96} - - aed - - aeb - - aet - - aet -reg - - aeipass - - START THE NEW BRANCH FOR RELEASE - - aenbr -p scons.0 {97} - - aenc -p scons.0.{97} - - Call it something like, - "Initialize the new branch for release." - Cause = internal_enhancement. - Exempt it from all tests (*_exempt = true). - - ae_p scons.0.{97} - - aedb 100 - - aecd - - # Change the hard-coded package version numbers - # in the following files. - aecp README - vi README - - aecp SConstruct - vi SConstruct - - aecp QMTest/TestSCons.py - vi QMTest/TestSCons.py - - # Read through and update the README files if necessary - [optional] aecp README - [optional] vi README - - [optional] aecp src/README.txt - [optional] vi src/README.txt - - # Prepare src/CHANGES.txt - aecp src/CHANGES.txt - vi src/CHANGES.txt - - date -R the latest release - - should be current if this has been updated - as each change went in. - - # Prepare src/RELEASE.txt - aecp src/RELEASE.txt - vi src/RELEASE.txt - - date -R the latest release - - Read through and edit appropriately. - - Can probably keep most of the existing text - - Add any new known problems - - # Prepare debian/changelog - aecp debian/changelog - vi debian/changelog - - date -R the latest release - - # Now build and prepare the release itself. - aeb - - aed - - aet -reg - - aede - - etc. - - - - Read through the FAQ for any updates - - - - Upload the packages to the SourceForge incoming FTP: - - ftp upload.sourceforge.net - anonymous - <your email> - cd incoming - bin - put scons-0.{97}-1.noarch.rpm - put scons-0.{97}-1.src.rpm - put scons-0.{97}.tar.gz - put scons-0.{97}.win32.exe - put scons-0.{97}.zip - put scons-local-0.{97}.tar.gz - put scons-local-0.{97}.zip - put scons-src-0.{97}.tar.gz - put scons-src-0.{97}.zip - put scons_0.{97}-1_all.deb - - Create the new release at the SourceForge project page: - - Pull down the "Admin" menu and select "File Releases" - - Package Name: scons - - => Add Release - - New release name: 0.{97} - - Upload the RELEASE.txt file. - - Upload the CHANGES.txt file. - - Check the "Preserve my pre-formatted text." box (IMPORTANT!) - - Click "Submit/Refresh" (IMPORTANT!) - - Check the SCons files you uploaded - - Click "Add Files and/or Refresh View" - - Edit the file info: - - scons-0.{97}-1.noarch.rpm Any .rpm - scons-0.{97}-1.src.rpm Any Source .rpm - scons-0.{97}.tar.gz Any .gz - scons-0.{97}.win32.exe i386 .exe (32-bit Windows) - scons-0.{97}.zip Any .zip - scons_0.{97}-1_all.deb Any .deb - - Click "Update/Refresh" for each file; this must be done - one at a time. - - Check "I'm sure." and click "Send Notice" in the Email - Release Notice section. - - - Pull down the "Admin" menu and select "File Releases" - - Package Name: scons-local - - => Add Release - - New release name: 0.{97} - - Upload the RELEASE.txt file. - - Upload the CHANGES.txt file. - - Check the "Preserve my pre-formatted text." box (IMPORTANT!) - - Click "Submit/Refresh" (IMPORTANT!) - - Check the SCons files you uploaded - - Click "Add Files and/or Refresh View" - - Edit the file info: - - scons-local-0.{97}.tar.gz Any .gz - scons-local-0.{97}.zip Any .zip - - Click "Update/Refresh" for each file; this must be done - one at a time. - - Check "I'm sure." and click "Send Notice" in the Email - Release Notice section. - - - Pull down the "Admin" menu and select "File Releases" - - Package Name: scons-src - - => Add Release - - New release name: 0.{97} - - Upload the RELEASE.txt file. - - Upload the CHANGES.txt file. - - Check the "Preserve my pre-formatted text." box (IMPORTANT!) - - Click "Submit/Refresh" (IMPORTANT!) - - Check the SCons files you uploaded - - Click "Add Files and/or Refresh View" - - Edit the file info: - - scons-src-0.{97}.tar.gz Any .gz - scons-src-0.{97}.zip Any .zip - - Click "Update/Refresh" for each file; this must be done - one at a time. - - Check "I'm sure." and click "Send Notice" in the Email - Release Notice section. - - - Hide release 0.{95} at the SourceForge download page: - - Pull down the "Admin" menu and select "File Releases" - - Package Name: scons - - => Edit Releases - - Release Name: 0.{95} - - => Edit This Release - - Status: => Hidden - - Click Submit/Refresh - - - Pull down the "Admin" menu and select "File Releases" - - Package Name: scons-local - - => Edit Releases - - Release Name: 0.{95} - - => Edit This Release - - Status: => Hidden - - Click Submit/Refresh - - - Pull down the "Admin" menu and select "File Releases" - - Package Name: scons-src - - => Edit Releases - - Release Name: 0.{95} - - => Edit This Release - - Status: => Hidden - - Click Submit/Refresh - - - - Add a new release for 0.{97} in the Issue Tracker at tigris.org: - - Click "Issue Tracker" on the left-hand nav bar - - Click "Configuration options" - - Click "Add/edit components" - - Under "scons" - To the right of "Add ..." - Click "Version" - - At the bottom of the list click "Add" - - Fill in the "Version:" box with 0.{97} - - Check "Add this version to *all* components." - - Click the "Add" button - - - - Update the scons.org web site: - - svn co http://scons.tigris.org/svn/scons/scons.org - - cd scons.org - - CHANGES.txt: copy new version from built source tree - - download.php: new version number - - includes/templates.php: - update $latestrelease - - includes/versions.php: - update $stablerelease and/or $latestrelease - add new version number to $docversions[], - IMPORTANT: SHIFT $docversions[] INDEX NUMBERS :-( - - index.php: announcement on the home page - remove out-of-date announcements - - news-raw.xhtml: add announcement to list (dup from home page) - - RELEASE.txt: copy new version from built source tree - - mkdir doc/0.{97} - - (cd doc/0.{97} && tar zxf scons-doc-0.{97}.tar.gz) - - svn add doc/0.{97} - - svn commit - - ssh -l scons manam.pair.com - - cd public_html - - mkdir new - - svn co http://scons.tigris.org/svn/scons/scons.org new - - mv production previous && mv new production - - [point your browser to http://www.scons.org/] - - - Update the project pages at tigris.org: - - svn co http://scons.tigris.org/svn/scons/trunk - - cd trunk - - www/project_highlights.html - - www/roadmap.html - - svn commit - - - - - Test downloading from the SourceForge project page - - You may need to wait a good bit; they seem to update - this on half-hour cycles. - - - Test downloading from the web site download page - - - - 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): - - scons-announce@lists.sourceforge.net - scons-users@lists.sourceforge.net - scons-devel@lists.sourceforge.net - - [right away] - - python-announce@python.org - - [right away, it's moderated and will take - some time to get through] - - linux-announce@news.ornl.gov - - [right away, it's moderated and will take - some time to get through] - - [optional] cons-discuss@gnu.org - - [only if it's a really big announcement, - I said we wouldn't bug this list] - - python-list@python.org - - [wait until business hours so the announcement - hits mailboxes while U.S. workers are active] - - Notify Gentoo Linux of the update - - For now, we will do this by entering a bug report, and - attaching the files in build/gentoo to the report. Go - to: - - http://bugs.gentoo.org/ - - This requires an account (based on your email address) - and a certain amount of Bugzilla-based navigation, - but nothing that's too difficult. - - This is just my best stab at a process that will work - for Gentoo. This process may change if the Gentoo - developers come back and want something submitted in - some other form. - - Notify www.cmtoday.com/contribute.html - - [This guy wants an announcement no more frequently than - once a month, so save it for a future release if it's - been too soon since the previous one.] - - Notify freshmeat.net - - [Wait until the morning so the announcement hits the - main freshmeat.net page while people in the U.S. are - awake and working] - - - - Checkin another change to prepare for development on this branch. - - # Prep the following files to track the changes - # made during the next development cycle - aecp src/CHANGES.txt src/RELEASE.txt - vi src/CHANGES.txt src/RELEASE.txt - - # Optionally, update release numbers in the following: - [optional] aecp HOWTO/change.txt - [optional] vi HOWTO/change.txt - - [optional] aecp HOWTO/release.txt - [optional] vi HOWTO/release.txt - - - - -======================= -Template describe-the-release section: - -IMPORTANT: Release 0.95 contains the following interface changes: - - - XXX - - See the release notes for more information about these changes. - -This release adds the following features: - - - XXX - -This release enhances the following existing features: - - - XXX - -The following fixes have been added: - - - XXX - -Performance has been improved as follows: - - - XXX - -The following changes have been made to the SCons packaging: - - - XXX - -The documentation has been improved: - - - XXX -======================= -Template scons-devel announcement: - -SConspirators-- - -SCons beta release 0.95 is now available for download. - -XXX Template describe-the-release section goes here XXX - -Special thanks to XXX, XXX, and XXX for their contributions to this -release. - - --SK -======================= -Template scons-users + scons-announce announcement: - -Version 0.95 of SCons has been released and is available for download -from the SCons web site: - - http://www.scons.org/ - -Or through the download link at the SCons project page at SourceForge: - - http://sourceforge.net/projects/scons/ - -RPM and Debian packages and a Win32 installer are all available, in -addition to the traditional .tar.gz and .zip files. - - -WHAT'S NEW IN THIS RELEASE? - -XXX Template describe-the-release section goes here XXX - - -ACKNOWLEDGEMENTS - -Special thanks to XXX, XXX, and XXX for their contributions to this -release. - -On behalf of the SCons team, - - --SK -======================= -Template python-announce, linux-announce and python-list announcement: - -SCons is a software construction tool (build tool, or make tool) written -in Python. It is based on the design which won the Software Carpentry -build tool competition in August 2000. - -Version 0.95 of SCons has been released and is available for download -from the SCons web site: - - http://www.scons.org/ - -Or through the download link at the SCons project page at SourceForge: - - http://sourceforge.net/projects/scons/ - -RPM and Debian packages and a Win32 installer are all available, in -addition to the traditional .tar.gz and .zip files. - - -WHAT'S NEW IN THIS RELEASE? - -XXX Template describe-the-release section goes here XXX - - -ABOUT SCONS - -Distinctive features of SCons include: - - - a global view of all dependencies; no multiple passes to get - everything built properly - - configuration files are Python scripts, allowing the full use of a - real scripting language to solve difficult build problems - - a modular architecture allows the SCons Build Engine to be - embedded in other Python software - - the ability to scan files for implicit dependencies (#include files); - - improved parallel build (-j) support that provides consistent - build speedup regardless of source tree layout - - use of MD5 signatures to decide if a file has really changed; no - need to "touch" files to fool make that something is up-to-date - - easily extensible through user-defined Builder and Scanner objects - - build actions can be Python code, as well as external commands - -An scons-users mailing list is available for those interested in getting -started using SCons. You can subscribe at: - - http://lists.sourceforge.net/lists/listinfo/scons-users - -Alternatively, we invite you to subscribe to the low-volume -scons-announce mailing list to receive notification when new versions of -SCons become available: - - http://lists.sourceforge.net/lists/listinfo/scons-announce - - -ACKNOWLEDGEMENTS - -Special thanks to XXX, XXX, and XXX for their contributions to this -release. - -On behalf of the SCons team, - - --SK @@ -132,7 +132,7 @@ python_ver = sys.version[0:3] # for the doc toolchain. # addpaths = [os.path.abspath(os.path.join(os.getcwd(), 'bin')), - os.path.abspath(os.path.join(os.getcwd(), 'QMTest'))] + os.path.abspath(os.path.join(os.getcwd(), 'testing/framework'))] for a in addpaths: if a not in sys.path: sys.path.append(a) @@ -634,7 +634,7 @@ for p in [ scons ]: # Run setup.py in the unpacked subdirectory to "install" everything # into our build/test subdirectory. The runtest.py script will set # PYTHONPATH so that the tests only look under build/test-{package}, - # and under QMTest (for the testing modules TestCmd.py, TestSCons.py, + # and under testing/framework (for the testing modules TestCmd.py, TestSCons.py, # etc.). This makes sure that our tests pass with what # we really packaged, not because of something hanging around in # the development directory. @@ -704,7 +704,7 @@ for p in [ scons ]: # Run setup.py in the unpacked subdirectory to "install" everything # into our build/test subdirectory. The runtest.py script will set # PYTHONPATH so that the tests only look under build/test-{package}, - # and under QMTest (for the testing modules TestCmd.py, TestSCons.py, + # and under testing/framework (for the testing modules TestCmd.py, TestSCons.py, # etc.). This makes sure that our tests pass with what # we really packaged, not because of something hanging around in # the development directory. @@ -825,7 +825,7 @@ for p in [ scons ]: # Export('build_dir', 'env') -SConscript('QMTest/SConscript') +SConscript('testing/SConscript') # # @@ -926,7 +926,7 @@ if sfiles: # Run setup.py in the unpacked subdirectory to "install" everything # into our build/test subdirectory. The runtest.py script will set # PYTHONPATH so that the tests only look under build/test-{package}, - # and under QMTest (for the testing modules TestCmd.py, + # and under testing/framework (for the testing modules TestCmd.py, # TestSCons.py, etc.). This makes sure that our tests pass with # what we really packaged, not because of something hanging around # in the development directory. @@ -980,7 +980,7 @@ if sfiles: # Run setup.py in the unpacked subdirectory to "install" everything # into our build/test subdirectory. The runtest.py script will set # PYTHONPATH so that the tests only look under build/test-{package}, - # and under QMTest (for the testing modules TestCmd.py, + # and under testing/framework (for the testing modules TestCmd.py, # TestSCons.py, etc.). This makes sure that our tests pass with # what we really packaged, not because of something hanging # around in the development directory. @@ -1018,7 +1018,7 @@ if sfiles: 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, 'testing/framework'), os.path.join(build_dir, 'runtest.py'), ]) diff --git a/bin/SConsExamples.py b/bin/SConsExamples.py index a2ed570..7491c58 100644 --- a/bin/SConsExamples.py +++ b/bin/SConsExamples.py @@ -416,8 +416,8 @@ def exampleNamesAreUnique(dpath): # # ############################################################### -sys.path.append(os.path.join(os.getcwd(), 'QMTest')) -sys.path.append(os.path.join(os.getcwd(), 'build', 'QMTest')) +sys.path.append(os.path.join(os.getcwd(), 'testing/framework')) +sys.path.append(os.path.join(os.getcwd(), 'build', 'testing/framework')) scons_py = os.path.join('bootstrap', 'src', 'script', 'scons.py') if not os.path.exists(scons_py): diff --git a/bin/scons-cdist b/bin/scons-cdist deleted file mode 100644 index 58b1bae..0000000 --- a/bin/scons-cdist +++ /dev/null @@ -1,272 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2005 The SCons Foundation -# -# 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. - -PROG=`basename $0` -NOARGFLAGS="afhlnqrstz" -ARGFLAGS="p:" -ALLFLAGS="${NOARGFLAGS}${ARGFLAGS}" -USAGE="Usage: ${PROG} [-${NOARGFLAGS}] [-p project] change" - -HELP="$USAGE - - -a Update the latest Aegis baseline (aedist) file. - -f Force update, skipping up-front sanity check. - -h Print this help message and exit. - -l Update the local CVS repository. - -n Don't execute, just echo commands. - -p project Set the Aegis project. - -q Quiet, don't print commands before executing them. - -r Rsync the Aegis repository to SourceForge. - -s Update the sourceforge.net CVS repository. - -t Update the tigris.org CVS repository. - -z Update the latest .tar.gz and .zip files. -" - -DO="" -PRINT="echo" -EXECUTE="eval" -SANITY_CHECK="yes" - -while getopts $ALLFLAGS FLAG; do - case $FLAG in - a | l | r | s | t | z ) - DO="${DO}${FLAG}" - ;; - f ) - SANITY_CHECK="no" - ;; - h ) - echo "${HELP}" - exit 0 - ;; - n ) - EXECUTE=":" - ;; - p ) - AEGIS_PROJECT="${OPTARG}" - ;; - q ) - PRINT=":" - ;; - * ) - echo "FLAG = ${FLAG}" >&2 - echo "${USAGE}" >&2 - exit 1 - ;; - esac -done - -shift `expr ${OPTIND} - 1` - -if test "X$1" = "X"; then - echo "${USAGE}" >&2 - exit 1 -fi - -if test "X${AEGIS_PROJECT}" = "X"; then - echo "$PROG: No AEGIS_PROJECT set." >&2 - echo "${USAGE}" >&2 - exit 1 -fi - -if test "X$DO" = "X"; then - DO="alrstz" -fi - -cmd() -{ - $PRINT "$*" - $EXECUTE "$*" -} - -CHANGE=$1 - -if test "X${SANITY_CHECK}" = "Xyes"; then - SCM="cvs" - SCMROOT="/home/scons/CVSROOT/scons" - DELTA=`aegis -l -ter cd ${CHANGE} | sed -n 's/.*, Delta \([0-9]*\)\./\1/p'` - if test "x${DELTA}" = "x"; then - echo "${PROG}: Could not find delta for change ${CHANGE}." >&2 - echo "Has this finished integrating? Change ${CHANGE} not distributed." >&2 - exit 1 - fi - PREV_DELTA=`expr ${DELTA} - 1` - COMMAND="scons-scmcheck -D ${PREV_DELTA} -d q -p ${AEGIS_PROJECT} -s ${SCM} ${SCMROOT}" - $PRINT "${COMMAND}" - OUTPUT=`${COMMAND}` - if test "X${OUTPUT}" != "X"; then - echo "${PROG}: ${SCMROOT} is not up to date:" >&2 - echo "${OUTPUT}" >& 2 - echo "Did you skip any changes? Change ${CHANGE} not distributed." >&2 - exit 1 - fi -fi - -if test X$EXECUTE != "X:" -a "X$SSH_AGENT_PID" = "X"; then - eval `ssh-agent` - ssh-add - trap 'eval `ssh-agent -k`; exit' 0 1 2 3 15 -fi - -cd - -BASELINE=`aesub -p ${AEGIS_PROJECT} -c ${CHANGE} '${Project trunk_name}'` - -TMPBLAE="/tmp/${BASELINE}.ae" -TMPCAE="/tmp/${AEGIS_PROJECT}.C${CHANGE}.ae" - -# Original values for SourceForge. -#SFLOGIN="stevenknight" -#SFHOST="scons.sourceforge.net" -#SFDEST="/home/groups/s/sc/scons/htdocs" - -SCONSLOGIN="scons" -SCONSHOST="manam.pair.com" -#SCONSDEST="public_html/production" -SCONSDEST="public_ftp" - -# -# Copy the baseline .ae to the constant location on SourceForge. -# -case "${DO}" in -*a* ) - cmd "aedist -s -bl -p ${AEGIS_PROJECT} > ${TMPBLAE}" - cmd "scp ${TMPBLAE} ${SCONSLOGIN}@${SCONSHOST}:${SCONSDEST}/${BASELINE}.ae" - cmd "rm ${TMPBLAE}" - ;; -esac - -# -# Copy the latest .tar.gz and .zip files to the constant location on -# SourceForge. -# -case "${DO}" in -*z* ) - BUILD_DIST=`aegis -p ${AEGIS_PROJECT} -cd -bl`/build/dist - SCONS_SRC_TAR_GZ=`echo ${AEGIS_PROJECT} | sed 's/scons./scons-src-/'`*.tar.gz - SCONS_SRC_ZIP=`echo ${AEGIS_PROJECT} | sed 's/scons./scons-src-/'`*.zip - cmd "scp ${BUILD_DIST}/${SCONS_SRC_TAR_GZ} ${SCONSLOGIN}@${SCONSHOST}:${SCONSDEST}/scons-src-latest.tar.gz" - cmd "scp ${BUILD_DIST}/${SCONS_SRC_ZIP} ${SCONSLOGIN}@${SCONSHOST}:${SCONSDEST}/scons-src-latest.zip" -esac - -# -# Sync Aegis tree with SourceForge. -# -# Cribbed and modified from Peter Miller's same-named script in -# /home/groups/a/ae/aegis/aegis at SourceForge. -# -# Guide to what this does with rsync: -# -# --rsh=ssh use ssh for the transfer -# -l copy symlinks as symlinks -# -p preserve permissions -# -r recursive -# -t preserve times -# -z compress data -# --stats file transfer statistics -# --exclude exclude files matching the pattern -# --delete delete files that don't exist locally -# --delete-excluded delete files that match the --exclude patterns -# --progress show progress during the transfer -# -v verbose -# -# We no longer use the --stats option. -# -case "${DO}" in -*r* ) - LOCAL=/home/scons/scons - REMOTE=/home/groups/s/sc/scons/scons - cmd "/usr/bin/rsync --rsh='ssh -l stevenknight' \ - -l -p -r -t -z \ - --exclude build \ - --exclude '*,D' \ - --exclude '*.pyc' \ - --exclude aegis.log \ - --exclude '.sconsign*' \ - --delete --delete-excluded \ - --progress -v \ - ${LOCAL}/. scons.sourceforge.net:${REMOTE}/." - ;; -esac - -# -# Sync the CVS tree with the local repository. -# -case "${DO}" in -*l* ) - ( - export CVSROOT=/home/scons/CVSROOT/scons - #cmd "ae2cvs -X -aegis -p ${AEGIS_PROJECT} -c ${CHANGE} -u $HOME/SCons/baldmt.com/scons" - cmd "ae-cvs-ci ${AEGIS_PROJECT} ${CHANGE}" - ) - ;; -esac - -# -# Sync the Subversion tree with Tigris.org. -# -case "${DO}" in -*t* ) - ( - SVN=http://scons.tigris.org/svn/scons - case ${AEGIS_PROJECT} in - scons.0.96 ) - SVN_URL=${SVN}/branches/core - ;; - scons.0.96.513 ) - SVN_URL=${SVN}/branches/sigrefactor - ;; - * ) - echo "$PROG: Don't know SVN branch for '${AEGIS_PROJECT}'" >&2 - exit 1 - ;; - esac - SVN_CO_FLAGS="--username stevenknight" - #cmd "ae2cvs -X -aegis -p ${AEGIS_PROJECT} -c ${CHANGE} -u $HOME/SCons/tigris.org/scons" - cmd "ae-svn-ci ${AEGIS_PROJECT} ${CHANGE} ${SVN_URL} ${SVN_CO_FLAGS}" - ) - ;; -esac - -# -# Sync the CVS tree with SourceForge. -# -case "${DO}" in -*s* ) - ( - export CVS_RSH=ssh - export CVSROOT=:ext:stevenknight@scons.cvs.sourceforge.net:/cvsroot/scons - #cmd "ae2cvs -X -aegis -p ${AEGIS_PROJECT} -c ${CHANGE} -u $HOME/SCons/sourceforge.net/scons" - cmd "ae-cvs-ci ${AEGIS_PROJECT} ${CHANGE}" - ) - ;; -esac - -# -# Send the change .ae to the scons-aedist mailing list -# -# The subject requires editing by hand... -# -#aedist -s -p ${AEGIS_PROJECT} ${CHANGE} > ${TMPCAE} -#aegis -l -p ${AEGIS_PROJECT} -c ${CHANGE} cd | -# pine -attach_and_delete ${TMPCAE} scons-aedist@lists.sourceforge.net diff --git a/bin/time-scons.py b/bin/time-scons.py index b7d8ef1..c5cd0cc 100644 --- a/bin/time-scons.py +++ b/bin/time-scons.py @@ -43,7 +43,7 @@ TimeSCons_revision = 4569 # The pieces of the TimeSCons infrastructure that are necessary to # produce consistent timings, even when the rest of the tree is from # an earlier revision that doesn't have these pieces. -TimeSCons_pieces = ['QMTest', 'timings', 'runtest.py'] +TimeSCons_pieces = ['testing/framework', 'timings', 'runtest.py'] class CommandRunner(object): diff --git a/bin/update-release-info.py b/bin/update-release-info.py index 81e0df5..5b871cb 100644 --- a/bin/update-release-info.py +++ b/bin/update-release-info.py @@ -20,10 +20,10 @@ in various files: - The RELEASE header line in src/CHANGES.txt and src/Announce.txt. - The version string at the top of src/RELEASE.txt. - The version string in the 'default_version' variable in SConstruct - and QMTest/TestSCons.py. - - The copyright years in SConstruct and QMTest/TestSCons.py. + and testing/framework/TestSCons.py. + - The copyright years in SConstruct and testing/framework/TestSCons.py. - The month and year (used for documentation) in SConstruct. - - The unsupported and deprecated Python floors in QMTest/TestSCons.py + - The unsupported and deprecated Python floors in testing/framework/TestSCons.py and src/engine/SCons/Script/Main.py - The version string in the filenames in README. @@ -315,9 +315,9 @@ for suf in ['tar', 'win32', 'zip', 'rpm', 'exe', 'deb']: '-%s.%s' % (version_string, suf), count = 0) -# Update QMTest/TestSCons.py +# Update testing/framework/TestSCons.py -t = UpdateFile(os.path.join('QMTest', 'TestSCons.py')) +t = UpdateFile(os.path.join('testing','framework', 'TestSCons.py')) if DEBUG: t.file = '/tmp/TestSCons.py' t.replace_assign('copyright_years', repr(copyright_years)) t.replace_assign('default_version', repr(version_string)) diff --git a/bin/xmlagenda.py b/bin/xmlagenda.py index fcfe53e..7091ee5 100755 --- a/bin/xmlagenda.py +++ b/bin/xmlagenda.py @@ -1,7 +1,9 @@ #!/usr/bin/env python -# Query the scons.tigris.org database for the issues of interest. -# The typical triage query is found on http://www.scons.org/wiki/BugParty +# Query gihub issue tracker for the issues of interest. +# The typical triage query is found on +# https://github.com/scons/scons/wiki/BugParty +# FIXME: this needs reworking for github, and wiki needs updating # Download the issues from Issuezilla as XML; this creates a file # named 'issues.xml'. Run this script in the dir containing diff --git a/doc/design/native.xml b/doc/design/native.xml index cd4edaf..0ea4074 100644 --- a/doc/design/native.xml +++ b/doc/design/native.xml @@ -64,8 +64,9 @@ <para> By default, the &SCons; utility searches for a file named - &SConstruct;, &Sconstruct; or &sconstruct; (in that order) in the - current directory, and reads its configuration from the first file + &SConstruct;, &Sconstruct;, &sconstruct;, &SConstruct.py;, &Sconstruct.py; + or &sconstruct.py; (in that order) in the current directory, + and reads its configuration from the first file found. A <option>-f</option> command-line option exists to read a different file name. diff --git a/doc/man/scons.xml b/doc/man/scons.xml index 03a3478..abbed4f 100644 --- a/doc/man/scons.xml +++ b/doc/man/scons.xml @@ -105,8 +105,11 @@ rebuild them.</para> searches for a file named <emphasis>SConstruct</emphasis>, <emphasis>Sconstruct</emphasis>, +<emphasis>sconstruct</emphasis>, +<emphasis>SConstruct.py</emphasis> +<emphasis>Sconstruct.py</emphasis> or -<emphasis>sconstruct</emphasis> +<emphasis>sconstruct.py</emphasis> (in that order) in the current directory and reads its configuration from the first file found. An alternate file name may be @@ -635,8 +638,11 @@ yet have any results in the cache.</para> before searching for the <emphasis>SConstruct</emphasis>, <emphasis>Sconstruct</emphasis>, +<emphasis>sconstruct</emphasis>, +<emphasis>SConstruct.py</emphasis> +<emphasis>Sconstruct.py</emphasis> or -<emphasis>sconstruct</emphasis> +<emphasis>sconstruct.py</emphasis> file, or doing anything else. Multiple <option>-C</option> @@ -649,8 +655,11 @@ equivalent to except that it will search for <emphasis>SConstruct</emphasis>, <emphasis>Sconstruct</emphasis>, +<emphasis>sconstruct</emphasis>, +<emphasis>SConstruct.py</emphasis> +<emphasis>Sconstruct.py</emphasis> or -<emphasis>sconstruct</emphasis> +<emphasis>sconstruct.py</emphasis> in the specified directory.)</para> <!-- .TP --> @@ -1658,9 +1667,12 @@ scons --tree=all,prune,status target <listitem> <para>Walks up the directory structure until an <emphasis>SConstruct ,</emphasis> -<emphasis>Sconstruct</emphasis> +<emphasis>Sconstruct ,</emphasis> +<emphasis>sconstruct ,</emphasis> +<emphasis>SConstruct.py</emphasis> +<emphasis>Sconstruct.py</emphasis> or -<emphasis>sconstruct</emphasis> +<emphasis>sconstruct.py</emphasis> file is found, and uses that as the top of the directory tree. If no targets are specified on the command line, diff --git a/doc/scons.mod b/doc/scons.mod index 448a212..974ec02 100644 --- a/doc/scons.mod +++ b/doc/scons.mod @@ -137,6 +137,9 @@ <!ENTITY SConstruct "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>SConstruct</filename>"> <!ENTITY Sconstruct "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>Sconstruct</filename>"> <!ENTITY sconstruct "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>sconstruct</filename>"> +<!ENTITY SConstruct.py "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>SConstruct.py</filename>"> +<!ENTITY Sconstruct.py "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>Sconstruct.py</filename>"> +<!ENTITY sconstruct.py "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>sconstruct.py</filename>"> <!ENTITY sconsign "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>.sconsign</filename>"> <!ENTITY src "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>src</filename>"> @@ -8,9 +8,9 @@ # # - unit tests - included in *Tests.py files from src/ dir # - end-to-end tests - these are *.py files in test/ directory that -# require custom SCons framework from QMTest/ +# require custom SCons framework from testing/ # -# This script adds src/ and QMTest/ directories to PYTHONPATH, +# This script adds src/ and testing/ directories to PYTHONPATH, # performs test discovery and processes them according to options. # # With -p (--package) option, script tests specified package from @@ -625,10 +625,8 @@ old_pythonpath = os.environ.get('PYTHONPATH') # should be able to go away. pythonpaths = [ pythonpath_dir ] -# Add path of the QMTest folder to PYTHONPATH -# [ ] move used parts from QMTest to testing/framework/ scriptpath = os.path.dirname(os.path.realpath(__file__)) -pythonpaths.append(os.path.join(scriptpath, 'QMTest')) + # Add path for testing framework to PYTHONPATH pythonpaths.append(os.path.join(scriptpath, 'testing', 'framework')) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index dccf61e..8cd8975 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -7,6 +7,17 @@ RELEASE 3.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE + From Philipp Maierhöfer + - Added a __hash__ method to the class Scons.Subst.Literal. Required when substituting Literal + objects when SCons runs with Python 3. + + From Richard West: + - Add SConstruct.py, Sconstruct.py, sconstruct.py to the search path for the root SConstruct file. + Allows easier debugging within Visual Studio + + From Bernard Blackham: + - Fixed handling of side-effects in task master (fixes #3013). + From Daniel Moody: - Updated gettext tools to setup default paths for windows with Cygwin/MinGW setups - Add common location for default paths for cygwin and mingw in Platform modules @@ -28,6 +39,11 @@ RELEASE 3.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE From William Deegan: - Remove long deprecated SCons.Options code and tests. This removes BoolOption,EnumOption, ListOption,PackageOption, and PathOption which have been replaced by *Variable() many years ago. + - Fix issue # 3106 MSVC if using MSVC_BATCH and target dir had a space would fail due to quirk in + MSVC's handling of escaped targetdirs when batch compiling. + - Re-Enable parallel SCons (-j) when running via Pypy + - Move SCons test framework files to testing/framework and remove all references to QMtest. + QMTest has not been used by SCons for some time now. From Andrew Featherstone - Removed unused --warn options from the man page and source code. @@ -50,13 +66,21 @@ RELEASE 3.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE From Mats Wichmann: - Updated manpage scons.xml to fix a nested list problem - - Updated doc terminionly: use prepend instead of append as appropriate + - Updated doc terminiology: use prepend instead of append as appropriate + - xml validity fixes from SConstruct.py change + - update wiki links to new github location + - update bug links to new github location From Jonathon Reinhart: - Replace all instances of `int main()` in C code with `int main(void)`. Specifically, this fixes the test cases use by Configure.CheckCC() which would fail when using -Wstrict-prototypes. + From Fredrik Medley: + - Fix exception when printing of EnviromentError messages. + Specifically, this fixes error reporting of the race condition when + initializing the cache which error previously was hidden. + RELEASE 3.0.1 - Mon, 12 Nov 2017 15:31:33 -0700 diff --git a/src/engine/SCons/Errors.py b/src/engine/SCons/Errors.py index dae20b2..3746d5d 100644 --- a/src/engine/SCons/Errors.py +++ b/src/engine/SCons/Errors.py @@ -190,14 +190,13 @@ def convert_to_BuildError(status, exc_info=None): # error, which might be different from the target being built # (for example, failure to create the directory in which the # target file will appear). - try: - filename = status.filename - except AttributeError: - filename = None + filename = getattr(status, 'filename', None) + strerror = getattr(status, 'strerror', str(status)) + errno = getattr(status, 'errno', 2) buildError = BuildError( - errstr=status.strerror, - status=status.errno, + errstr=strerror, + status=errno, exitstatus=2, filename=filename, exc_info=exc_info) diff --git a/src/engine/SCons/ErrorsTests.py b/src/engine/SCons/ErrorsTests.py index c38158d..7819580 100644 --- a/src/engine/SCons/ErrorsTests.py +++ b/src/engine/SCons/ErrorsTests.py @@ -23,6 +23,8 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" +import errno +import os import sys import unittest @@ -100,6 +102,29 @@ class ErrorsTestCase(unittest.TestCase): except SCons.Errors.ExplicitExit as e: assert e.node == "node" + def test_convert_EnvironmentError_to_BuildError(self): + """Test the convert_to_BuildError function on EnvironmentError + exceptions. + """ + ee = SCons.Errors.EnvironmentError("test env error") + be = SCons.Errors.convert_to_BuildError(ee) + assert be.errstr == "test env error" + assert be.status == 2 + assert be.exitstatus == 2 + assert be.filename is None + + def test_convert_OSError_to_BuildError(self): + """Test the convert_to_BuildError function on OSError + exceptions. + """ + ose = OSError(7, 'test oserror') + be = SCons.Errors.convert_to_BuildError(ose) + assert be.errstr == 'test oserror' + assert be.status == 7 + assert be.exitstatus == 2 + assert be.filename is None + + if __name__ == "__main__": suite = unittest.makeSuite(ErrorsTestCase, 'test_') TestUnit.run(suite) diff --git a/src/engine/SCons/Platform/win32.py b/src/engine/SCons/Platform/win32.py index 0e9e01f..5c877b5 100644 --- a/src/engine/SCons/Platform/win32.py +++ b/src/engine/SCons/Platform/win32.py @@ -132,7 +132,7 @@ try: # Without this, python can randomly crash while using -jN. # See the python bug at http://bugs.python.org/issue6476 # and SCons issue at - # http://scons.tigris.org/issues/show_bug.cgi?id=2449 + # https://github.com/SCons/scons/issues/2449 def spawnve(mode, file, args, env): spawn_lock.acquire() try: diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index c810634..923ef1e 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -48,6 +48,7 @@ import sys import time import traceback import sysconfig +import platform import SCons.CacheDir import SCons.Debug @@ -622,7 +623,7 @@ def _SConstruct_exists(dirname='', repositories=[], filelist=None): current directory. """ if not filelist: - filelist = ['SConstruct', 'Sconstruct', 'sconstruct'] + filelist = ['SConstruct', 'Sconstruct', 'sconstruct', 'SConstruct.py', 'Sconstruct.py', 'sconstruct.py'] for file in filelist: sfile = os.path.join(dirname, file) if os.path.isfile(sfile): @@ -1253,7 +1254,8 @@ def _build_targets(fs, options, targets, target_top): BuildTask.options = options - python_has_threads = sysconfig.get_config_var('WITH_THREAD') + is_pypy = platform.python_implementation() == 'PyPy' + python_has_threads = sysconfig.get_config_var('WITH_THREAD') or is_pypy # to check if python configured with threads. global num_jobs num_jobs = options.num_jobs diff --git a/src/engine/SCons/Subst.py b/src/engine/SCons/Subst.py index 68d247f..0b4190b 100644 --- a/src/engine/SCons/Subst.py +++ b/src/engine/SCons/Subst.py @@ -86,6 +86,9 @@ class Literal(object): def __neq__(self, other): return not self.__eq__(other) + def __hash__(self): + return hash(self.lstr) + class SpecialAttrWrapper(object): """This is a wrapper for what we call a 'Node special attribute.' This is any of the attributes of a Node that we can reference from diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index 17507a6..1522ca2 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -470,14 +470,23 @@ class Task(object): pending_children.discard(t) for p in t.waiting_parents: parents[p] = parents.get(p, 0) + 1 + t.waiting_parents = set() for t in targets: if t.side_effects is not None: for s in t.side_effects: if s.get_state() == NODE_EXECUTING: s.set_state(NODE_NO_STATE) + + # The side-effects may have been transferred to + # NODE_NO_STATE by executed_with{,out}_callbacks, but was + # not taken out of the waiting parents/pending children + # data structures. Check for that now. + if s.get_state() == NODE_NO_STATE and s.waiting_parents: + pending_children.discard(s) for p in s.waiting_parents: parents[p] = parents.get(p, 0) + 1 + s.waiting_parents = set() for p in s.waiting_s_e: if p.ref_count == 0: self.tm.candidates.append(p) diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py index 8b13f9f..dfb9e33 100644 --- a/src/engine/SCons/Tool/JavaCommon.py +++ b/src/engine/SCons/Tool/JavaCommon.py @@ -245,7 +245,7 @@ if java_parsing: # If that's an inner class which is declared in a method, it # requires an index prepended to the class-name, e.g. # 'Foo$1Inner' - # http://scons.tigris.org/issues/show_bug.cgi?id=2087 + # https://github.com/SCons/scons/issues/2087 if self.outer_state.localClasses and \ self.outer_state.stackBrackets[-1] > \ self.outer_state.stackBrackets[-2]+1: diff --git a/src/engine/SCons/Tool/MSCommon/arch.py b/src/engine/SCons/Tool/MSCommon/arch.py index 9bcc221..ad17959 100644 --- a/src/engine/SCons/Tool/MSCommon/arch.py +++ b/src/engine/SCons/Tool/MSCommon/arch.py @@ -37,22 +37,22 @@ class ArchDefinition(object): self.synonyms = synonyms SupportedArchitectureList = [ - ArchitectureDefinition( + ArchDefinition( 'x86', ['i386', 'i486', 'i586', 'i686'], ), - ArchitectureDefinition( + ArchDefinition( 'x86_64', ['AMD64', 'amd64', 'em64t', 'EM64T', 'x86_64'], ), - ArchitectureDefinition( + ArchDefinition( 'ia64', ['IA64'], ), - ArchitectureDefinition( + ArchDefinition( 'arm', ['ARM'], ), diff --git a/src/engine/SCons/Tool/docbook/docs/manual.xml b/src/engine/SCons/Tool/docbook/docs/manual.xml index c129753..64ee925 100644 --- a/src/engine/SCons/Tool/docbook/docs/manual.xml +++ b/src/engine/SCons/Tool/docbook/docs/manual.xml @@ -67,7 +67,7 @@ package's <literal>docbook</literal> folder to <itemizedlist><listitem><para>the SCons User's Guide, chap. 19.7 "Where to put your custom Builders and Tools" and </para> </listitem> -<listitem><para>the SCons Tools Wiki page at <ulink url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>. +<listitem><para>the SCons Tools Wiki page at <ulink url="https://github.com/SCons/scons/wiki/ToolsIndex">http://github.com/SCons/scons/wiki/ToolsIndex</ulink>. </para> </listitem> </itemizedlist> diff --git a/src/engine/SCons/Tool/jar.py b/src/engine/SCons/Tool/jar.py index 5e3711a..6e319c1 100644 --- a/src/engine/SCons/Tool/jar.py +++ b/src/engine/SCons/Tool/jar.py @@ -140,7 +140,7 @@ def Jar(env, target = None, source = [], *args, **kw): # source for jar, otherwise turn it into a class file then # return the source def file_to_class(s): - if(str(_my_normcase(s)).endswith(java_suffix)): + if _my_normcase(str(s)).endswith(java_suffix): return env.JavaClassFile(source = s, *args, **kw) else: return [env.fs.File(s)] diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py index e1b0536..1412cf7 100644 --- a/src/engine/SCons/Tool/msvc.py +++ b/src/engine/SCons/Tool/msvc.py @@ -112,7 +112,7 @@ def object_emitter(target, source, env, parent_emitter): # # See issue #2505 for a discussion of what to do if it turns # out this assumption causes trouble in the wild: - # http://scons.tigris.org/issues/show_bug.cgi?id=2505 + # https://github.com/SCons/scons/issues/2505 if 'PCH' in env: pch = env['PCH'] if str(target[0]) != SCons.Util.splitext(str(pch))[0] + '.obj': @@ -195,7 +195,10 @@ def msvc_output_flag(target, source, env, for_signature): # that the test(s) for this can be run on non-Windows systems # without having a hard-coded backslash mess up command-line # argument parsing. - return '/Fo${TARGET.dir}' + os.sep + # Adding double os.sep's as if the TARGET.dir has a space or otherwise + # needs to be quoted they are needed per MSVC's odd behavior + # See: https://github.com/SCons/scons/issues/3106 + return '/Fo${TARGET.dir}' + os.sep*2 CAction = SCons.Action.Action("$CCCOM", "$CCCOMSTR", batch_key=msvc_batch_key, diff --git a/src/test_strings.py b/src/test_strings.py index 297d59d..e9f0abf 100644 --- a/src/test_strings.py +++ b/src/test_strings.py @@ -208,12 +208,10 @@ check_list = [ 'doc/user/SCons-win32-install-4.jpg', 'examples', 'gentoo', - 'QMTest/classes.qmc', - 'QMTest/configuration', - 'QMTest/TestCmd.py', - 'QMTest/TestCmdTests.py', - 'QMTest/TestCommon.py', - 'QMTest/TestCommonTests.py', + 'testing/framework/TestCmd.py', + 'testing/framework/TestCmdTests.py', + 'testing/framework/TestCommon.py', + 'testing/framework/TestCommonTests.py', 'src/MANIFEST.in', 'src/setup.cfg', 'src/engine/MANIFEST.in', diff --git a/test/CPPDEFINES/append.py b/test/CPPDEFINES/append.py index 7973f22..874fceb 100644 --- a/test/CPPDEFINES/append.py +++ b/test/CPPDEFINES/append.py @@ -43,7 +43,7 @@ env_1738_2.Append(CPPDEFINES={'value' : '1'}) print(env_1738_2.subst('$_CPPDEFFLAGS')) #env_1738_2.Object('test_1738_2', 'main.c') -# http://scons.tigris.org/issues/show_bug.cgi?id=2300 +# https://github.com/SCons/scons/issues/2300 env_2300_1 = Environment(CPPDEFINES = 'foo', CPPDEFPREFIX='-D') env_2300_1.Append(CPPDEFINES='bar') print(env_2300_1.subst('$_CPPDEFFLAGS')) @@ -52,8 +52,8 @@ env_2300_2 = Environment(CPPDEFINES = ['foo'], CPPDEFPREFIX='-D') # note the lis env_2300_2.Append(CPPDEFINES='bar') print(env_2300_2.subst('$_CPPDEFFLAGS')) -# http://scons.tigris.org/issues/show_bug.cgi?id=1152 -# http://scons.tigris.org/issues/show_bug.cgi?id=2900 +# https://github.com/SCons/scons/issues/1152 +# https://github.com/SCons/scons/issues/2900 # Python3 dicts dont preserve order. Hence we supply subclass of OrderedDict # whose __str__ and __repr__ act like a normal dict. from collections import OrderedDict diff --git a/test/CPPDEFINES/pkg-config.py b/test/CPPDEFINES/pkg-config.py index 42f38b6..4096934 100644 --- a/test/CPPDEFINES/pkg-config.py +++ b/test/CPPDEFINES/pkg-config.py @@ -70,7 +70,7 @@ class OrderedPrintingDict(OrderedDict): def __semi_deepcopy__(self): return self.copy() """ + """ -# http://scons.tigris.org/issues/show_bug.cgi?id=2671 +# https://github.com/SCons/scons/issues/2671 # Passing test cases env_1 = Environment(CPPDEFINES=[('DEBUG','1'), 'TEST']) env_1.ParseConfig('PKG_CONFIG_PATH=. %(pkg_config_path)s --cflags bug') @@ -89,7 +89,7 @@ env_4 = Environment(CPPDEFINES=OrderedPrintingDict([('DEBUG', 1), ('TEST', None) env_4.MergeFlags('-DSOMETHING -DVARIABLE=2') print(env_4.subst('$_CPPDEFFLAGS')) -# http://scons.tigris.org/issues/show_bug.cgi?id=1738 +# https://github.com/SCons/scons/issues/1738 env_1738_1 = Environment(tools=['default']) env_1738_1.ParseConfig('PKG_CONFIG_PATH=. %(pkg_config_path)s --cflags --libs bug') env_1738_1.Append(CPPDEFINES={'value' : '1'}) diff --git a/test/D/Issues/2994/Common/D_changed_DFLAGS_not_rebuilding.py b/test/D/Issues/2994/Common/D_changed_DFLAGS_not_rebuilding.py index 7e69f50..07b1366 100644 --- a/test/D/Issues/2994/Common/D_changed_DFLAGS_not_rebuilding.py +++ b/test/D/Issues/2994/Common/D_changed_DFLAGS_not_rebuilding.py @@ -1,6 +1,6 @@ """ -Test to check for issue reported in tigris bug 2994 -http://scons.tigris.org/issues/show_bug.cgi?id=2994 +Test to check for issue reported in github issue 2994 +https://github.com/SCons/scons/issues/2994 """ # diff --git a/test/D/Support/executablesSearch.py b/test/D/Support/executablesSearch.py index 17d9990..c572f56 100755 --- a/test/D/Support/executablesSearch.py +++ b/test/D/Support/executablesSearch.py @@ -51,7 +51,7 @@ def isExecutableOfToolAvailable(test, tool): if __name__ == '__main__': import unittest - sys.path.append(os.path.abspath('../../../QMTest')) + sys.path.append(os.path.abspath('../../../testing/framework')) import TestSCons diff --git a/test/Depends/no-Builder.py b/test/Depends/no-Builder.py index 48ab724..f55fcf9 100644 --- a/test/Depends/no-Builder.py +++ b/test/Depends/no-Builder.py @@ -40,7 +40,7 @@ file2 = File('file2') env.Depends(file1, [[file2, 'file3']]) # Verify that a "hidden" file created by another action causes the # action to run when an explicit Dependency is specified. -# See http://scons.tigris.org/issues/show_bug.cgi?id=2647 +# https://github.com/SCons/scons/issues/2647 env.Depends('hidden', 'file4.out') env.Command('file4.out', 'file4.in', [Copy('$TARGET', '$SOURCE'), Touch('hidden')]) diff --git a/test/Docbook/basedir/htmlchunked/image/manual.xml b/test/Docbook/basedir/htmlchunked/image/manual.xml index ca12e0e..067c76e 100644 --- a/test/Docbook/basedir/htmlchunked/image/manual.xml +++ b/test/Docbook/basedir/htmlchunked/image/manual.xml @@ -72,7 +72,7 @@ <listitem> <para>the SCons Tools Wiki page at <ulink - url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.</para> + url="https://github.com/SCons/scons/wiki/ToolsIndex">https://github.com/SCons/scons/wiki/ToolsIndex</ulink>.</para> </listitem> </itemizedlist> </section> diff --git a/test/Docbook/basedir/htmlhelp/image/manual.xml b/test/Docbook/basedir/htmlhelp/image/manual.xml index ca12e0e..067c76e 100644 --- a/test/Docbook/basedir/htmlhelp/image/manual.xml +++ b/test/Docbook/basedir/htmlhelp/image/manual.xml @@ -72,7 +72,7 @@ <listitem> <para>the SCons Tools Wiki page at <ulink - url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.</para> + url="https://github.com/SCons/scons/wiki/ToolsIndex">https://github.com/SCons/scons/wiki/ToolsIndex</ulink>.</para> </listitem> </itemizedlist> </section> diff --git a/test/Docbook/basic/epub/image/manual.xml b/test/Docbook/basic/epub/image/manual.xml index ca12e0e..067c76e 100644 --- a/test/Docbook/basic/epub/image/manual.xml +++ b/test/Docbook/basic/epub/image/manual.xml @@ -72,7 +72,7 @@ <listitem> <para>the SCons Tools Wiki page at <ulink - url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.</para> + url="https://github.com/SCons/scons/wiki/ToolsIndex">https://github.com/SCons/scons/wiki/ToolsIndex</ulink>.</para> </listitem> </itemizedlist> </section> diff --git a/test/Docbook/basic/html/image/manual.xml b/test/Docbook/basic/html/image/manual.xml index ca12e0e..067c76e 100644 --- a/test/Docbook/basic/html/image/manual.xml +++ b/test/Docbook/basic/html/image/manual.xml @@ -72,7 +72,7 @@ <listitem> <para>the SCons Tools Wiki page at <ulink - url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.</para> + url="https://github.com/SCons/scons/wiki/ToolsIndex">https://github.com/SCons/scons/wiki/ToolsIndex</ulink>.</para> </listitem> </itemizedlist> </section> diff --git a/test/Docbook/basic/htmlchunked/image/manual.xml b/test/Docbook/basic/htmlchunked/image/manual.xml index ca12e0e..067c76e 100644 --- a/test/Docbook/basic/htmlchunked/image/manual.xml +++ b/test/Docbook/basic/htmlchunked/image/manual.xml @@ -72,7 +72,7 @@ <listitem> <para>the SCons Tools Wiki page at <ulink - url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.</para> + url="https://github.com/SCons/scons/wiki/ToolsIndex">https://github.com/SCons/scons/wiki/ToolsIndex</ulink>.</para> </listitem> </itemizedlist> </section> diff --git a/test/Docbook/basic/htmlhelp/image/manual.xml b/test/Docbook/basic/htmlhelp/image/manual.xml index ca12e0e..067c76e 100644 --- a/test/Docbook/basic/htmlhelp/image/manual.xml +++ b/test/Docbook/basic/htmlhelp/image/manual.xml @@ -72,7 +72,7 @@ <listitem> <para>the SCons Tools Wiki page at <ulink - url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.</para> + url="https://github.com/SCons/scons/wiki/ToolsIndex">https://github.com/SCons/scons/wiki/ToolsIndex</ulink>.</para> </listitem> </itemizedlist> </section> diff --git a/test/Docbook/rootname/htmlchunked/image/manual.xml b/test/Docbook/rootname/htmlchunked/image/manual.xml index ca12e0e..067c76e 100644 --- a/test/Docbook/rootname/htmlchunked/image/manual.xml +++ b/test/Docbook/rootname/htmlchunked/image/manual.xml @@ -72,7 +72,7 @@ <listitem> <para>the SCons Tools Wiki page at <ulink - url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.</para> + url="https://github.com/SCons/scons/wiki/ToolsIndex">https://github.com/SCons/scons/wiki/ToolsIndex</ulink>.</para> </listitem> </itemizedlist> </section> diff --git a/test/Docbook/rootname/htmlhelp/image/manual.xml b/test/Docbook/rootname/htmlhelp/image/manual.xml index ca12e0e..067c76e 100644 --- a/test/Docbook/rootname/htmlhelp/image/manual.xml +++ b/test/Docbook/rootname/htmlhelp/image/manual.xml @@ -72,7 +72,7 @@ <listitem> <para>the SCons Tools Wiki page at <ulink - url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.</para> + url="https://github.com/SCons/scons/wiki/ToolsIndex">https://github.com/SCons/scons/wiki/ToolsIndex</ulink>.</para> </listitem> </itemizedlist> </section> diff --git a/test/ExecuteInvalidateCache.py b/test/ExecuteInvalidateCache.py index acc7701..f6ed391 100644 --- a/test/ExecuteInvalidateCache.py +++ b/test/ExecuteInvalidateCache.py @@ -27,7 +27,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" """ Test the Execute() functions clears the memoized values of affected target Nodes when used with Delete(). Derived from -http://scons.tigris.org/issues/show_bug.cgi?id=1307 +https://github.com/SCons/scons/issues/1307 """ import TestSCons diff --git a/test/Fortran/USE-MODULE-CASEINSENS.py b/test/Fortran/USE-MODULE-CASEINSENS.py index 44c03fe..4dd115b 100644 --- a/test/Fortran/USE-MODULE-CASEINSENS.py +++ b/test/Fortran/USE-MODULE-CASEINSENS.py @@ -27,7 +27,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" # This test tests whether a file that defines a module "a" and # then uses it with a different case ("A") works. Pre-2.0, this # gave a spurious dependency cycle error. -# See http://scons.tigris.org/issues/show_bug.cgi?id=2574 +# See https://github.com/SCons/scons/issues/2574 import TestSCons diff --git a/test/Java/JAR.py b/test/Java/JAR.py index d62696c..faf01a3 100644 --- a/test/Java/JAR.py +++ b/test/Java/JAR.py @@ -52,6 +52,7 @@ sys.exit(0) """) test.write('SConstruct', """ +DefaultEnvironment(tools=[]) env = Environment(tools = ['jar'], JAR = r'%(_python_)s myjar.py') env.Jar(target = 'test1.jar', source = 'test1.class') @@ -70,6 +71,7 @@ test.must_match('test1.jar', "test1.class\nline 3\n", mode='r') if os.path.normcase('.class') == os.path.normcase('.CLASS'): test.write('SConstruct', """ +DefaultEnvironment(tools=[]) env = Environment(tools = ['jar'], JAR = r'%(_python_)s myjar.py') env.Jar(target = 'test2.jar', source = 'test2.CLASS') @@ -95,6 +97,7 @@ sys.exit(0) """) test.write('SConstruct', """ +DefaultEnvironment(tools=[]) env = Environment(tools = ['jar'], JAR = r'%(_python_)s myjar2.py', JARFLAGS='cvf') @@ -126,6 +129,7 @@ where_jar = test.java_where_jar() test.file_fixture('wrapper_with_args.py') test.write('SConstruct', """ +DefaultEnvironment(tools=[]) foo = Environment(tools = ['javac', 'jar'], JAVAC = r'%(where_javac)s', JAR = r'%(where_jar)s') @@ -249,6 +253,8 @@ test.subdir('testdir2', # simple SConstruct which passes the 3 .java as source # and extracts the jars back to classes test.write(['testdir2', 'SConstruct'], """ +DefaultEnvironment(tools=[]) + foo = Environment() foo.Jar(target = 'foobar', source = [ 'com/javasource/JavaFile1.java', @@ -345,6 +351,8 @@ test.subdir('listOfLists', # test varient dir and lists of lists test.write(['listOfLists', 'SConstruct'], """ +DefaultEnvironment(tools=[]) + foo = Environment() foo.VariantDir('build', 'src', duplicate=0) foo.VariantDir('test', '../manifest_dir', duplicate=0) @@ -435,6 +443,8 @@ test.subdir('testdir3', # Create the jars then extract them back to check contents test.write(['testdir3', 'SConstruct'], """ +DefaultEnvironment(tools=[]) + foo = Environment() bar = foo.Clone() foo.Java(target = 'classes', source = 'com/sub/foo') diff --git a/test/Java/Java-1.4.py b/test/Java/Java-1.4.py index 4076783..8bbefaf 100644 --- a/test/Java/Java-1.4.py +++ b/test/Java/Java-1.4.py @@ -267,7 +267,7 @@ class Foo { } """) # Test private inner class instantiation, courtesy Tilo Prutz: -# http://scons.tigris.org/issues/show_bug.cgi?id=1594 +# https://github.com/SCons/scons/issues/1594 test.write(['src6', 'TestSCons.java'], """\ class test { diff --git a/test/Java/Java-1.5.py b/test/Java/Java-1.5.py index 6659a16..58513e2 100644 --- a/test/Java/Java-1.5.py +++ b/test/Java/Java-1.5.py @@ -267,7 +267,7 @@ class Foo { } """) # Test private inner class instantiation, courtesy Tilo Prutz: -# http://scons.tigris.org/issues/show_bug.cgi?id=1594 +# https://github.com/SCons/scons/issues/1594 test.write(['src6', 'TestSCons.java'], """\ class test { diff --git a/test/Java/Java-1.6.py b/test/Java/Java-1.6.py index be46919..04a9155 100644 --- a/test/Java/Java-1.6.py +++ b/test/Java/Java-1.6.py @@ -267,7 +267,7 @@ class Foo { } """) # Test private inner class instantiation, courtesy Tilo Prutz: -# http://scons.tigris.org/issues/show_bug.cgi?id=1594 +# https://github.com/SCons/scons/issues/1594 test.write(['src6', 'TestSCons.java'], """\ class test { diff --git a/test/Java/swig-dependencies.py b/test/Java/swig-dependencies.py index c72c44a..bd7a576 100644 --- a/test/Java/swig-dependencies.py +++ b/test/Java/swig-dependencies.py @@ -130,7 +130,7 @@ except: # Bug ticket reported also this seems work fine when running outsite # the test framework test.skip_test('Throwing no result for this test because of bug ' + - 'related here: http://scons.tigris.org/issues/show_bug.cgi?id=2907\n') + 'related here: https://github.com/SCons/scons/issues/2907\n') pass #test.must_exist(['java', 'classes', 'foopack', 'foopack.class']) #test.must_exist(['java', 'classes', 'foopack', 'foopackJNI.class']) diff --git a/test/Libs/SharedLibrary-update-deps.py b/test/Libs/SharedLibrary-update-deps.py index 076e3ad..3abce83 100644 --- a/test/Libs/SharedLibrary-update-deps.py +++ b/test/Libs/SharedLibrary-update-deps.py @@ -26,7 +26,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" """ Test that SharedLibrary() updates when a different lib is linked, even if it has the same md5. -This is http://scons.tigris.org/issues/show_bug.cgi?id=2903 +This is https://github.com/SCons/scons/issues/2903 """ import sys diff --git a/test/MSVC/MSVC_BATCH-spaces-targetdir.py b/test/MSVC/MSVC_BATCH-spaces-targetdir.py new file mode 100644 index 0000000..298e10e --- /dev/null +++ b/test/MSVC/MSVC_BATCH-spaces-targetdir.py @@ -0,0 +1,11 @@ +import TestSCons + + + +test = TestSCons.TestSCons() + +test.skip_if_not_msvc() + + +test.dir_fixture('MSVC_BATCH-spaces-targetdir') +test.run()
\ No newline at end of file diff --git a/test/MSVC/MSVC_BATCH-spaces-targetdir/SConstruct b/test/MSVC/MSVC_BATCH-spaces-targetdir/SConstruct new file mode 100644 index 0000000..da8002b --- /dev/null +++ b/test/MSVC/MSVC_BATCH-spaces-targetdir/SConstruct @@ -0,0 +1,8 @@ +import os.path + +env=Environment(MSVC_BATCH=True) + +td='tar ge tdir' +VariantDir(td,'src') +env.Program(os.path.join(td,'test_program'), + [os.path.join(td,a) for a in ['a.c','b.c','c.c']]) diff --git a/test/MSVC/MSVC_BATCH-spaces-targetdir/src/a.c b/test/MSVC/MSVC_BATCH-spaces-targetdir/src/a.c new file mode 100644 index 0000000..1741de8 --- /dev/null +++ b/test/MSVC/MSVC_BATCH-spaces-targetdir/src/a.c @@ -0,0 +1,15 @@ +#include <stdio.h> + +extern void myfuncb(); +extern void myfuncc(); + + +void myfunca() { + printf("myfunca\n"); +} + +int main(int argc, char *argv[]) { + myfunca(); + myfuncb(); + myfuncc(); +}
\ No newline at end of file diff --git a/test/MSVC/MSVC_BATCH-spaces-targetdir/src/b.c b/test/MSVC/MSVC_BATCH-spaces-targetdir/src/b.c new file mode 100644 index 0000000..e03c5d0 --- /dev/null +++ b/test/MSVC/MSVC_BATCH-spaces-targetdir/src/b.c @@ -0,0 +1,5 @@ +#include <stdio.h> + +void myfuncb() { + printf("myfuncb\n"); +}
\ No newline at end of file diff --git a/test/MSVC/MSVC_BATCH-spaces-targetdir/src/c.c b/test/MSVC/MSVC_BATCH-spaces-targetdir/src/c.c new file mode 100644 index 0000000..1c262d3 --- /dev/null +++ b/test/MSVC/MSVC_BATCH-spaces-targetdir/src/c.c @@ -0,0 +1,5 @@ +#include <stdio.h> + +void myfuncc() { + printf("myfuncc\n"); +}
\ No newline at end of file diff --git a/test/MSVC/PCH-source.py b/test/MSVC/PCH-source.py index 6015fec..ccab66d 100644 --- a/test/MSVC/PCH-source.py +++ b/test/MSVC/PCH-source.py @@ -28,7 +28,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" Test use of pre-compiled headers when the source .cpp file shows
up in both the env.PCH() and the env.Program() source list.
-Issue 2505: http://scons.tigris.org/issues/show_bug.cgi?id=2505
+Issue 2505: http://github.com/SCons/scons/issues/2505
"""
import TestSCons
diff --git a/test/MSVC/batch.py b/test/MSVC/batch.py index 8b7945b..0d3063f 100644 --- a/test/MSVC/batch.py +++ b/test/MSVC/batch.py @@ -32,6 +32,7 @@ explicit suffix settings so that the test should work when run on any platform. """ +import os import TestSCons test = TestSCons.TestSCons() @@ -72,6 +73,7 @@ for infile in sys.argv[2:]: """) test.write('SConstruct', """ +DefaultEnvironment(tools=[]) cccom = r'%(_python_)s fake_cl.py $_MSVC_OUTPUT_FLAG $CHANGED_SOURCES' linkcom = r'%(_python_)s fake_link.py ${TARGET.windows} $SOURCES' env = Environment(tools=['msvc', 'mslink'], @@ -96,8 +98,8 @@ test.run(arguments = 'MSVC_BATCH=1 .') test.must_match('prog.exe', "prog.c\nf1.c\nf2.c\n", mode='r') test.must_match('fake_cl.log', """\ -/Fo. prog.c f1.c f2.c -""", mode='r') +/Fo.%s prog.c f1.c f2.c +"""%os.sep, mode='r') test.up_to_date(options = 'MSVC_BATCH=1', arguments = '.') @@ -109,9 +111,9 @@ test.run(arguments = 'MSVC_BATCH=1 .') test.must_match('prog.exe', "prog.c\nf1.c 2\nf2.c\n", mode='r') test.must_match('fake_cl.log', """\ -/Fo. prog.c f1.c f2.c -/Fo. f1.c -""", mode='r') +/Fo.%s prog.c f1.c f2.c +/Fo.%s f1.c +"""%(os.sep, os.sep), mode='r') test.up_to_date(options = 'MSVC_BATCH=1', arguments = '.') diff --git a/test/README b/test/README index 2c8423f..be75398 100644 --- a/test/README +++ b/test/README @@ -4,7 +4,7 @@ This directory contains our end-to-end SCons tests. They are all meant to be run essentially standalone, with the exception of the TestSCons.py module and the other modules imported by the various -tests. These modules are in the QMTest/ subdirectory, and PYTHONPATH +tests. These modules are in the testing/framework/ subdirectory, and PYTHONPATH needs to be set up correctly so that the test scripts can find them, and so that the SCons script itself can find the build engine modules. @@ -56,4 +56,4 @@ semblance of uniformity, here are the naming conventions for tests: For some more information about running the tests and writing them, please refer to the documentation for the testing framework. It can be found in -the 'QMTest' folder, as file 'test-framework.rst'. +the 'testing/framework' folder, as file 'test-framework.rst'. diff --git a/test/SConstruct.py b/test/SConstruct.py index cebdf04..8bc8617 100644 --- a/test/SConstruct.py +++ b/test/SConstruct.py @@ -39,6 +39,33 @@ scons: \*\*\* No SConstruct file found. wpath = test.workpath() +test.write('sconstruct.py', """ +import os +print("sconstruct.py "+os.getcwd()) +""") + +test.run(arguments = ".", + stdout = test.wrap_stdout(read_str = 'sconstruct.py %s\n' % wpath, + build_str = "scons: `.' is up to date.\n")) + +test.write('Sconstruct.py', """ +import os +print("sconstruct.py "+os.getcwd()) +""") + +test.run(arguments = ".", + stdout = test.wrap_stdout(read_str = 'sconstruct.py %s\n' % wpath, + build_str = "scons: `.' is up to date.\n")) + +test.write('SConstruct.py', """ +import os +print("SConstruct.py "+os.getcwd()) +""") + +test.run(arguments = ".", + stdout = test.wrap_stdout(read_str = 'SConstruct.py %s\n' % wpath, + build_str = "scons: `.' is up to date.\n")) + test.write('sconstruct', """ import os print("sconstruct "+os.getcwd()) diff --git a/test/Scanner/Dir.py b/test/Scanner/Dir.py index 86b80e9..fa4f6c9 100644 --- a/test/Scanner/Dir.py +++ b/test/Scanner/Dir.py @@ -27,7 +27,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" """ Verify that a simple scanner that returns Dir nodes works correctly. -Submitted as http://scons.tigris.org/issues/show_bug.cgi?id=2534 +Submitted as https://github.com/SCons/scons/issues/2534 """ import TestSCons diff --git a/test/SideEffect/Issues/3013/files/SConscript b/test/SideEffect/Issues/3013/files/SConscript new file mode 100644 index 0000000..27da7bb --- /dev/null +++ b/test/SideEffect/Issues/3013/files/SConscript @@ -0,0 +1,5 @@ +Import('env') + +primary = env.make_file('output', 'test.cpp') +this_causes_problems = env.SideEffect('output_side_effect', 'output') + diff --git a/test/SideEffect/Issues/3013/files/SConstruct b/test/SideEffect/Issues/3013/files/SConstruct new file mode 100644 index 0000000..d01a4b7 --- /dev/null +++ b/test/SideEffect/Issues/3013/files/SConstruct @@ -0,0 +1,21 @@ +env = Environment() + +def make_file(target, source, env): + with open(str(target[0]), 'w') as f: + f.write('gobldygook') + with open(str(target[0]) + '_side_effect', 'w') as side_effect: + side_effect.write('anything') + +env.Append( + BUILDERS={'make_file': Builder(action=Action(make_file))} +) + +env.objdir = 'build' + +SConscript( + 'SConscript', + variant_dir=env.objdir, + exports={'env':env}, + duplicate=0 +) + diff --git a/test/SideEffect/Issues/3013/files/test.cpp b/test/SideEffect/Issues/3013/files/test.cpp new file mode 100644 index 0000000..27424b0 --- /dev/null +++ b/test/SideEffect/Issues/3013/files/test.cpp @@ -0,0 +1,2 @@ +void some_function() {} + diff --git a/test/SideEffect/Issues/3013/sideffect_with_variantdir.py b/test/SideEffect/Issues/3013/sideffect_with_variantdir.py new file mode 100644 index 0000000..9ca3eca --- /dev/null +++ b/test/SideEffect/Issues/3013/sideffect_with_variantdir.py @@ -0,0 +1,49 @@ +#!/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__" + +""" +Test materials for Github Issue 3013 submitted by Stefan Ross: +https://github.com/SCons/scons/issues/3013 +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.dir_fixture('files') + +test.run( + arguments = '-j2' +) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: + diff --git a/test/Subst/Literal.py b/test/Subst/Literal.py new file mode 100644 index 0000000..dec243d --- /dev/null +++ b/test/Subst/Literal.py @@ -0,0 +1,54 @@ +#!/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 Literal objects expand correctly in ${_concat()}. +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.write('SConstruct', """\ +env = Environment(PRE='pre=', MID=Literal('\$$ORIGIN'), SUF='') +print(env.subst('${_concat(PRE, MID, SUF, __env__)}')) +""") + +test.run() + +expect = """\ +pre=\$ORIGIN +""" + +test.run(arguments='-Q -q', stdout=expect) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/VariantDir/include-subdir.py b/test/VariantDir/include-subdir.py index d616bba..fe26c0a 100644 --- a/test/VariantDir/include-subdir.py +++ b/test/VariantDir/include-subdir.py @@ -32,7 +32,7 @@ we have to make sure that the file gets copied to the variant dir. (This was not the case for 0.98.5 and earlier) Test case supplied by Jared Grubb, based on a minimal example supplied -by Ali Tofigh, filed as http://scons.tigris.org/issues/show_bug.cgi?id=2121 +by Ali Tofigh, filed as https://github.com/SCons/scons/issues/2121 """ import TestSCons diff --git a/test/option/tree-lib.py b/test/option/tree-lib.py index 2dc5fb0..4725d42 100644 --- a/test/option/tree-lib.py +++ b/test/option/tree-lib.py @@ -30,7 +30,7 @@ the dependency on the library. (On earlier versions of the Microsoft toolchain this wouldn't show up unless the library already existed on disk.) -Issue 1363: http://scons.tigris.org/issues/show_bug.cgi?id=1363 +Issue 1363: https://github.com/SCons/scons/issues/1363 """ import TestSCons diff --git a/test/update-release-info/update-release-info.py b/test/update-release-info/update-release-info.py index 970bcce..d0242a8 100644 --- a/test/update-release-info/update-release-info.py +++ b/test/update-release-info/update-release-info.py @@ -34,7 +34,7 @@ import TestRuntest # Needed to ensure we're using the correct year this_year=time.localtime()[0] -TestSCons = 'QMTest/TestSCons.py' .split('/') +TestSCons = 'testing/framework/TestSCons.py' .split('/') README = 'README.rst' .split('/') ReleaseConfig = 'ReleaseConfig' .split('/') SConstruct = 'SConstruct' .split('/') diff --git a/testing/buildbot.yml b/testing/buildbot.yml index 81c2143..7e6bb1a 100644 --- a/testing/buildbot.yml +++ b/testing/buildbot.yml @@ -9,7 +9,7 @@ # ansible-playbook -i hosts buildbot.yml -e 'botuser=sconsy' # # Tested with Ansible 1.5.0, based on -# http://scons.org/wiki/InstallingBuildbotSlaves +# https://github.com/SCons/scons/wiki/InstallingBuildbotSlaves # Send questions to: # # anatoly techtonik <techtonik@gmail.com> diff --git a/QMTest/README.txt b/testing/framework/README.txt index 7750bc7..7750bc7 100644 --- a/QMTest/README.txt +++ b/testing/framework/README.txt diff --git a/QMTest/SConscript b/testing/framework/SConscript index 1db7301..0d3832e 100644 --- a/QMTest/SConscript +++ b/testing/framework/SConscript @@ -50,9 +50,9 @@ def copy(target, source, env): for file in files: # Guarantee that real copies of these files always exist in - # build/QMTest. If there's a symlink there, then this is an Aegis + # build/testing/framework. If there's a symlink there, then this is an Aegis # build and we blow them away now so that they'll get "built" later. - p = os.path.join(build_dir, 'QMTest', file) + p = os.path.join(build_dir, 'testing','framework', file) if os.path.islink(p): os.unlink(p) if not os.path.isabs(p): diff --git a/QMTest/TestCmd.py b/testing/framework/TestCmd.py index 0aab9a8..0aab9a8 100644 --- a/QMTest/TestCmd.py +++ b/testing/framework/TestCmd.py diff --git a/QMTest/TestCmdTests.py b/testing/framework/TestCmdTests.py index b9226fd..b9226fd 100644 --- a/QMTest/TestCmdTests.py +++ b/testing/framework/TestCmdTests.py diff --git a/QMTest/TestCommon.py b/testing/framework/TestCommon.py index 47a149b..47a149b 100644 --- a/QMTest/TestCommon.py +++ b/testing/framework/TestCommon.py diff --git a/QMTest/TestCommonTests.py b/testing/framework/TestCommonTests.py index 7949cb8..7949cb8 100644 --- a/QMTest/TestCommonTests.py +++ b/testing/framework/TestCommonTests.py diff --git a/QMTest/TestRuntest.py b/testing/framework/TestRuntest.py index 68563da..7b3bb52 100644 --- a/QMTest/TestRuntest.py +++ b/testing/framework/TestRuntest.py @@ -97,7 +97,7 @@ class TestRuntest(TestCommon): The superclass TestCommon.__init__() will change directory (chdir) to the workspace directory, so an explicit "chdir = '.'" on all of the run() method calls is not necessary. This initialization - also copies the runtest.py and QMTest/ subdirectory tree to the + also copies the runtest.py and testing/framework/ subdirectory tree to the temporary directory, duplicating how this test infrastructure appears in a normal workspace. """ @@ -115,7 +115,7 @@ class TestRuntest(TestCommon): except KeyError: things_to_copy = [ 'runtest.py', - 'QMTest', + 'testing/framework', ] else: del kw['things_to_copy'] diff --git a/QMTest/TestSCons.py b/testing/framework/TestSCons.py index ef907d8..c32e06a 100644 --- a/QMTest/TestSCons.py +++ b/testing/framework/TestSCons.py @@ -42,7 +42,7 @@ python_version_deprecated = (2, 7, 0) # In the checked-in source, the value of SConsVersion in the following # line must remain "__ VERSION __" (without the spaces) so the built -# version in build/QMTest/TestSCons.py contains the actual version +# version in build/testing/framework/TestSCons.py contains the actual version # string of the packages that have been built. SConsVersion = '__VERSION__' if SConsVersion == '__' + 'VERSION' + '__': @@ -692,20 +692,29 @@ class TestSCons(TestCommon): env = SCons.Environment.Environment() self._java_env[version] = env - if version: - patterns = [ - '/usr/java/jdk%s*/bin' % version, - '/usr/lib/jvm/*-%s*/bin' % version, - '/usr/local/j2sdk%s*/bin' % version, - ] + if sys.platform == 'win32': + patterns = [ + 'C:/Program Files*/Java/jdk%s*/bin'%version, + ] + else: + patterns = [ + '/usr/java/jdk%s*/bin' % version, + '/usr/lib/jvm/*-%s*/bin' % version, + '/usr/local/j2sdk%s*/bin' % version, + ] java_path = self.paths(patterns) + [env['ENV']['PATH']] else: - patterns = [ - '/usr/java/latest/bin', - '/usr/lib/jvm/*/bin', - '/usr/local/j2sdk*/bin', - ] + if sys.platform == 'win32': + patterns = [ + 'C:/Program Files*/Java/jdk*/bin', + ] + else: + patterns = [ + '/usr/java/latest/bin', + '/usr/lib/jvm/*/bin', + '/usr/local/j2sdk*/bin', + ] java_path = self.paths(patterns) + [env['ENV']['PATH']] env['ENV']['PATH'] = os.pathsep.join(java_path) diff --git a/QMTest/TestSConsMSVS.py b/testing/framework/TestSConsMSVS.py index 1e879d9..1e879d9 100644 --- a/QMTest/TestSConsMSVS.py +++ b/testing/framework/TestSConsMSVS.py diff --git a/QMTest/TestSCons_time.py b/testing/framework/TestSCons_time.py index bc116ec..bc116ec 100644 --- a/QMTest/TestSCons_time.py +++ b/testing/framework/TestSCons_time.py diff --git a/QMTest/TestSConsign.py b/testing/framework/TestSConsign.py index a48b648..a48b648 100644 --- a/QMTest/TestSConsign.py +++ b/testing/framework/TestSConsign.py diff --git a/QMTest/test-framework.rst b/testing/framework/test-framework.rst index 844d99b..7082eb9 100644 --- a/QMTest/test-framework.rst +++ b/testing/framework/test-framework.rst @@ -19,7 +19,7 @@ There are three types of SCons tests: *End-to-End Tests* End-to-end tests of SCons are all Python scripts (``*.py``) underneath the ``test/`` subdirectory. They use the test infrastructure modules in the - ``QMTest`` subdirectory. + ``testing/framework`` subdirectory. *Unit Tests* Unit tests for individual SCons modules live underneath the @@ -98,9 +98,6 @@ Running Tests The standard set of SCons tests are run from the top-level source directory by the ``runtest.py`` script. -There is a ``--qmtest`` option that checks whether the ``QMTest`` package -is installed on your system. If it can be found, then the ``runtest.py`` script -will use it to carry out the tests. Help is available through the ``-h`` option: @@ -346,7 +343,7 @@ SCons, it is ``test/packaging/sandbox-test/sandbox-test.py``. For even more examples you should check out one of the external Tools, e.g. the *Qt4* Tool at https://bitbucket.org/dirkbaechle/scons_qt4. Also visit the SCons -Tools Index at http://www.scons.org/wiki/ToolsIndex for a complete +Tools Index at https://github.com/SCons/scons/wiki/ToolsIndex for a complete list of available Tools, though not all may have tests yet. How to convert old tests @@ -385,9 +382,9 @@ Finally, you shouldn't forget to clean up and remove the temporary test director Test Infrastructure =================== -The test API is in ``QMTest/TestSCons.py``. ``TestSCons`` is a subclass of +The test API is in ``testing/framework/TestSCons.py``. ``TestSCons`` is a subclass of ``TestCommon``, which is a subclass of ``TestCmd``; all those python files are -in ``QMTest``. Start in ``QMTest/TestCmd.py`` for the base API definitions, +in ``testing/framework``. Start in ``testing/framework/TestCmd.py`` for the base API definitions, like how to create files (``test.write()``) and run commands (``test.run()``). You want to use ``TestSCons`` for the end-to-end tests in ``test``, but ``TestCmd`` @@ -423,7 +420,7 @@ Here's an easy sample:: if not intelc: test.skip_test("Could not load 'intelc' Tool; skipping test(s).\n") -See ``QMTest/TestSCons.py`` for the ``detect_tool`` method. It calls the tool's +See ``testing/framework/TestSCons.py`` for the ``detect_tool`` method. It calls the tool's ``generate()`` method, and then looks for the given prog (tool name by default) in ``env['ENV']['PATH']``. diff --git a/timings/README.txt b/timings/README.txt index 3c0baff..9921208 100644 --- a/timings/README.txt +++ b/timings/README.txt @@ -5,8 +5,8 @@ This directory contains timing configurations for SCons. Each configuration exists in a subdirectory. The controlling script is named TimeSCons-run.py for the configuration. The TimeSCons-run.py scripts use TestSCons.TimeSCons, a subclass of TestSCons.TestSCons (both -defined in ../QMTest/TestSCons.py), to manage execution of the timing -runs. +defined in ../testing/framework/TestSCons.py), to manage execution of the +timing runs. Unlike the TestSCons.TestSCons base class, the TestSCons.TimeSCons subclass copies the contents of its containing directory to the temporary diff --git a/www/bug-submission.html b/www/bug-submission.html deleted file mode 100644 index abc855b..0000000 --- a/www/bug-submission.html +++ /dev/null @@ -1,234 +0,0 @@ -<html> -<head> -<title>Bug Submission</title> -</head> -<body> - -<div id="apphead"> -<h1><small>scons</small><br />Bug Submission</h1> - -<p> -<strong>You must now -<a href="http://www.tigris.org/servlets/Login">log in</a> -to a <a href="http://www.tigris.org">tigris.org</a> account -before submitting a new bug report!</strong> -</p> - -<p> -Bugs should be reported at the -<a href="http://scons.tigris.org/issues/enter_bug.cgi?component=scons&subcomponent=scons&issue_type=DEFECT">"Enter Issue" page</a>. -Please follow the <a href="bug-submission.html#guidelines">submission guidelines</a> below -to make sure your bug report contains the necessary information. -A more detailed set of <a href="bug-submission.html#steps">submission steps</a> -can be found below. -</p> - -<p> -The above URL is set up for reporting a bug in SCons itself. -If you are reporting a problem in some other aspect of the SCons Project -(such as the documentation, or any of the web pages), -you must change the Subcomponent field of the submission form -to some other appropriate value. -</p> - -</div> - -<div class="h2 app" style="border-left: 0px" id="customcontent"> - -<h2 id="guidelines">Guidelines for a Useful Bug Report</h2> - -<p> -Your bug will be much more likely to get diagnosed and fixed -if you supply all the necessary information to make it easy to do so. -</p> - -<ul> -<li> -<strong> -<a href="http://www.tigris.org/servlets/Login">Log in</a> -to your tigris.org account before submitting a bug report -</strong> -<p> -If you do not already have a tigris.org account, -register for one at -<a href="http://www.tigris.org/servlets/Join">http://www.tigris.org/servlets/Join</a>. -</p> -<p> -We no longer accept anonymous bug reports, -due to spambot abuse of the open-door policy. -</p> -</li> -<li> -<strong>Specify the version of SCons in which you observed the problem</strong> -<p> -This helps avoid wasted time trying to pinpoint the version, -and also allows us to confirm if a later released version -has already fixed your problem. -</p> -</li> -<li> -<strong>Provide SConscript files or other configuration that reproduce the problem</strong> -<p> -If you can, simplify the configuration to just the -minimal subset that demonstrates the problem. -It's much harder to diagnose a problem -if the incorrect behavor is due to -one particular item out of a thousand -in a large configuration. -</p> -<p> -That said, it's most convenient if you can provide -an actual configuration (set of SConscript files -and/or other input files) -that can be downloaded and run to demonstrate the bug. -The easiest way is to attach a .tar.gz or .zip file -to the bug report. -Note that the tigris.org Issue Tracker -doesn't let you attach a file like this -when you initially submit the report. -You must first create the bug report, -and then attach a file to it as a separate step. -See below for the detailed steps. -</p> -<p> -If your problem is evident from a few specific SConscript lines, -it's perfectly acceptable just to -paste the lines into the Description field of the bug report. -</p> -</li> -<li> -<strong>Describe specifically the incorrect behavor you observed</strong> -<p> -It's best if you can cut and paste the output from SCons, -especially any error messages. -Otherwise, -Vague descriptions like, -"SCons errors out," or "Product XYZ doesn't compile" -are extremely difficult to diagnose, -because the different installed tools on someone else's system -may cause SCons to behave differently -and not demonstrate your bug. -</p> -</li> -<li> -<strong>Describe what you expected to happen</strong> -<p> -This isn't always obvious, especially if the -bug does not involve an SCons failure or error message. -Describing the behavior you expected -helps speed up the diagnosis. -</p> -</li> -</ul> - -<h2 id="steps">Steps for Submitting a Bug Report</h2> - -<p> -The following guides you step-by-step through the -process of submitting a new SCons bug report. -</p> - -<p> -NOTE: Creating a bug report with an attached file or files -(such as a .tar.gz or .zip file containing a sample configuration) -is a two-step process in the tigris.org Issue Tracker. -You must first create the bug report, -and then attach the file(s) in a separate step, -as described below. -</p> - -<ul> -<li> -<strong><a href="http://www.tigris.org/servlets/Login">Log in</a> at tigris.org</strong> -<p> -If you do not already have a tigris.org account, -register for one at -<a href="http://www.tigris.org/servlets/Join">http://www.tigris.org/servlets/Join</a>. -</p> -<p> -We no longer accept anonymous bug reports, -due to spambot abuse of the open-door policy. -</p> -</li> -<li> -<strong>Go to the -<a href="http://scons.tigris.org/issues/enter_bug.cgi?component=scons&subcomponent=scons&issue_type=DEFECT">"Enter issue" page</a> -</strong> -<p> -By default, the "scons" subcomponent is selected; -if this bug is for a different subcomponent, select that instead. -</p> -</li> -<li> -<strong>Specify the version of SCons in which you found the bug</strong> -<p> -</p> -</li> -<li> -<strong>Specify the Subcomponent (if the bug is not in SCons itself)</strong> -<p> -The URL two steps above assumes that you're reporting -a bug in the behavior of SCons itself. -If you're reporting a problem in some other aspect of the SCons Project -(such as the documentation, or the packaging), -please change the Subcomponent field to reflect that. -</p> -</li> -<li> -<strong>Specify the Platform and OS</strong> -<p> -The Platform field is less important here -(SCons doesn't have many behavioral difference -due to different hardware platforms) -but the OS field is important. -</p> -</li> -<li> -<strong>Fill in a good Summary line describing the bug</strong> -<p> -This line is what shows up in summary reports, -so it should be descriptive but not too long. -Avoid overly-general things like "SCons error," etc. -</p> -</li> -<li> -<strong>Fill in the Description field</strong> -<p> -This is where you should go into detail -about the configuration, -the exact error you see, -what you expected to happen, etc. -When in doubt, include more information rather than less. -</p> -</li> -<li> -<strong>Press the "Submit issue" to submit your report</strong> -<p> -You will now receive a <tt>Posting issue</tt> page -that gives you the number of the issue you submitted. -</p> -</li> -<li> -<strong>If you have a .tar.gz, .zip or other file to attach:</strong> -<ul> -<li> -<strong>Click the "Attach a file to this issue" link</strong> -</li> -<li> -<strong>Fill in the "File" field with the path to the file you want to upload</strong> -(You can also do this through the <tt>Browse...</tt> button.) -</li> -<li> -<strong>Fill in the Description field</strong> -</li> -<li> -<strong>Click the "Submit" button</strong> -</li> -</ul> -</li> -</ul> - -</div> - -</body> -</html> diff --git a/www/cn-project-pages/Administrivia/snippets/HtmlSnippet1.html b/www/cn-project-pages/Administrivia/snippets/HtmlSnippet1.html deleted file mode 100644 index a311062..0000000 --- a/www/cn-project-pages/Administrivia/snippets/HtmlSnippet1.html +++ /dev/null @@ -1 +0,0 @@ -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><ul><li><a title="Messages pending approval" href="/ds/viewPendingApprovalMessages.do">Messages pending approval</a></li><li><a title="Deleted discussions" href="/ds/viewDeletedForums.do">Deleted discussions</a> <br /></li></ul>
\ No newline at end of file diff --git a/www/cn-project-pages/Administrivia/snippets/description.txt b/www/cn-project-pages/Administrivia/snippets/description.txt deleted file mode 100644 index 08c477b..0000000 --- a/www/cn-project-pages/Administrivia/snippets/description.txt +++ /dev/null @@ -1 +0,0 @@ -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Administrative information and links
\ No newline at end of file diff --git a/www/cn-project-pages/Administrivia/snippets/page.xml b/www/cn-project-pages/Administrivia/snippets/page.xml deleted file mode 100644 index 7086b8d..0000000 --- a/www/cn-project-pages/Administrivia/snippets/page.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<page visibility="1">
- <component_list>
- <component visibility="2" type="Html" order="1">
- <title localize="false">Administrative links</title>
- <filename>HtmlSnippet1.html</filename>
- </component>
- </component_list>
-</page>
-
diff --git a/www/cn-project-pages/snippets/page.xml b/www/cn-project-pages/snippets/page.xml deleted file mode 100644 index 005b144..0000000 --- a/www/cn-project-pages/snippets/page.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<page visibility="1">
- <component_list>
- <component visibility="1" type="ProjectMetadata" order="1">
- <title localize="false" />
- </component>
- <component visibility="1" type="Html" order="2">
- <title localize="false" />
- <filename>index.html</filename>
- </component>
- <component visibility="1" type="Subproject" order="3">
- <title localize="true">Subprojects</title>
- </component>
- </component_list>
-</page>
-
diff --git a/www/cn-project-pages/structure.xml b/www/cn-project-pages/structure.xml deleted file mode 100644 index 2c1f3bb..0000000 --- a/www/cn-project-pages/structure.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<structure>
- <page>
- <id>g2uyOi</id>
- <name>Administrivia</name>
- <directory>Administrivia</directory>
- <ordinal>1</ordinal>
- </page>
-</structure>
-
diff --git a/www/favicon.ico b/www/favicon.ico Binary files differdeleted file mode 100644 index 1541e5b..0000000 --- a/www/favicon.ico +++ /dev/null diff --git a/www/feature-request.html b/www/feature-request.html deleted file mode 100644 index e644a16..0000000 --- a/www/feature-request.html +++ /dev/null @@ -1,99 +0,0 @@ -<html> -<head> -<title>Feature Requests</title> -</head> -<body> - -<div id="apphead"> -<h1><small>scons</small><br />Feature Requests</h1> -</div> - -<p> -<strong>You must now -<a href="http://www.tigris.org/servlets/Login">log in</a> -to a <a href="http://www.tigris.org">tigris.org</a> account -before submitting a feature request!</strong> -</p> - -<p> -Feature requests should be submitted to the -<a href="http://scons.tigris.org/issues/enter_bug.cgi?component=scons&subcomponent=scons&issue_type=FEATURE">"Enter Issue" page</a>. -A more detailed set of <a href="feature-request.html#steps">submission steps</a> -can be found below. -</p> - -<p> -The "Enter Issue" links on this page, -by default, create a <tt>FEATURE</tt> request, -a request for completely new SCons functionality. -If your request is for modified behavior -of an already-existing SCons feature, -you may wish to change the Issue type -to an <tt>ENHANCEMENT</tt> request. -If you're not sure, leave the issue as a <tt>FEATURE</tt> request; -it can be reclassified in the future, if necessary. -</div> - -<div class="h2 app" style="border-left: 0px" id="customcontent"> - -<h2 id="steps">Steps for Submitting a Feature Request</h2> - -<p> -The following guides you step-by-step through the -process of submitting a feature request. -</p> - -<ul> -<li> -<strong><a href="http://www.tigris.org/servlets/Login">Log in</a> at tigris.org</strong> -<p> -If you do not already have a tigris.org account, -register for one at -<a href="http://www.tigris.org/servlets/Join">http://www.tigris.org/servlets/Join</a>. -</p> -<p> -We no longer accept anonymous feature requests, -due to spambot abuse of the open-door policy. -</p> -</li> -<li> -<strong>Go to the -<a href="http://scons.tigris.org/issues/enter_bug.cgi?component=scons&subcomponent=scons&issue_type=FEATURE">"Enter issue" page</a> -</strong> -<p> -By default, the "scons" subcomponent is selected; -if this bug is for a different subcomponent, select that instead. -</p> -</li> -<li> -<strong>Fill in a good Summary line describing the feature you're requesting</strong> -<p> -This line is what shows up in summary reports, -so it should be descriptive but not too long. -</p> -</li> -<li> -<strong>Fill in the Description field</strong> -<p> -This is where you should go into detail -about what you'd like to see SCons do differently. -When in doubt, include more information rather than less. -</p> -</li> -<li> -<strong>Press the "Submit issue" to submit your request</strong> -<p> -You will now receive a <tt>Posting issue</tt> page -that gives you the number of the issue you submitted. -If you want to attach a file to your feature request, -you can do so by clicking the -<tt>Attach a file to this issue</tt> -link and using that page to upload a file. -</p> -</li> -</ul> - -</div> - -</body> -</html> diff --git a/www/gen_sched_table.py b/www/gen_sched_table.py deleted file mode 100755 index 85b1b81..0000000 --- a/www/gen_sched_table.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -from __future__ import print_function - -import sys -import datetime - -months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', - 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] - -print('<table width="100%">') -def row(*cells, **kw): - td = kw.get('tr','td') - print(' <tr>') - for cell in cells: - print(' <%s>%s</%s>' % (td,cell,td)) - print(' </tr>') -row('Estimated date', 'Type', 'Comments', tr = 'th') - -if len(sys.argv) > 1: - f = open(sys.argv[1]) -else: f = open('schedule') -now = None -current = 'UNKNOWN' -for line in f: - if line[0] == '#': continue # comment - if line[0] == '=': - date,current = line[1:].strip().split(None, 1) - now = datetime.date(*tuple([int(i) for i in date.split('-')])) - continue - if line[0] == '+': - incr,type,desc = line[1:].strip().split(None,2) - now = now + datetime.timedelta(int(incr)) - else: - print('dunna understand code', line[0]) - sys.exit(1) - #name = current + '.d' + str(now).replace('-','') - date = '%s-%s-%s' % (now.day,months[now.month-1],now.year) - if type == 'ck': - category = 'Ckpt' - elif type == 'rc': - category = 'RC' - else: - category = current = type - row(date, category, desc) -print('</table>') - -# Local Variables: -# tab-width:4 -# indent-tabs-mode:nil -# End: -# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/www/index.html b/www/index.html deleted file mode 100644 index 203435d..0000000 --- a/www/index.html +++ /dev/null @@ -1,288 +0,0 @@ -<html> -<head> -</head> -<body> - -<div class="h2 app" style="border-left: 0px" id="customcontent"> - -<h2>What is SCons?</h2> - -<p>SCons is a next-generation, -cross-platform, build tool. -Think of SCons as an improved -substitute for the classic -<tt>Make</tt> utility -with integrated functionality -similar to <tt>autoconf</tt>/<tt>automake</tt> -and compiler caches such as <tt>ccache</tt>. -</p> - -<p> -Unlike build tools that invent their own mini-language -or wedge a scripting language onto some other -configuration file syntax, -SCons configuration files -are actually Python scripts. -The ability to script your build -gives you a tremendous amount of flexibility -to solve complicated build problems -in surprisingly small amounts of maintainable code. -</p> - -<p> -In short, SCons is an easier, more reliable -and more flexible way to build software. -</p> - -<!-- - -<h2><b>Goal</b></h2> - -<p>The primary goal of The SCons Project -is to become the premiere enterprise-quality tool for -building cross-platform, multi-language software projects -by offering unparalleled <b>reliability</b> and <b>flexibility</b> -to software buildmasters and developers. -</p> - -<p> -Yeah, yeah, every project has similar lofty mom-and-apple-pie goals, -blah, blah, blah... -So why is SCons any different? -Fair question. -If you go to our public home page at -<a href="http://www.scons.org/">http://www.scons.org</a> -you'll get the usual lists of -supported features and platforms, testimonials, etc. -But you're presumably at <emphasis>this</emphasis> -project page because you're interested in digging a little deeper. -So here are the <emphasis>philosophical viewpoints</emphasis> -that we think contribute to SCons being -a really distinctive software build tool: -</p> - -<ul> - -<li> -<strong>Software builds are getting more complicated, not less</strong> -<p> -The proliferation of programming languages and technologies -have led to increasingly difficult demands being -placed on traditional software build tools Make. -EVen if you stick to one language--a well-worn -and mature one like C, for example--the -differences between the various C tool chains -and how they behave on various platforms -make it a real challenge -to keep your software builds simple and reliable. -</p> -<p> -Consequently, SCons is a build tool -</p> -</li> - -<li> -<strong>Effective software building is not a language design issue</strong> -<p> -There are a lot of build tools out there, -and it seems like a new one pops up every week -as someone gets the urge to fix some particularly -bad build problem that they're facing. -Most build tools have, historically, -invented some special configuration file format -to express dependencies and actions. -The problem is that by the time you take care of all -of the different ways people -you really want to have the flexibility -that a scripting language gives: -loops, conditionals, real data structures, etc. -(It's interesting to note that the Ant community is -working hard on adding more scriptability to their -XML-based Ant files, -and James Duncan Davidson, Ant's creator, -is on record as saying that he'd use a scripting -language if he were doing it over again.) -</p> -<p> -</p> -<p> -Note that SCons is not completely pure in this regard. -</p> -</li> - -<li> -<strong>You want to encapsulate software build complexity -so most developers don't even have to think about it</strong> -<pp> -XXX -</pp> -</li> - -<li> -<strong>Overall, a reliable build that takes a little longer is -cheaper than a fast build that you can't rely on</strong> -<p> -This one is sometimes tough to swallow, -because we all want the build to be as quick as possible -when we're in that tight edit-build-debug development cycle. -The problem is that if you take shortcuts in how your -build tool manages the dependencies, -you waste time chasing phantom problems -that simply go away because you finally give up -and do a <tt>make clean; make</tt>. -</p> -</li> - -<li> -<strong>Building software in multiple side-by-side variants is crucial -in a multi-platform world</strong> -<pp> -XXX -</pp> -</li> - -</ul> - ---> - -<h2><b>SCons Features</b></h2> - -<ul> - -<li> -<strong>Configuration files are Python scripts</strong> -<p> -This provides much more flexibility for solving -difficult build problems -than traditional build tools. -</p> -</li> - -<li> -<strong>Reliable, automatic dependency analysis</strong> -<p> -C, C++ and Fortran are scanned for dependencies, -eliminating the need for a separate <tt>make depend</tt> step -or a <tt>make clean</tt> to get all of the dependencies. -Avoids the time waste from debugging phantom problems -that mysteriously disappear after you -<tt>make clean; make</tt>. -Easily extended to scan for other languages or file types. -</p> -</li> - -<li> -<strong>Built-in support for multiple languages</strong> -<p> -C, C++, D, Java, Fortran, Yacc, Lex, Qt and SWIG. -Can also build TeX and LaTeX documents. -Easily extended for other languages or file types. -</p> -</li> - -<li> -<strong>Cross-platform</strong> -<p> -Known to work on Linux, -other POSIX systems (AIX, *BSD, HP/UX, IRIX, Solaris), -Windows (NT, 2000, XP), -Mac OS X, -and OS/2. -</p> -</li> - -<li> -<strong>Fetch files from SCM systems or central directory trees</strong> -<p> -Built-in support for SCCS, RCS, CVS, BitKeeper and Perforce. -On-disk directory trees can be searched for source files -or pre-built target files. -</p> -</li> - -<li> -<strong>Support for Microsoft Visual Studio .NET and 2005</strong> -<p> -Generates <tt>.dsp</tt> and <tt>.dsw</tt> files, -or <tt>.sln</tt> and <tt>.vcproj</tt> files, -from the same build configuration used to build on all platforms. -Allows Windows developers to do all the productive -point-and-click debugging they're used to -without having to maintain a separate build configuration -just for Windows. -</p> -</li> - -<li> -<strong>Reliable detection of file changes using MD5 signatures</strong> -<p> -Use of traditional file timestamps instead of MD5 can be configured. -</p> -</li> - -<li> -<strong>Parallel builds</strong> -<p> -Keeps up to N jobs running simultaneously regardless -of directory hierarchy. -</p> -</li> - -<li> -<strong>Global view of dependencies</strong> -<p> -Simplifies builds by eliminating multiple passes -or reording targets to build everything correctly. -</p> -</li> - -<li> -<strong>Multi-platform configuration (like <tt>Autoconf</tt>)</strong> -<p> -Support for finding <tt>#include</tt> files, -libraries, functions and <tt>typedef</tt> declarations. -</p> -</li> - -<li> -<strong>Shared built-file cache</strong> -<p> -Speeds up multiple builds by allowing developers -to share pre-built targets -(like <tt>ccache</tt>, but for any type of target file, -not just C/C++ compilation). -</p> -</li> - -</ul> - -<!-- - -<h2></h2> - -<p>What are the high-level assumptions or ground rules for the project? -</p> - -<p>For example: -</p> - -<ul> -<li> we will use programming language X on operating system Y for now. - -<li>We will, or will not, consider certain functional areas like -internationalization, high security, concurrency, etc. The list of -functional areas will depend on what you are trying to do. - -<li>Try to keep this part short. -</ul> - ---> - -<h2>Future</h2> - -See the <a href="roadmap.html">Roadmap</a> page. - -</div> - -</body> -</html> diff --git a/www/patch-submission.html b/www/patch-submission.html deleted file mode 100644 index a2d9b95..0000000 --- a/www/patch-submission.html +++ /dev/null @@ -1,355 +0,0 @@ -<html> -<head> -<title>Patch Submission</title> -</head> -<body> - -<div id="apphead"> -<h1><small>scons</small><br />Patch Submission</h1> -</div> - -<p> -<strong>You must now -<a href="http://www.tigris.org/servlets/Login">log in</a> -to a <a href="http://www.tigris.org">tigris.org</a> account -before submitting a patch!</strong> -</p> - -<p> -Patches should be submitted to the -<a href="http://scons.tigris.org/issues/enter_bug.cgi?component=scons&subcomponent=scons&issue_type=PATCH">"Enter Issue" page</a>. -Please follow the <a href="patch-submission.html#guidelines">submission guidelines</a> below -to make sure your patch contains the necessary information. -A more detailed set of <a href="patch-submission.html#steps">submission steps</a> -can be found below. -</p> - -</div> - -<div class="h2 app" style="border-left: 0px" id="customcontent"> - -<h2 id="guidelines">Guidelines for Patch Submission</h2> - -<p> -To try to maintain and improve the quality of SCons releases, -we have some pretty high standards for the quality of patches -that make it into the SCons code base. -This list of guidelines describes how to make it as -easy as possible for your patch to be accepted for integration. -We're still interested in your code -even if you don't follow all of these guidelines, -but then your patch will more than likely sit in the queue -until someone else has time to supply all of the -necessary missing items. -</p> - -<ul> - -<li> -<strong> -Please -<a href="http://www.tigris.org/servlets/Login">log in</a> -to your tigris.org account before submitting any patch -</strong> -<p> -If you do not already have a tigris.org account, -register for one at -<a href="http://www.tigris.org/servlets/Join">http://www.tigris.org/servlets/Join</a>. -</p> -<p> -We no longer accept anonymous patches, -due to spambot abuse of the open-door policy. -</p> -</li> - -<li> -<strong>If your patch is extensive, discuss it first on the -<a href="mailto:scons-dev@scons.org">scons-dev@scons.org</a> -mailing list -</strong> -<p> -In fact, for extensive changes, it's a good idea to have this discusssion -<em>before</em> you invest too much time in coding. -It's possible that your idea overlaps with something else -already in the works, -or that your idea is unlikely to be accepted -because it would conflict with planned directions for SCons. -It's much better to find that out, -or get advice on acceptable design choices. -before you've spent a lot of time polishing code -that will be rejected because it doesn't fit -plans for the architecture. -</p> -</li> - -<li> -<strong>It's better to submit multiple patches with separate bits of functionality than a big patch containing lots of changes</strong> -<p> -Big, intertwined sets of changes -increase the chances of unintended side effects -that could cause the entire patch to be rejected. -If you submit separate functional changes in separate patches, -those change that meet all the criteria can -still be integrated even -though other pieces might be held up for one reason or another. -</p> -</li> - -<li> -<strong>Submit your patch in <tt>diff -u</tt> or <tt>diff -c</tt> format</strong> -<p> -In particular, do <em>not</em> submit whole source files, -or <tt>diff</tt> output without any kind of context information. -It's much more difficult to integrate whole source files -or plain <tt>diff</tt> output with other changes to -the SCons code base, -especially other changes that might be integrated -after you've submitted your patch. -</p> -</li> - -<li> -<strong>Your patch must include test case(s) before it can be integrated!</strong> -<p> -THIS IS THE SINGLE MOST COMMON REASON FOR DELAYS IN INTEGRATING PATCHES -AND THE SINGLE MOST IMPORTANT THING YOU CAN DO TO INCREASE THE -CHANCES OF YOUR PATCH BEING INTEGRATED QUICKLY. -</p> -<p> -The SCons development methodology requires -that each change be accompanied by one or more -new or modified test cases -that get added to our extensive regression test suite. -This is to make sure that the behavior added by your patch -doesn't get inadvertently broken by other changes in the future. -Patches that fix bugs should contain at least one test case -that demonstrates the behavior being fixed by the patch. -For example, if you're fixing a configuration that causes -SCons to exit with an error and a stack trace, -the test case should trigger that stack trace -when run against the current code. -Patches that add new features or enhancements -should contain test cases that use -the new behavior being added to SCons. -</p> -<p> -You can do any of the following to supply -test cases with your patch: -</p> -<ul> -<li> -<strong>Include actual new or modified SCons test scripts in your patch</strong> -<p> -This is the best option because it's the easiest to integrate, -and therefore maximizes the chances of your patch being accepted quickly. -(Note that, yes, there's a curve to learning how to -write test scripts in the SCons testing harness. -We're working on documentation to deal with that.) -</p> -</li> -<li> -<strong>Include a .tar.gz or .zip file containing test configurations</strong> -<p> -If you can't quite figure out how to deal with the SCons test scripts, -the next best option is to include with your patch an archive file -containing one or more actual test configurations -(<tt>SConscript</tt> files, input files, etc.). -It will be relatively straightforward for someone integrating your patch, -and who's presumably familiar with the SCons testing harness, -to turn this into an appropriate test script. -Be sure to include a description of how to run your recommended test scenario, -or a script for doing so. -</p> -</li> -<li> -<strong>Describe how to go about testing the patch</strong> -<p> -If you really can't cook up a test configuration to include with the patch, -the lowest-common-denominator approach is to just describe -how to go about testing the patch. -Be as specific as possible, -even if you think it should be obvious -how to test the patch. -It might be clear to you while you're writing the code, -but it will still take someone else time -to make sure they understand your intent -and work out the details of how to set up an appropriate case. -The point is you're trying to use your existing knowledge -of the bug being fixed or new feature being added -to make the process of integrating your patch as -simple and quick as possible, -thereby increasing the chance of your patch making it -into the SCons code base. -</p> -</li> -</ul> -<p> -If you don't supply <em>any</em> sort of testing -information with your patch, -well, you're still welcome to submit the code. -Just be aware that the patch will likely stay -in the queue until someone has time to reverse-engineer -a test case. -</p> -</li> - -<li> -<strong>Your patch should not break any existing tests</strong> -<p> -This almost sounds like it should go without saying, -but the reason we put so much emphasis on test cases -is so that we can make sure functionality doesn't break. -Your patch will almost certainly be run through the -the complete set of checked-in test scripts, -and if any of them break, -your patch will either be rejected outright -or delayed while someone else figures out how to fix it -(or the tests) so that everything works correctly. -You should, of course, avoid this by running your patch -against the regression tests and fixing any problems -<em>before</em> submitting your patch. -If you run your patch against against the regression tests -but can't figure out how to fix all the cases, -the best bet would be to ask the -<a href="mailto:scons-dev@scons.org">scons-dev@scons.org</a> -mailing list. -</p> -</li> - -<li> -<strong>Your patch should include documentation changes</strong> -<p> -We also insist that changes to the SCons code base -be accompanied by appropriate changes to the documentation. -In practice, right now we make sure the man page is up to date, -and updates to the User's Guide often lag. -</p> -<p> -Similar to the guidelines above for testing, -if you don't submit changes to the actual man page with your patch, -it's helpful if you at least provide -some suggested text describing your change. -Even if the actual words get rewritten -(usually to make the style consistent with the rest of the man page), -taking the time to provide this -makes the integration easier because -the person integrating the patch doesn't have -to reverse-engineer the <em>intent</em> -of your change to figure out how to describe it. -</p> -</li> - -</ul> - -<h2 id="steps">Steps for Submitting a Patch</h2> - -<p> -The following guides you step-by-step through the -process of submitting a patch to SCons. -</p> - -<p> -NOTE: Attaching a file or files -(such as a .tar.gz or .zip file containing your patch) -is a two-step process in the tigris.org Issue Tracker. -You must first create the patch issue in the Tracker, -and then attach the file(s) in a separate step, -as described below. -</p> - -<ul> - -<li> -<strong><a href="http://www.tigris.org/servlets/Login">Log in</a> at tigris.org</strong> -<p> -If you do not already have a tigris.org account, -register for one at -<a href="http://www.tigris.org/servlets/Join">http://www.tigris.org/servlets/Join</a>. -</p> -<p> -We no longer accept anonymous bug reports, -due to spambot abuse of the open-door policy. -</p> -</li> - -<li> -<strong>Go to the -<a href="http://scons.tigris.org/issues/enter_bug.cgi?component=scons&subcomponent=scons&issue_type=PATCH">"Enter issue" page</a> -</strong> -<p> -By default, the "scons" subcomponent is selected; -if this bug is for a different subcomponent, select that instead. -</p> -</li> - -<li> -<strong>Specify the version of SCons that you used as a baseline</strong> -<p> -You can leave this <tt>-unspecified-</tt>, -in which case the assumption will be that you started with -the code checked in to our Subversion repository -at the time you opened the issue. -</p> -</li> - -<li> -<strong>Fill in a good Summary line describing the patch</strong> -<p> -This line is what shows up in summary reports, -so it should be descriptive but not too long. -Avoid overly-general things like "SCons error," etc. -</p> -</li> - -<li> -<strong>Fill in the Description field</strong> -<p> -This is where you should describe -the nature of your patch: -the exact error it fixes, -the feature that it adds, -how to go about testing it, -etc. -When in doubt, include more information rather than less. -</p> -</li> - -<li> -<strong>Press the "Submit issue" to submit your report</strong> -<p> -You will now receive a <tt>Posting issue</tt> page -that gives you the number of the issue you submitted. -</p> -</li> - -<li> -<strong>Click the "Attach a file to this issue" link</strong> -<p> -</p> -</li> - -<li> -<strong>Fill in the "File" field with the path to the patch file you want to upload</strong> -<p> -(You can also do this through the <tt>Browse...</tt> button.) -</p> -</li> - -<li> -<strong>Fill in the Description field</strong> -<p> -</p> -</li> - -<li> -<strong>Click the "Submit" button to attach your patch file</strong> -<p> -</p> -</li> - -</ul> - -</div> - -</body> -</html> diff --git a/www/project_highlights.html b/www/project_highlights.html deleted file mode 100644 index 98f00bc..0000000 --- a/www/project_highlights.html +++ /dev/null @@ -1,24 +0,0 @@ -<html> -<head> -</head> -<body> - - -<p> -<strong>09 Sep 2011:</strong> -Release 2.1.0 is now available at the -<a href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>. -</p> - - -<p> -<strong>15 Aug 2010:</strong> -Release 2.0.1 is now available at the -<a href="http://sourceforge.net/projects/scons/files/">download page</a>. -</p> - - - - -</body> -</html> diff --git a/www/project_issues.html b/www/project_issues.html deleted file mode 100644 index dc28ca8..0000000 --- a/www/project_issues.html +++ /dev/null @@ -1,123 +0,0 @@ -<div id="apphead"> -<h1><small>scons</small><br /> Issue Tracker - </h1> -</div> - - -<div id="projectissues" class="application"> - - -<table class="axial"> - - <tr> - <th><a href="http://scons.tigris.org/issues/query.cgi">Query database</a></th> - <td> - Search for issues and defects here or find a specific issue. Always search first before reporting an issue to avoid duplication. - <form id="ProjectIssuesForm" method="get" action="http://scons.tigris.org/issues/show_bug.cgi"> - <p> - <input type="submit" value="Find" /> Issue # <input name="id" size="6" /> - - </p> - </form> - <p> - Common queries: - </p> - <table> - <tr> - <td COLSPAN="4"> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&component=scons&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&issue_status=UNCONFIRMED">All Open Issues</a> </td> - </tr> - <tr> - <td> <ul> <li> Bug Reports: </li> </ul> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=DEFECT&component=scons">All</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=DEFECT&component=scons&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&issue_status=UNCONFIRMED">Open</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=DEFECT&component=scons&issue_status=RESOLVED&issue_status=VERIFIED&issue_status=CLOSED">Non-Open</a> </td> - </tr> - <tr> - <td> <ul> <li>Enhancement: </li> </ul> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=ENHANCEMENT&component=scons">All</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=ENHANCEMENT&component=scons&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&issue_status=UNCONFIRMED">Open</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=ENHANCEMENT&component=scons&issue_status=RESOLVED&issue_status=VERIFIED&issue_status=CLOSED">Non-Open</a> </td> - </tr> - <tr> - <td> <ul> <li>Feature Requests: </li> </ul> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=FEATURE&component=scons">All</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=FEATURE&component=scons&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&issue_status=UNCONFIRMED">Open</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=FEATURE&component=scons&issue_status=RESOLVED&issue_status=VERIFIED&issue_status=CLOSED">Non-Open</a> </td> - </tr> - <tr> - <td> <ul> <li> Patches: </li> </ul> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=PATCH&component=scons">All</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=PATCH&component=scons&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&issue_status=UNCONFIRMED">Open</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=PATCH&component=scons&issue_status=RESOLVED&issue_status=VERIFIED&issue_status=CLOSED">Non-Open</a> </td> - </tr> - <tr> - <td> <ul> <li> Tasks: </li> </ul> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=TASK&component=scons">All</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=TASK&component=scons&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&issue_status=UNCONFIRMED">Open</a> </td> - <td> <a href="http://scons.tigris.org/issues/buglist.cgi?Submit+query=Submit+query&issue_type=TASK&component=scons&issue_status=RESOLVED&issue_status=VERIFIED&issue_status=CLOSED">Non-Open</a> </td> - </tr> - </table> - </td> -</tr> - - - <tr> - <th>Enter an issue</th> - <td> - - To enter an issue, you must first be a project member and know the component you want to report on. - - - -<p> - -Enter: -</p> - <ul> - <li><a href="http://scons.tigris.org/issues/enter_bug.cgi?issue_type=DEFECT">Defect</a></li> - <li><a href="http://scons.tigris.org/issues/enter_bug.cgi?issue_type=PATCH">Patch</a></li> - <li><a href="http://scons.tigris.org/issues/enter_bug.cgi?issue_type=TASK">Task</a></li> - <li><a href="http://scons.tigris.org/issues/enter_bug.cgi?issue_type=FEATURE">Feature</a></li> - <li><a href="http://scons.tigris.org/issues/enter_bug.cgi?issue_type=ENHANCEMENT">Enhancement</a></li> - -</ul> - </td> -</tr> - - - - <tr> - <th><a href="http://scons.tigris.org/issues/buglist.cgi?cmdtype=runuserdefault">My issues</a></th> - <td> - View both active issues assigned to you and those that you have entered. - </td> -</tr> - <tr> - <th><a href="http://scons.tigris.org/issues/userprefs.cgi">My preferences</a></th> - - <td> - View and edit your Issue Tracker user settings. - </td> -</tr> - - <tr> - <th><a href="http://scons.tigris.org/issues/reports.cgi">Reports</a></th> - <td> - Generate and view issue tracking reports. - </td> -</tr> - - - - <tr> - <th><a href="http://scons.tigris.org/issues/admin.cgi">Configuration options </a> - </th> - <td> - Add, view and edit Issue Tracker configuration parameters, including project member permissions, issue tracking groups, project components and subcomponents, etc. - </td> -</tr> - - - -</table> -</div> diff --git a/www/project_tools.html b/www/project_tools.html deleted file mode 100644 index ee731a4..0000000 --- a/www/project_tools.html +++ /dev/null @@ -1,41 +0,0 @@ -<!-- -This is a customization of the tigris.org nav bar to try to make -things a little more navigable. This isn't really approved by -tigris.org (I copped the basic idea from the Subversion project pages), -but it works for our purposes. - -The main changes are: - -* Added links to the scons.org home page and scons.org wiki. -* Our custom issue tracker page, which contains common queries. -* Subheadings for reporting a bug / submitting a patch / request a feature. -* Link to our Roadmap page. ---> -<li><a href="http://scons.org/">SCons Home Page</a></li> -<li><a href="http://scons.org/wiki/">SCons Wiki</a></li> -</dd> - -<dd> -<li><a href="/servlets/ProjectMemberList">Project Membership</a></li> -<li><a href="/servlets/ProjectNewsList">Announcements</a></li> -<li><a href="http://scons.org/lists.php">Discussion lists/fora</a></li> -<!-- <li><a href="/ds/viewForums.do">Discussion lists/fora</a></li> --> -<li><a href="/servlets/ProjectDocumentList">Documents & files</a></li> -<li><a href="/source/browse/scons/">Browse source code</a></li> -<li><a href="/servlets/ReportingHome?scope=Project">Project metrics</a></li> -</dd> - -<dd> -<li> -<!-- <a href="/servlets/ProjectIssues">Issue Tracker</a> --> -<a href="/project_issues.html">Issue Tracker</a> -<ul> -<li><a href="/bug-submission.html">Report a Bug</a></li> -<li><a href="/patch-submission.html">Submit a Patch</a></li> -<li><a href="/feature-request.html">Request a Feature</a></li> -</ul> -</li> -</dd> - -<dd> -<li><a href="/roadmap.html">Roadmap</a></li> diff --git a/www/roadmap.html b/www/roadmap.html deleted file mode 100644 index 333d0fd..0000000 --- a/www/roadmap.html +++ /dev/null @@ -1,173 +0,0 @@ -<html> -<head> -<title>scons: Release Roadmap</title> -</head> -<body> - -<div id="apphead"> -<h1><small>Release Roadmap</small></h1> -</div> - -<div class="h2 app" style="border-left: 0px" id="customcontent"> - -<h2>Current Releases</h2> - -<p> -The current stable release is 2.1.0, released 09 Sep 2011. -The latest 2.1.x release is 2.1.0, released 09 Sep 2011. -</p> - -<p> -The latest 1.3.x release is 1.3.1, released 25 July 2010. -</p> - -<h2>Upcoming Releases</h2> - -<p> -Our goal is to meet the dates -for release candidates and the releases themselves; -the beta checkpoint dates are our best guess as this was published, -but they may be adjusted without notice. -</p> - -<!-- - -DO NOT EDIT THE FOLLOWING TABLE DIRECTLY. - -Edit the "schedule" file and replace it with the output from -running "gen_sched_table.py". - ---> - -<table width="100%"> - <tr> - <th>Estimated date</th> - <th>Type</th> - <th>Comments</th> - </tr> - <tr> - <td>May 2010</td> - <td>Ckpt</td> - <td>Beta for 2.0; breaks backward compatibility</td> - </tr> - <tr> - <td>June 2010</td> - <td>RC</td> - <td>Release candidate for 2.0.</td> - </tr> - <tr> - <td>June 2010</td> - <td>2.0</td> - <td>Public release that breaks backward compatibility and drops deprecated features</td> - </tr> - <tr> - <td>July 2010</td> - <td>Ckpt</td> - <td>Beta for testing new features.</td> - </tr> - <tr> - <td>Aug 2010</td> - <td>Ckpt</td> - <td>Beta for testing new features.</td> - </tr> - <tr> - <td>Sept 2010</td> - <td>RC</td> - <td>Release candidate for 2.1.</td> - </tr> - <tr> - <td>Oct 2010</td> - <td>2.1</td> - <td>First minor release of v2</td> - </tr> -</table> - -<!-- - -<h2>Upcoming Features</h2> - ---> - -<h2>Release Planning</h2> - -<h3>Release numbering</h3> - -<p> -Our release numbers are of the form <i>major</i>.<i>minor</i>.<i>revision</i>. -</p> - -<ul> -<li> -<strong>Major release (1.0, 2.0, 3.0, etc.)</strong> -<p> -The major number increments when one of two things happens: -</p> - <ul> - <li>The release knowingly breaks backwards compatibility in some way. - <li>The release knowingly causes a rebuild when you upgrade. - </ul> -<p> -Our goal is that as a user of SCons, -you should always be able to upgrade to a later -release of the same major version -with complete confidence that your build will not break. -We expect that our major releases will be long-lived platforms -with many minor releases to add functionality and fix bugs. -</p> -</li> -<li> -<strong>Minor release (1.1, 1.2, 1.3, etc.)</strong> -<p> -Minor numbers increment for releases -that add new functionality and/or bug fixes -to an existing major release. -Any new functionality will never knowingly break backwards compatibility -with any previous minor releases from the same major release. -</p> -</li> -<li> -<strong>Bug-fix revisions (1.0.1, 1.1.1, 1.2.1, etc.)</strong> -<p> -Revision numbers are appended and/or incremented -whenever a critical bug fix is necessary -for a major or minor release. -Because most new functionality and bug fixes -will be delivered in minor releases, -we expect that there will be few of these—at most -one per minor release. -</p> -</li> -<li> -<strong>Release candidates (x.y.z.dyyyymmdd)</strong> -<p> -A release candidates is a special form of checkpoint -(see below) -that is expected to be the next major or minor release. -If blocking issues show up in the candidate, -another candidate will normally be issued -(potentially delaying the release date), -otherwise the candidate will be repackaged as the major or minor release. -</p> -</li> -<li> -<strong>Checkpoints (x.y.z.dyyyymmdd)</strong> -<p> -A checkpoint has a 'd<i>yyymmdd</i>' suffix -and is made every couple of weeks between major or minor releases. -It is intended for beta testing new features -and for ensuring that bug fixes work as intended. -Although existing features from the previous release will not change, -compatibility of features under test is not guaranteed between checkpoints -(<i>i.e.</i>, the implementation of the feature may change). -Checkpoints are intended not only to allow for wider testing, -but also to make new features available to users -(who may urgently need one of them) -in advance of them being published in the next major or minor release. -</p> -</li> -</ul> - -</div> - -</body> -</html> diff --git a/www/schedule b/www/schedule deleted file mode 100644 index 4b1e9eb..0000000 --- a/www/schedule +++ /dev/null @@ -1,19 +0,0 @@ -#=2008-09-13 1.0.1 -#=2008-10-01 Release candidate for 1.1. -#=2008-10-10 1.1.0 -=2008-12-01 1.1.0 -+4 rc Release candidate for 1.2. (released 7-Dec) -+7 1.2 Second minor release of 1.0. (released 21-Dec) -+17 ck Beta for testing new features. -+14 ck Beta for testing new features. -+7 rc Release candidate for 1.3. -+7 1.3 Third minor release of 1.0. -+7 ck Beta for 2.0; breaks backward compatibility -#+7 ck Beta for 2.0. -+7 rc Release candidate for 2.0. -+7 rc Release candidate for 2.0, if needed. -+7 2.0 Public release that breaks backward compatibility and drops deprecated features -+21 ck Beta for testing new features. -+21 ck Beta for testing new features. -+21 rc Release candidate for 2.1. -+7 2.1 First minor release of 2.0 |