SConshttps://scons.org/2024-03-18T20:32:00-07:00Current Documentation2024-03-18T20:32:00-07:002024-03-18T20:32:00-07:00SCons Foundationtag:scons.org,2024-03-18:/documentation.html<p>This page contains links to general SCons documentation, and to
documentation (man page and User's Guide) for the current stable release
of SCons: 4.7.0. Man pages and User's Guides for other releases of SCons
are available at the <a href="https://scons.org/docversions.html">Version Specific SCons Documentation</a> page.</p>
<h3>SCons 4.7.0 man …</h3><p>This page contains links to general SCons documentation, and to
documentation (man page and User's Guide) for the current stable release
of SCons: 4.7.0. Man pages and User's Guides for other releases of SCons
are available at the <a href="https://scons.org/docversions.html">Version Specific SCons Documentation</a> page.</p>
<h3>SCons 4.7.0 man page</h3>
<p>The man page for the current stable release of SCons. We're meticulous
about updating the man page whenever new functionality is added or
something changes, so this covers everything that the current version of
SCons can do (modulo oversights).</p>
<ul>
<li><a href="doc/production/HTML/scons-man.html">HTML</a></li>
<li><a href="doc/production/PDF/scons-man.pdf">PDF</a></li>
<li><a href="doc/production/EPUB/scons-man.epub">EPUB</a></li>
<li><a href="doc/production/TEXT/scons-man.txt">Plain text</a></li>
</ul>
<h3>SCons 4.7.0 User Guide</h3>
<p>The User's Guide for the current stable release of SCons.
This is a more task-oriented introduction, but should be read
with the man page at hand, as it does not cover everything.
This remains a <em>work in progress</em>,
please help improve this document by letting the SCons maintainers
know about anything you find that's incorrect, or about missing pieces
in which you're especially interested (or to which you can contribute
yourself).</p>
<ul>
<li><a href="doc/production/HTML/scons-user.html">HTML (single page)</a></li>
<li><a href="doc/production/HTML/scons-user/index.html">HTML (multiple pages)</a></li>
<li><a href="doc/production/PDF/scons-user.pdf">PDF</a></li>
<li><a href="doc/production/EPUB/scons-user.epub">EPUB</a></li>
<li><a href="doc/production/TEXT/scons-user.txt">Plain text</a></li>
</ul>
<h3>SCons 4.7.0 API</h3>
<p>Documentation for the internal API of the latest release of SCons,
generated by <a href="https://www.sphinx-doc.org/en/master/">sphinx</a>
from the SCons source code and doc strings.
<strong>WARNING:</strong> we really mean internal: there's lots here that
is only intended for SCons to use itself, and should not be
picked up by SConscript files - and if it is, it is not
guaranteed not to change across versions. The source code markup
is not annotated in a way as to distringuish public from non-public API.
Use the man page as the reference to the public SCons API.</p>
<ul>
<li><a href="doc/latest/HTML/scons-api/index.html">HTML (multiple pages)</a></li>
<li><a href="doc/latest/PDF/scons-api.pdf">PDF</a></li>
<li><a href="doc/latest/PS/scons-api.ps">PostScript</a></li>
</ul>
<h3>SCons Design</h3>
<p>The ongoing SCons design document, based largely on the <a href="archive/sscons/index.html">ScCons
design</a> from the second round of the
<a href="http://web.archive.org/web/20011217191143/http://sc-archive.codesourcery.com/">Software
Carpentry</a>
contest. <strong>This is quite out of date at the moment</strong>,
and needs to be updated, nearly two decades of development have
happened since then.</p>
<ul>
<li><a href="doc/production/PDF/scons-design.pdf">PDF</a></li>
</ul>
<h3>SCons Design and Implementation</h3>
<p>The paper about SCons presented at the Python 10 conference in February
2002, a nominee for the best paper award at the conference.</p>SCons 4.7.0 is available2024-03-17T14:25:00-07:002024-03-17T14:25:00-07:00William Deegantag:scons.org,2024-03-17:/scons-470-is-available.html<p class="first last">SCons release 4.7.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.7.0/">page</a> at SourceForge. This release should be used instead of 4.6.0. This release fixes one issue. <strong>This release ONLY supports Python versions 3.6+.</strong></p>
<p>A new SCons release, 4.7.0, is now available on the SCons download page:</p>
<blockquote>
<a class="reference external" href="https://scons.org/pages/download.html">https://scons.org/pages/download.html</a></blockquote>
<p>Here is a summary of the changes since 4.6.0:</p>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<ul class="simple">
<li>Method unlink_files was added to the TestCmd class that unlinks a list of files
from a specified directory. An attempt to unlink a file is made only when the
file exists; otherwise, the file is ignored.</li>
</ul>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h2>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h2>
<ul class="simple">
<li>Add an optional argument list string to configure's CheckFunc method so
that the generated function argument list matches the function's
prototype when including a header file. Fixes GH Issue #4320</li>
<li>Now supports pre-release Python 3.13</li>
<li>Support for Python versions without support for the <cite>threading</cite> package has been removed</li>
<li>Dropped three unused warning classes: DeprecatedSourceCodeWarning,
TaskmasterNeedsExecuteWarning, DeprecatedMissingSConscriptWarning.</li>
<li>Two warning classes that are actually used were added to manpage section on
enabling warnings (cache-cleanup-error, future-reserved-variable).</li>
</ul>
</div>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul class="simple">
<li>Fix of the --debug=sconscript option to return exist statements when using return
statement with stop flag enabled</li>
<li>MSVS: prevent overwriting the SCons environment variable SCONS_HOME with the OS
environment value of SCONS_HOME in the msvs tool.</li>
<li>MSVC: Fix the detection of Visual Studio 2015 Express ('14.0Exp') by adding a
registry key definition and updating the installation root-relative registry value
at runtime for the location of the VC folder.</li>
<li>MSVS: Fix the msvs project generation test for MSVS 6.0 to use the correct name of
the generated project file.</li>
<li>MSVS: Fix the msvs project generation test scripts so that "false positive" tests
results are not possible when the initial build is successful and the command-line
build of the project file fails.</li>
<li>On Windows platform, when collecting command output (Configure checks),
make sure decoding of bytes doesn't fail.</li>
<li>Documentation indicated that both Pseudo() and env.Pseudo() were usable,
but Pseudo() did not work; is now enabled.</li>
<li>Improve handling of file data that SCons itself processes - as in
scanners - try harder to decode non-UTF-8 text.</li>
<li>PyPackageDir no longer fails if passed a module name which cannot be found,
now returns None.</li>
<li>Add locking around creation of CacheDir config file. Fixes issue #4489.</li>
</ul>
</div>
<div class="section" id="improvements">
<h2>IMPROVEMENTS</h2>
<ul class="simple">
<li>Use of NotImplemented instead of NotImplementedError for special methods
of _ListVariable class</li>
<li>The NewParallel scheduler is now the default, the <cite>tm_v2</cite> flag is removed,
and the old scheduler is opt-in under <cite>--experimental=legacy_sched</cite>. Additionally,
the new scheduler is now used for -j1 builds as well.
NOTE: This should significantly improve SCons performance for larger parallel builds (Larger -j values)</li>
<li>CacheDir writes no longer happen within the taskmaster critical section, and therefore
can run in parallel with both other CacheDir writes and the taskmaster DAG walk.</li>
<li>The NewParallel scheduler now only adds threads as new work requiring execution
is discovered, up to the limit set by -j. This should reduce resource utilization
when the achievable parallelism in the DAG is less than the -j limit.</li>
<li>Dumping an environment with <cite>json</cite> formatting will now explicitly specify if a given
value cannot be serialized.</li>
</ul>
</div>
<div class="section" id="packaging">
<h2>PACKAGING</h2>
<ul class="simple">
<li>Remove unnecessary dependencies on pypi packages from setup.cfg</li>
<li>SCons documentation build can now be controlled through SKIP_DOC
variable - rather than just true/false can now specify
skip none, skip all, skip pdf docs, skip api docs.</li>
</ul>
</div>
<div class="section" id="documentation">
<h2>DOCUMENTATION</h2>
<ul class="simple">
<li>Fixed the Scanner examples in the User Guide to be runnable and added
some more explanation. Clarified discussion of the scanner function in
the Scanner Objects section of the manpage.</li>
<li>The manpage entry for Pseudo was clarified.</li>
<li>The manpage entry for SharedLibrary was clarified.</li>
<li>Update API docs for Warnings framework; add two warns to manpage
enable/disable control.</li>
<li>More consistent use of &Python; in the manpage. A few links added.
A warning about overwriting env['ENV'] and one about Configure
checks possibly not running in in no-exec mode also added.</li>
<li>Clarify how SCons finds the project top directory, and what that is used for.</li>
<li>Clarify MergeFlags usage of a dict argument.</li>
</ul>
</div>
<div class="section" id="development">
<h2>DEVELOPMENT</h2>
<ul class="simple">
<li>Fix sphinx config to handle SCons versions with post such as: 4.6.0.post1</li>
<li>Created SCons.Util.sctyping to contain complex type information, allowing
for repo-wide type hinting without causing cyclical dependencies.</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.6.0..HEAD
26 Andrew Morrow
24 Mats Wichmann
14 William Deegan
7 Joseph Brill
6 StenGruener
3 Prabhu S. Khalsa
3 Thaddeus Crews
2 fazledyn-or
1 Michał Górny
1 Piotr Siupa
</pre></div>
</div>
</div>
Development2023-11-20T19:26:00-08:002023-11-20T19:26:00-08:00SCons Foundationtag:scons.org,2023-11-20:/dev.html<h2>Developers Wanted:</h2>
<p>SCons is actively looking for contributors. You can contribute
to the code of SCons itself, the documentation, the examples/
cookbook, and more.
If you're interested, we'd love to hear from you at <a href="mailto:scons-dev@scons.org">scons-dev@scons.org</a>.</p>
<h2>What it takes to contribute to SCons:</h2>
<p>There is a complete and …</p><h2>Developers Wanted:</h2>
<p>SCons is actively looking for contributors. You can contribute
to the code of SCons itself, the documentation, the examples/
cookbook, and more.
If you're interested, we'd love to hear from you at <a href="mailto:scons-dev@scons.org">scons-dev@scons.org</a>.</p>
<h2>What it takes to contribute to SCons:</h2>
<p>There is a complete and evolving set of
<a href="https://scons.org/guidelines.html">Developer's Guidelines</a> that go
into reasonable detail about how we're guaranteeing that SCons continues to be
an exceptionally stable and reliable tool for building software.
Here are two key points:</p>
<ul>
<li>We write a lot of automated tests to test thoroughly test SCons.
Lines of test code currently outnumber lines of code in SCons
itself by about 3:1.</li>
<li>SCons uses GitHub to manage receiving patches via <a href="https://github.com/SCons/scons/pulls">Pull Requests</a> from the community</li>
</ul>
<h2>Guidelines:</h2>
<p>Please take a look at the current guidelines before deciding to hop on
board.</p>
<ul>
<li><a href="https://scons.org/guidelines.html">Developer's Guidelines</a></li>
</ul>
<h2>GitHub:</h2>
<p>SCons' git is hosted on <a href="https://github.com/SCons/scons">GitHub</a>. </p>
<ul>
<li><a href="https://github.com/SCons/scons/pulls">Pull Requests</a></li>
<li><a href="https://github.com/SCons/scons/issues">Issues</a></li>
<li><a href="https://github.com/SCons/scons">Browsable Code</a></li>
<li><a href="https://github.com/SCons/scons/wiki/GitWorkflows">SCons Git workflow guide</a> </li>
</ul>
<p>The <code>master</code> branch contains current development. </p>
<p>Occasionally long-term development is carried out on a branch. Anyone may clone
the main repository from GitHub. </p>
<h2><a href="doc/latest/HTML/scons-api/index.html">Latest API documentation</a></h2>
<p>A set of HTML pages documenting the internal APIs of the latest SCons release.
These are generated by <a href="https://www.sphinx-doc.org/en/master/">sphinx</a>
from the SCons source code and docstrings.</p>
<p>The API docs are an internal resource, helpful for
developing SCons. The distinction between "public API",
which comes with consistency guarantees, and "internal API",
which does not, is not necessarily clear from these docs;
the public API is what appears in the manpage.</p>
<p>There's also kind of an intermediate API: methods which might
need to be tapped into by developers writing components to work
with SCons, like new tools, builders, scanners, etc. </p>
<p>The docstrings for internal classes and methods aren't really
written consistently, or to a consistent style, and improvements
here, even piecemeal, would be a nice addition to the project.</p>
<h2>How to reach the community</h2>
<p>Please reach out to the community via mailing list,
IRC channel, or Discord server before doing any of these:</p>
<ul>
<li><a href="https://github.com/SCons/scons/issues">Filing an issue or enhancement request</a></li>
<li><a href="https://github.com/SCons/scons/pulls">Pull Request</a>.</li>
</ul>SCons 4.6.0 is available2023-11-19T14:25:00-08:002023-11-19T14:25:00-08:00William Deegantag:scons.org,2023-11-19:/scons-460-is-available.html<p class="first last">SCons release 4.6.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.6.0/">page</a> at SourceForge. This release should be used instead of 4.5.1. This release fixes one issue. <strong>This release ONLY supports Python versions 3.6+.</strong></p>
<p>A new SCons release, 4.6.0, is now available on the SCons download page:</p>
<blockquote>
<a class="reference external" href="https://scons.org/pages/download.html">https://scons.org/pages/download.html</a></blockquote>
<p>Here is a summary of the changes since 4.5.2:</p>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<ul class="simple">
<li>D compilers : added support for generation of .di interface files.
New variables DI_FILE_DIR, DI_FILE_DIR_PREFIX, DI_FILE_DIR_SUFFIX,
DI_FILE_SUFFIX.</li>
<li>MSVC: If available, native arm64 tools will be used on arm64 hosts for VS2022.</li>
<li>MSVC: If necessary, automatically define VSCMD_SKIP_SENDTELEMETRY for VS2019 and later
on arm64 hosts when using an arm (32-bit) build of python to prevent a powershell
error pop-up window (powershell dll not found).</li>
<li>Add a LIBLITERALPREFIX variable which can be set to the linker's
prefix for considering a library argument unmodified (e.g. for the
GNU linker, the ':' in '-l:libfoo.a'). Fixes Github issue #3951.</li>
</ul>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h2>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h2>
<ul class="simple">
<li>When debugging (--debug=pdb), the filenames SConstruct and SConscript
are now recognized when manipulating breakpoints. Previously,
only a full pathname to an sconscript file worked, as pdb requires
a .py extension to open a file that is not an absolute path.</li>
<li>Three unused non-public methods of the Environment Base class
were dropped: get_src_sig_type, get_tgt_sig_type, _changed_source.
These were unused remnants of the previously removed SourceSignatures
and TargetSignatures features (dropped in 3.1.2).</li>
<li>The --debug flag now has a 'json' option which will write information
generated by --debug={count, memory, time, action-timestamps} and about
the build.</li>
<li>Obsoleted YACCVCGFILESUFFIX, it's being replaced by YACC_GRAPH_FILE_SUFFIX.
If YACC_GRAPH_FILE_SUFFIX is not set, it will respect YACCVCGFILESUFFIX.</li>
<li>The yacc tool now understands the bison behavior of --header, --defines
and --graph being called without an option-argument as being synonyms
for -d (first two) and -g. -H also recognized as a synonym for -d.
Default value for $YACC_GRAPH_FILE_SUFFIX changed to '.gv' to match
current bison default (since bison 3.8). Set this variable to '.dot'
if using byacc. Fixes #4326 and #4327.</li>
<li>MSVC: When trying to find a valid msvc batch file, the existence of the msvc compiler
executable is verified for VS6 to VS2015 to avoid executing the msvc batch file when
the host/target tool is known not to be present. Always check that the msvc compiler
executable is found on the msvc script environment path after running the msvc batch
file. This is predominately needed for recent versions of Visual Studio where the msvc
batch file exists but an individual msvc toolset may not support the host/target
architecture combination. For example, when using VS2022 on arm64, the arm64 native
tools are only installed for the 14.3x toolsets.</li>
<li>MSVC: When the msvc compiler executable is not found during setup of the msvc
environment, the warning message issued takes into account whether or not a
possibly erroneous compiler executable was already present in the scons environment
path. See CHANGES.txt for details.</li>
<li>Extend range of recognized Java versions to 20.</li>
<li>Builder calls (like Program()) now accept pathlib objects in source lists.</li>
<li>The Help() function now takes an additional keyword argument keep_local:
when starting to build a help message, you can now retain help from AddOption
calls (options added for the project, but omit help for SCons' own cmdline
options with "Help(newtext, append=True, local_only=True)".</li>
<li>Calling SConscript() with a nonexistent file is now an error.
Previously this succeeded - prior to SCons 3.0, silently; since 3.0, with
a warning. Developers can still instruct such an SConscript() call not
to fail by being explicit: pass keyword argument "must_exist=False".
The "--warn=missing-sconscript" commandline option is no longer available
as the warning was part of the transitional phase.</li>
<li>Add missing directories to searched paths for mingw installs</li>
<li>SCons.Util.types renamed to to SCons.Util.sctypes to avoid any possible
confusion with the Python stdlib "types" module. Note that it was briefly
(for 4.5.x only) possible to import directly from SCons.Util.types,
although the preferred usage remains to import from SCons.Util only.
Any code that did the direct import will have to change to import from
SCons.Util.sctypes.</li>
<li>Add JDK 21 LTS support</li>
<li>The newly added --debug=sconscript option (new) will output notices when
entering an exiting each SConscript as they are processed.</li>
</ul>
</div>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul class="simple">
<li>Fixed: when using the mingw tool, if an msys2 Python is used (os.sep
is '/' rather than the Windows default ''), certain Configure checks
could fail due to the construction of the path to run the compiled check.</li>
<li>C scanner's dictifyCPPDEFINES routine did not understand the possible
combinations of CPPDEFINES - not aware of a "name=value" string either
embedded in a sequence, or by itself. The conditional C scanner thus
did not always properly apply the defines. The regular C scanner does
not use these, so was not affected. [fixes #4193]</li>
<li>MSVC: The installed msvc list is calculated once and cached. There was an indirect
dependency on the target architecture when determining if each version of msvc
was installed based on the initial invocation. It was possible that an msvc instance
would not be considered installed due to the tools for the requested target
architecture not being installed. The initial call to construct the installed msvc
list now uses an undefined target architecture to evaluate all potential host/target
combinations when evaluating if the msvc tools are installed for a given Visual Studio
installation.</li>
<li>MSVC: Erroneous construction of the installed msvc list (as described above) caused an
index error in the msvc support code. An explicit check was added to prevent indexing
into an empty list. Fixes #4312.</li>
<li>MSVC: The search for the msvc compiler executable (cl.exe) no longer inspects the
OS system path in certain situations when setting up the msvc environment.</li>
<li>MSCommon: Test SConfTests.py would fail when mscommon debugging was enabled via the
MSVC_MSCOMMON_DEBUG environment variable. The mscommon logging filter class registered
with the python logging module was refactored to prevent test failure.</li>
<li>MSVS: Add arm64 to the MSVS supported architectures list for VS2017 and later to be
consistent with the current documentation of MSVS_ARCH.</li>
<li>FORTRAN: Fix gfortran tool initialization. Defaults to using binary named gfortran
as would be expected, and properly set's SHFORTRAN flags to include -fPIC
where previously it was only doing so for the other fortran versions (F77,..)</li>
<li>MSCommon: Added more error handling while reading msvc config cache.
(Enabled/specified by SCONS_CACHE_MSVC_CONFIG).
The existing cache will be discarded if there's a decode error reading it.
It's possible there's a race condition creating this issue it in certain CI builds.</li>
<li>Fixed: race condition in <cite>Mkdir</cite> which can happen when two <cite>SConscript</cite>
are processed simultaneously by two separate build commands.</li>
</ul>
</div>
<div class="section" id="improvements">
<h2>IMPROVEMENTS</h2>
<ul class="simple">
<li>Now tries to find mingw if it comes from Chocolatey install of msys2.</li>
<li>MSVC: Module imports were changed from a relative import to a top-level
absolute import in the following Microsoft tools: midl, mslib, mslink, mssdk, msvc,
msvs. Moving any of these tools that used relative imports to the scons site tools
folder would fail on import (i.e., the relative import paths become invalid when
moved).</li>
</ul>
</div>
<div class="section" id="packaging">
<h2>PACKAGING</h2>
<ul class="simple">
<li>The build of scons now matches the help text displayed - the targets
listed there can all now be given as a target to build (except for
the two full source balls; the source tar.gz is currently generated directly
by the GitHub release process).</li>
</ul>
</div>
<div class="section" id="documentation">
<h2>DOCUMENTATION</h2>
<ul class="simple">
<li>Aligned manpage signature for Alias function to match implementation -
if the previous <em>targets</em> parameter had been used as a keyword argument,
the results would be incorrect (does not apply to positional argument
usage, which had no problem).</li>
<li>Changed the message about scons -H to clarify it shows built-in options only.</li>
<li>Cachedir description updated.</li>
<li>Updated the first two chapters on building with SCons in the User Guide.</li>
<li>Clarify that exported variables are shared - if mutable, changes made in
an SConscript are visible everywhere that takes a refereence to that object.</li>
<li>Update PCH builder docs with some usage notes.</li>
</ul>
</div>
<div class="section" id="development">
<h2>DEVELOPMENT</h2>
<ul class="simple">
<li>SCons test runner now uses pathlib to normalize and compare paths
to test files, which allows test lists, exclude lists, and tests on
the command line to "not care" about the OS convention for pathname
separators.</li>
<li>Class ActionBase is now an abstract base class to more accurately
reflect its usage. Derived _ActionAction inherits the ABC, so it
now declares (actually raises NotImplementedError) two methods it
doesn't use so it can be instantiated by unittests and others.</li>
<li>Added more type annotations to internal routines.</li>
<li>Cleaned up dblite module (checker warnings, etc.).</li>
<li>TeX tests: skip tests that use makeindex or epstopdf not installed, or
if <cite>kpsewhich glossaries.sty</cite> fails.</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.5.2..HEAD
97 Mats Wichmann
39 William Deegan
20 Joseph Brill
12 Alex Burton
4 StenGruener
2 Jonathon Reinhart
2 LiuYinCarl
2 Max Bachmann
1 Kenshin
1 Shohei YOSHIDA
1 Vitaly Cheptsov
</pre></div>
</div>
</div>
SCons Developer's Guidelines2023-07-10T08:54:00-07:002023-07-10T08:54:00-07:00SCons Foundationtag:scons.org,2023-07-10:/guidelines.html<h1>General</h1>
<ul>
<li>All SCons software (SCons itself, tests, supporting utilities)
will be written to work with Python version 3.6+.</li>
<li>SCons will be tested against Python versions 3.6, and all later
versions of 3.x. Clarification: CI resources are not infinite,
so tests there test with the oldest supported Python …</li></ul><h1>General</h1>
<ul>
<li>All SCons software (SCons itself, tests, supporting utilities)
will be written to work with Python version 3.6+.</li>
<li>SCons will be tested against Python versions 3.6, and all later
versions of 3.x. Clarification: CI resources are not infinite,
so tests there test with the oldest supported Python and the
newest, and selected other versions. Developers are <em>encouraged</em>
to also have the latest in-development Python installed locally and
check that Python N+1 does not break things with their change -
this is not an enforced requirement however.</li>
<li>The SCons distribution will be generated by the <code>setuptools</code>
package.</li>
<li>SCons will not require installation of any additional Python
modules or packages. All modules or packages used by SCons must
either be part of the standard Python 3.6 release or be part of
the SCons distribution.</li>
<li>At a minimum, SCons will be tested on Linux and Windows. Continuous
Integration testing is wired in to the GitHub project: Pull
Requests and any updates to PRs will kick off builds (unless those
are specifically disabled using GitHub and Appveyor conventions),
and the results will be reflected in the page for the PR.
All tests must be written portably, because of this (if a feature
cannot work on one system, detect that and skip the test only
in that case).</li>
<li>SCons software will be written to a separately-defined set of
conventions (variable naming, class naming, etc.). We won't be
dogmatic about these, and will use discretion when deciding
whether a naming violation is significant enough to require a fix.
At some future point SCons <em>may</em> become more strict about
formatting guidelines (e.g., the use of Black) and coding conventions
(pylint, etc.). New requirements will apply to new/touched code,
developers will not be expected to convert a whole file in order to
make a small change. Adding type annotations <em>where it makes sense</em>
in new code is also suggested. SCons has a moderately complex
internal set of types, and proper typing support for these is not
trivial (e.g. the minimum Python version does not support deferred
annotations so import loops can happen very easily).</li>
<li>SCons is being developed using the the Git source code control
system: the main source tree is kept on
<a href="https://github.com/SConsProject/scons">GitHub</a>.</li>
<li>Tests are written using custom testing infrastructure built on top of unittest:<ul>
<li>SCons infrastructure module tests are written using PyUnit.</li>
<li>Tests of SCons packaging are written using subclasses of the
<code>TestCmd</code> module (these are no longer actively used)</li>
<li>Tests of full SCons script functionality are written using
subclasses of the <code>TestCmd</code> module.</li>
</ul>
</li>
</ul>
<h1>Development philosophy</h1>
<p>TLDR version: Testing, testing, testing.</p>
<p>We're growing a rich set of regression tests incrementally, as
SCons evolves. The goal is to produce an exceptionally stable,
reliable tool of known, verifiable quality right from the start.</p>
<p>A strong set of tests allows us to guarantee that everything works
properly even when we have to refactor internal subsystems, which we
expect to have to do fairly often as SCons grows and develops. It's
also great positive feedback in the development cycle to make a
change, see the test(s) work, make another change, see the test(s)
work...</p>
<h1>Testing methodology</h1>
<p>The specific testing rules we're using for SCons are as follows:</p>
<ul>
<li>Every functional change must have one or more new tests, or
modify one or more existing tests. In other words, code touched
by a change must be hit by a test.</li>
<li>The new or modified test(s) must pass when run against your new
code (of course).</li>
<li>The new code must also pass all unmodified, checked-in tests
(regression tests).</li>
<li>The new or modified test(s) must fail when run against the
currently checked-in code. This verifies that your new or
modified test does, in fact, test what you intend it to. If it
doesn't, then either there's a bug in your test, or you're
writing code that duplicates functionality that already exists.</li>
<li>Changes that don't affect functionality (documentation changes,
code cleanup, adding a new test for existing functionality,
etc.) can relax these restrictions as appropriate - check
with the project maintainer.</li>
</ul>
<p>The CI infrastructure wired into the GitHub project will run
the tests of the new code automatically when a commit is
pushed to a PR after the PR has been submitted.
What they won't do is verify the <em>new test fails when
run against old code</em>.</p>
<p>This suggests following a TDD (test-driven devlopment) approach -
write your tests first, making sure they run but fail, thus
demonstrating they're able to detect the difference between
broken (or unimplemented) code and new code.
Then write the new code. <code>runtest.py</code> has support for running
a test against a released version, so you can checkpoint in
your working tree that the test didn't become invalid during
your development.</p>
<p>The SCons testing infrastructure is intended to make writing tests
as easy and painless as possible. We will change the infrastructure
as needed to continue to make testing even easier, so long as it
still does the job. Since the test infrastructure involves some
project-specific piece unfamiliar, please ask for help if you don't
find a simple explanation in the docs.</p>
<p>SCons development uses a combination of test harness pieces,
covering the unit tests, end-to-end functional tests, and for test
execution:</p>
<ul>
<li>The infrastructure modules (under the <code>SCons</code> subdirectory)
all have individual unit tests that use PyUnit, the unit
testing framework in the Python standard library. The naming
convention is to append <code>"Tests"</code> to the module name. For
example, the unit tests for the <code>SCons/Foo.py</code> module can be
found in the <code>SCons/FooTests.py</code> file.</li>
</ul>
<!--* The packaging is tested by test scripts that live in the `src/`
subdirectory and use a prefix of `"test_"`. -->
<ul>
<li>SCons itself is tested by end-to-end tests that live
in the <code>test/</code> subdirectory and which use the <code>TestCmd.py</code>
infrastructure (from <code>testing/framework</code>).</li>
<li>Execution of these tests is handled by a script <code>runtest.py</code>,
which adds multithreaded execution, reporting capabilities,
and more.</li>
</ul>
<p>The end-to-end tests in the <code>test/</code> subdirectory are not substitutes
for module unit tests. If you modify a module under the <code>SCons</code>
subdirectory, you generally must modify its <code>*Tests.py</code> script to
validate your change. This can be (and probably should be) in
addition to a <code>test/*</code> test of how the modification affects the
end-to-end workings of SCons.</p>
<h1>General developer requirements</h1>
<ul>
<li>All project developers must subscribe to the scons-dev@scons.org
mailing list.</li>
<li>All project developers should register at GitHub.com and be
added to the SCons developer list, this allows tagging
developers as owning bugs.</li>
<li>We will accept patches from developers not actually registered
on the project, so long as the patches conform to our normal
requirements. Preferrably the patches should come as pull
requests on GitHub.</li>
</ul>
<h1>Using git for SCons development</h1>
<ul>
<li>Developers using git should be registered at
github.com, and should submit pull requests to <a href="https://github.com/SConsProject/scons">the SCons
GitHub Project account</a>.</li>
<li>An explanation of a typical flow can be found <a href="http://scons.org/wiki/GitWorkflows">on the scons
wiki</a></li>
</ul>SCons 4.5.2 is available2023-03-21T14:25:00-07:002023-03-21T14:25:00-07:00William Deegantag:scons.org,2023-03-21:/scons-452-is-available.html<p class="first last">SCons release 4.5.2 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.5.2/">page</a> at SourceForge. This release should be used instead of 4.5.1. This release fixes one issue. <strong>This release ONLY supports Python versions 3.6+.</strong></p>
<p>A new SCons release, 4.5.2, is now available on the SCons download page:</p>
<blockquote>
<a class="reference external" href="https://scons.org/pages/download.html">https://scons.org/pages/download.html</a></blockquote>
<p>Here is a summary of the changes since 4.5.1:</p>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul>
<li><p class="first">Fix a problem (#4321) in 4.5.0/4.5.1 where ParseConfig could cause an
exception in MergeFlags when the result would be to add preprocessor
defines to existing CPPDEFINES. The following code illustrates the
circumstances that could trigger this:</p>
<pre class="literal-block">
env=Environment(CPPDEFINES=['a'])
env.Append(CPPDEFINES=['b'])
env.MergeFlags({'CPPDEFINES': 'c'})
</pre>
</li>
</ul>
</div>
<div class="section" id="packaging">
<h2>PACKAGING</h2>
<ul class="simple">
<li>Remove the redundant <cite>wheel</cite> dependency from <cite>pyproject.toml</cite>,
as it is added automatically by the setuptools PEP517 backend.</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.5.1..HEAD
3 Mats Wichmann
2 William Deegan
1 Michał Górny
</pre></div>
</div>
</div>
SCons 4.5.1 is available2023-03-06T14:25:00-08:002023-03-06T14:25:00-08:00William Deegantag:scons.org,2023-03-06:/scons-451-is-available.html<p class="first last">SCons release 4.5.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.5.1/">page</a> at SourceForge. This release should be used instead of 4.5.0. This release fixes one issue. <strong>This release ONLY supports Python versions 3.6+.</strong></p>
<p>A new SCons release, 4.5.1, is now available on the SCons download page:</p>
<blockquote>
<a class="reference external" href="https://scons.org/pages/download.html">https://scons.org/pages/download.html</a></blockquote>
<p>Here is a summary of the changes since 4.5.0:</p>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul>
<li><p class="first">Fix a problem in 4.5.0 where using something like the following code
will cause a Clone()'d environment to share the CPPDEFINES with the
original Environment() which was cloned. Causing leakage of changes
to CPPDEFINES when they should be completely independent after the Clone.</p>
<blockquote>
<p>env=Environment(CPPDEFINES=['a'])
env.Append(CPPDEFINES=['b']) (or AppendUnique,Prepend,PrependUnique)
env1=env.Clone()
env1.Append(CPPDEFINES=['c']) (or any other modification, but not overwriting CPPDEFINES)</p>
</blockquote>
<p>Now env['CPPDEFINES'] will contain 'c' when it should not.</p>
</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.5.0..HEAD
3 William Deegan
1 Mats Wichmann
</pre></div>
</div>
</div>
SCons 4.5.0 is available2023-03-05T14:25:00-08:002023-03-05T14:25:00-08:00William Deegantag:scons.org,2023-03-05:/scons-450-is-available.html<p class="first last">SCons release 4.5.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.5.0/">page</a> at SourceForge. This release should be used instead of 4.4.0. This release fixes several issues. <strong>This release ONLY supports Python versions 3.6+.</strong></p>
<p>A new SCons release, 4.5.0, is now available on the SCons download page:</p>
<blockquote>
<a class="reference external" href="https://scons.org/pages/download.html">https://scons.org/pages/download.html</a></blockquote>
<p>Here is a summary of the changes since 4.4.0:</p>
<dl class="docutils">
<dt>NOTE: If you build with Python 3.10.0 and then rebuild with 3.10.1 (or higher), you may</dt>
<dd>see unexpected rebuilds. This is due to Python internals changing which changed
the signature of a Python Action Function.</dd>
<dt>NOTE: If you use a dictionary to specify your CPPDEFINES, you may see an unexpected rebuild.</dt>
<dd>The insertion order of dictionary keys is now preserved when generating the command line.
Previously these were sorted alphabecially. This change to the command line,
while generating identical set of CPPDEFINES can change order and cause a rebuild.</dd>
</dl>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<ul class="simple">
<li>Added ValidateOptions() which will check that all command line options are in either
those specified by SCons itself, or by AddOption() in SConstruct/SConscript. It should
not be called until all AddOption() calls are completed. Resolves Issue #4187</li>
<li>Added --experimental=tm_v2, which enables Andrew Morrow's NewParallel Job implementation.
This should scale much better for highly parallel builds. You can also enable this via SetOption().</li>
<li>Added FILE_ENCODING, to allow explicitly setting the text encoding for files
written by the Textfile() and Substfile() builders. If not specified, Textfile() and Substfile() builders
will write files as UTF-8.</li>
</ul>
</div>
<div class="section" id="deprecated-functionality">
<h2>DEPRECATED FUNCTIONALITY</h2>
<ul class="simple">
<li>The qt tool has been renamed qt3.</li>
</ul>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h2>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h2>
<ul class="simple">
<li>Added -fsanitize support to ParseFlags(). This will propagate to CCFLAGS and LINKFLAGS.</li>
<li>Calling EnsureSConsVersion() and EnsurePythonVersion() won't initialize
DefaultEnvironment anymore.</li>
<li>The console message from the Chmod() action function now displays
octal modes using the modern Python syntax (0o755 rather than 0755).</li>
<li>Migrated logging logic for --taskmastertrace to use Python's logging module. Added logging
to NewParallel Job class (Andrew Morrow's new parallel job implementation)</li>
<li>Preliminary support for Python 3.12.</li>
<li>Run LaTeX after biber/bibtex only if necessary</li>
<li>Configure context methods CheckLib and CheckLibWithHeader now expose
two additional keyword arguments: 'append', which controls whether to append
(the default) or prepend discovered libraries to $LIBS, and 'unique',
which controls whether to add the library if it is already in the $LIBS
list. This brings the library-adding functionality in Configure in line
with the regular Append, AppendUnique, Prepend and PrependUnique methods.</li>
<li>CPPDEFINES values added via a dictionary type are longer sorted by
key. This used to be required to maintain a consistent order of
commandline arguments between SCons runs, but meant macros were not
always emitted in the order entered. Sorting is no longer required
after Python interpreter improvements. There might be a one-time
rebuild of targets that involved such sorted keys in their actions.</li>
<li>Renamed the 'qt' tools to 'qt3' since the logic in that tool is only for QT version 3.
Renamed all env vars which affect qt3 from QT_ to QT3_. If you are still using SCons
to build QT 3 code, you'll need to update your SConscripts. Note that using 'qt' tool
has been deprecated for some time.</li>
</ul>
</div>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul class="simple">
<li>Added missing newline to generated compilation database (compile_commands.json)</li>
<li>A list argument as the source to the Copy() action function is now handled.
Both the implementation and the strfunction which prints the progress
message were adjusted.</li>
<li>The Java Scanner processing of JAVACLASSPATH for dependencies (behavior
that was introduced in SCons 4.4.0) is adjusted to split on the system's
search path separator instead of on a space. The previous behavior meant
that a path containing spaces (e.g. r"C:somepathMy Classes") would
lead to unexpected errors. If the split-on-space behavior is desired,
pre-split the value: instead of: env["JAVACLASSPATH"] = "foo bar baz"
use: env["JAVACLASSPATH"] = env.Split("foo bar baz")
There is no change in how JAVACLASSPATH gets turned into the -classpath
argument passed to the JDK tools.</li>
<li>Ninja: Fix execution environment sanitation for launching ninja. Previously if you set an
execution environment variable set to a python list it would crash. Now it
will create a string joining the list with os.pathsep</li>
<li>Fixed command line argument --diskcheck: previously a value of 'none' was ignored.
SetOption('diskcheck','none') is unaffected, as it did not have the problem.</li>
<li>Fixed Issue #4275 - when outputting compilation db and TEMPFILE was in use, the compilation db would have
command lines using the generated tempfile for long command lines, instead of the full command line for
the compilation step for the source/target pair.</li>
<li>A refactor in the caching logic for version 4.4.0 left Java inner classes
failing with an exception when a CacheDir was enabled. This is now corrected.</li>
<li>When using the gfortran tool (the default on most platforms as long as a GNU
toolchain is installed), the user setting of the "dialect" compilers
(F77, F90, F03 and F09, as well as the shared-library equivalents SHF77,
SHF90, SHF03, SHF09) is now honored; previously the tool overwrote the
settings to 'gfortran', which made it difficult reference a cross-compile
version for dialects.</li>
<li>Fix issue #2757, where Configure checks that perform a check which reads a modified source
(including program, source or header file(s)) would incorrectly mark that file "up to date" so the
actual build would not see the file as modified. Leading to incorrect incremental builds.
Now configure checks now clear node info for non conftest nodes, so they will be re-evaluated for
the real taskmaster run when the build commences.</li>
<li>Inconsistent behavior of adding values to the CPPDEFINES construction
variable has been cleaned up (described in issue #4254). Now a tuple,
whether provided by itself or as a member of a list, is consistently
interpreted as a macro with replacement value. When adding a list,
individual members are added in sequence without interpretation.
A string value containing spaces is split if it is the initial value or
added, but not if it is given as a member of an added list. Detection
of duplicate macros now works for both valued and unvalued forms.</li>
<li>Handling of CPPDEFINES macros via Prepend and PrependUnique now works
(previously this was special-cased only for Append and AppendUnique).</li>
</ul>
</div>
<div class="section" id="improvements">
<h2>IMPROVEMENTS</h2>
<ul class="simple">
<li>Changed the Taskmaster trace logic to use python's logging module.</li>
<li>Add cache-debug messages for push failures.</li>
<li>Added error message to handle the case when SCons attempts to retrieve all the targets
for a specified builder from the CacheDir, fails to do so, and then runs into an error
when deleting the files which were retrieved. Previously if this happened there were no
errors or warnings.</li>
</ul>
</div>
<div class="section" id="packaging">
<h2>PACKAGING</h2>
<ul class="simple">
<li>SCons now has three requirements files: requirements.txt describes
requirements to run scons; requirements-dev.txt requirements to
develop it - mainly things needed to run the testsuite;
requirements_pkg.txt are the requirements to do a full build
(including docs build) with an intent to create the packages.</li>
<li>Moved rpm and debian directories under packaging</li>
<li>Added logic to help packagers enable reproducible builds into packaging/etc/.
Please read packaging/etc/README.txt if you are interested.</li>
<li>A zipapp of scons-local is now also built.</li>
</ul>
</div>
<div class="section" id="documentation">
<h2>DOCUMENTATION</h2>
<ul class="simple">
<li>Updated the --hash-format manpage entry.</li>
<li>EnsureSConsVersion, EnsurePythonVersion, Exit, GetLaunchDir and
SConscriptChdir are now listed as Global functions only.</li>
<li>Updated the docs for Glob.</li>
<li>Updated SHELL_ENV_GENERATORS description and added versionadded indicator.</li>
<li>JAVABOOTCLASSPATH, JAVACLASSPATH and JAVASOURCEPATH better document the
acceptable syntax for values, and how they will be interpreted,
including that JAVACLASSPATH will be scanned for dependencies.
Added note on the possibly surprising feature that SCons always passes
-sourcepath when calling javac, which affects how the class path is
used when finding sources.</li>
<li>Updated the User Guide chapter on installation: modernized the notes
on Python installs, SCons installs, and having multiple SCons versions
present on a single system.</li>
<li>Updated the User Guide chapter on variant directories with more
explanation, and the introduction of terms like "out of tree" that
may help in forming a mental model.</li>
<li>Additional explanations for MSVSProject and MSVSSolution builders.</li>
<li>Updated MSVC documentation - adds "version added" annotations on recently
added construction variables and provides a version-mapping table.</li>
<li>Added further details in the documentation of Append and related methods
on the special handling of CPPDEFINES.</li>
</ul>
</div>
<div class="section" id="development">
<h2>DEVELOPMENT</h2>
<ul class="simple">
<li>Refactored SCons/Taskmaster into a package. Moved SCons/Jobs.py into that package.
NOTE: If you hook into SCons.Jobs, you'll have to change that to use SCons.Taskmaster.Jobs</li>
<li>Refactored SCons.Util, which had grown quite large, to be a package,
not a single-file module. Change should be transparent: the same import
of SCons.Util and public symbols from it will continue to work, however
code which reaches directly in to grab private symbols (starting with
underscore) which moved to a submodule, that code will have to be adjusted,
as those are not imported to the package level (new SCons.Util.hashes has
some of these, which are used by existing unit tests).</li>
<li>Added overrides argument to SCons.Subst.scons_subst(), subst_list(), subst(), and Action's process(),
strfunction(). This allows passing a dictionary of envvars to override when evaluating subst()'d strings/lists</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.4.0..HEAD
93 Mats Wichmann
85 William Deegan
9 Anatoli Babenia
8 Daniel Moody
4 Andrew Morrow
3 Ryan Saunders
2 Flaviu Tamas
1 Dan Mezhiborsky
1 Lukas Schrangl
1 Nickolai Korshunov
1 TZe
1 Thad Guidry
1 djh
</pre></div>
</div>
</div>
SCons 4.4.0 is available2022-07-30T14:25:00-07:002022-07-30T14:25:00-07:00William Deegantag:scons.org,2022-07-30:/scons-440-is-available.html<p class="first last">SCons release 4.4.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.4.0/">page</a> at SourceForge. This release should be used instead of 4.3.0. This release fixes several issues. <strong>This release ONLY supports Python versions 3.6+.</strong></p>
<p>A new SCons release, 4.4.0, is now available
on the SCons download page:</p>
<blockquote>
<a class="reference external" href="https://scons.org/pages/download.html">https://scons.org/pages/download.html</a></blockquote>
<p>Here is a summary of the changes since 4.3.0:</p>
<dl class="docutils">
<dt>NOTE: If you build with Python 3.10.0 and then rebuild with 3.10.1 (or higher), you may</dt>
<dd>see unexpected rebuilds. This is due to Python internals changing which changed
the signature of a Python Action Function.</dd>
</dl>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<ul class="simple">
<li>Added MSVC_USE_SCRIPT_ARGS Environment variable which specifies command line arguments
to pass to the script specified by MSVC_USE_SCRIPT.</li>
<li>Added Configure.CheckMember() checker to check if struct/class has the specified member.</li>
<li>Added SHELL_ENV_GENERATORS construction variable. This variable should be set to a list
(or an iterable) which contains functions to be called in order
when constructing the execution environment (Generally this is the shell environment
variables). This allows the user to customize how (for example) PATH is constructed.
Note that these are called for every build command run by SCons. It could have considerable
performance impact if not used carefully.</li>
<li>Added MSVC_USE_SETTINGS construction variable to pass a dictionary to configure the msvc compiler
system environment as an alternative to bypassing Visual Studio autodetection entirely.</li>
<li>Added MSVC_SDK_VERSION construction variable which allows building with a specific Microsoft
SDK version. This variable is used with the msvc batch file determined via autodetection. Refer
to the documentation for additional requirements and validation details.</li>
<li>Added MSVC_TOOLSET_VERSION construction variable which allows building with a specific toolset
version. This variable is used with the msvc batch file determined via autodetection. This
variable does not affect the autodetection and selection of msvc instances. The toolset version
is applied after an msvc instance is selected. This could be the default version of msvc. Refer
to the documentation for additional requirements and validation details. Addresses issue #3265,
issue #3664, and pull request #4149.</li>
<li>Added MSVC_SPECTRE_LIBS construction variable which allows building with spectre-mitigated
Visual C++ libraries. This variable is used with the msvc batch file determined via autodetection.
Refer to the documentation for additional requirements and validation details.</li>
<li>Added MSVC_SCRIPT_ARGS construction variable which specifies command line arguments that are
passed to the msvc batch file determined via autodetection. Refer to the documentation for
additional requirements and validation details. Addresses enhancement issue #4106.</li>
<li>Ninja: Added new alias "shutdown-ninja-scons-daemon" to allow ninja to shutdown the daemon.
Also added cleanup to test framework to kill ninja scons daemons and clean ip daemon logs.
NOTE: Test for this requires python psutil module. It will be skipped if not present.</li>
<li>Ninja: Added command line variable NINJA_CMD_ARGS that allows to pass through ninja command line args.
This can also be set in your Environment().</li>
<li>Added a global policy setting and an environment construction variable for specifying the
action to be taken when an msvc request cannot be satisfied. The available options are "error",
"exception", "warning", "warn", "ignore", and "suppress". The global policy variable may be
set and retrieved via the functions msvc_set_notfound_policy and msvc_get_notfound_policy,
respectively. These two methods may be imported from SCons.Tool.MSCommon. The environment
construction variable is MSVC_NOTFOUND_POLICY. When defined, the environment construction
variable overrides the global policy setting for a given environment. When the active policy
is "error" or "exception", an MSVCVersionNotFound exception is raised. When the active policy
is "warning" or "warn", a VisualCMissingWarning warning is issued and the constructed
environment is likely incomplete. When the active policy is "ignore" or "suppress", no action
is taken and the constructed environment is likely incomplete. As implemented, the default
global policy is "warning". The ability to set the global policy via an SCons command-line
option may be added in a future enhancement.</li>
<li>Added a global policy setting and an environment construction variable for specifying the
action to be taken when msvc script errors are detected. The available options are "error",
"exception", "warning", "warn", "ignore", and "suppress". The global policy variable may be
set and retrieved via the functions msvc_set_scripterror_policy and msvc_get_scripterror_policy,
respectively. These two methods may be imported from SCons.Tool.MSCommon. The environment
construction variable is MSVC_SCRIPTERROR_POLICY. When defined, the environment construction
variable overrides the global policy setting for a given environment. When the active policy
is "error" or "exception", an MSVCScriptExecutionError exception is raised when msvc batch file
errors are detected. When the active policy is "warning" or "warn", an MSVCScriptExecutionWarning
warning is issued when msvc batch file errors are detected. When the active policy is "ignore" or
"suppress", msvc batch error messages are suppressed. As implemented, the default global policy
is "ignore". The ability to set the global policy via an SCons command-line option may be added
in a future enhancement.</li>
<li>Added experimental function msvc_query_version_toolset to SCons.Tool.MSCommon. Given a version
specification, this function will return an msvc version and an msvc toolset version. The msvc
toolset version may be None. The msvc version and msvc toolset version can be used in the
environment construction variables MSVC_VERSION and MSVC_TOOLSET_VERSION, respectively. The
version specification may be an msvc version or an msvc toolset version. This is a proxy for
using an msvc toolset version to select an msvc instance. This function may be removed when an
msvc toolset version is used during msvc instance selection.</li>
<li>Fortran: a new construction variable FORTRANCOMMONFLAGS is added which is
applied to all Fortran dialects, to enable global (all-dialect) settings.</li>
<li>lex: two new construction variables are introduced (LEX_HEADER_FILE
and LEX_TABLES_FILE) as the preferred way of specifying extra files that
the tool can generate.</li>
<li>yacc: two new construction variables are introduced (YACC_HEADER_FILE
and YACC_GRAPH_FILE) as the preferred way of specifying extra files that
the tool can generate (applies only when using GNU flex and GNU bison).</li>
</ul>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h2>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h2>
<ul class="simple">
<li>On Windows, <tt class="docutils literal"><span class="pre">%AllUsersProfile%\scons\site_scons</span></tt> is now the default "system"
location for a site_scons directory.
<tt class="docutils literal"><span class="pre">%AllUsersProfile%\Application</span> Data\scons\site_scons</tt> will continue to work.
There does not seem to be any existing convention to use an
"Application Data" subdirectory here.</li>
<li>Action._subproc() can now be used as a python context manager to ensure that the
POpen object is properly closed.</li>
<li>SCons help (-H) no longer prints the "ignored for compatibility" options,
which are still listed in the manpage.</li>
<li>Help is now sensitive to the size of the terminal window: the width of the
help text will scale to wider (or narrower) terminals than 80 characters.</li>
<li>Ninja: Changed generated build.ninja file to run SCons only build Actions via
a SCons Deamon. Added logic for starting and connecting to SCons daemon (currently
only used for ninja)</li>
<li>The change to "content" and "content-timestamp" Decider names is reflected
in the User Guide as well, since the hash function may be other than md5
(tidying up from earlier change)</li>
<li>If the (experimental) SCONS_CACHE_MSVC_CONFIG feature is used, it will now
attempt a sanity check for the cached compiler information, and regenerate
it if needed. Previously, this cache would fail if a compiler upgrade caused
a change to internal paths (e.g. upgrading from 17.1 to 17.2 causes
a necessary path component in some of the cached vars to need to 14.32.31326
instead of 14.31.31103), and the cache file needed to be manually removed.
The default cachefile name is now "scons_msvc_cache.json" rather than
".scons_msvc_cache" so there should be no transition problem if using the
default; if using a custom cache file name, the cache should still be
manually removed if there are problems to transition to the new style.</li>
<li>Ninja: Update ninja file generation to only create response files for build commands
which exceed MAXLINELENGTH</li>
<li>Update the debug output written to stdout for MSVC initialization which is enabled
by setting SCONS_MSCOMMON_DEBUG=- to use the logging module. Also changed the debug
output format written to stdout to include more information about the source for each
message of MSVC initialization debugging output. A single space was added before the
message for all debugging output records written to stdout and to files.</li>
<li>Ninja: Made ninja tool force the ninja file as the only target. Also improved the default
targets setup and made sure there is always a default target for
the ninja file, which excludes targets that start and stop the daemon.</li>
<li>Ninja: Update ninja tool so targets passed to SCons are propgated to ninja when scons
automatically executes ninja.</li>
<li>Add JavaScanner to include JAVACLASSPATH as a dependency when using the Java tool.</li>
<li>The build argument (i.e., x86) is no longer passed to the MSVC 6.0 to 7.1 batch
files. This may improve the effectiveness of the internal msvc cache when using
MSVC detection and when bypassing MSVC detection as the MSVC 6.0 to 7.1 batch files
do not expect any arguments.</li>
<li>Propagate the OS and windir environment variables from the system environment to the msvc
environment. The OS and windir environment variables are used in the MSVC 6.0 batch file
and the SDK 6.0-7.1 SetEnv.cmd batch files. Inclusion of the OS and windir environment
variables eliminates some partial paths and warnings generated by the MSVC 6.0 and SDK
6.0-7.1 batch files when the variables are not defined.<ul>
<li><strong>Note</strong>: Attempting to run the SDK 6.0-7.1 batch files directly via MSVC_USE_SCRIPT can lead to
build failures and/or incomplete build environments. The SDK 6.0-7.1 batch files
require delayed expansion to be enabled which is currently not supported and is
typically not enabled by default on the host system. The batch files may also require
environment variables that are not included by default in the msvc environment.</li>
</ul>
</li>
<li>An exception is raised when MSVC_UWP_APP is enabled for Visual Studio 2013 and earlier.
Previous behavior was to silently ignore MSVC_UWP_APP when enabled for Visual Studio 2013
and earlier. Refer to the documentation for additional requirements and validation details.
MSVC_UWP_APP was extended to accept True, False, and None in addition to '1' and '0'.</li>
<li>Ninja: added option "--skip-ninja-regen" to enable skipping regeneration of the ninja file
if scons can determine the ninja file doesnot need to be regenerated, which will also
skip restarting the scons daemon. Note this option is could result in incorrect rebuilds
if scons Glob or scons generated files are used in ninja build target's command lines.</li>
<li>Tool loading used to have a special case for Jython, it no longer does. This effectively
means SCons doesn't work with Jython, which has in reality been the case ever since
SCons dropped Python 2 support - there is still no timeline for Jython switching to
Python 3 compatibility.</li>
</ul>
</div>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul class="simple">
<li>Fix a number of Python ResourceWarnings which are issued when running SCons and/or it's tests
with python 3.9 (or higher)</li>
<li>Ninja: Fix issue where Configure files weren't being properly processed when build run
via ninja.</li>
<li>Fixed crash in C scanner's dictify_CPPDEFINES() function which happens if
AppendUnique is called on CPPPATH. (Issue #4108).</li>
<li>Added default values for source and target arguments to _defines() function. This
is used to expand CPPDEFINES (and others). Previous change added those arguments
with no defaults, so old usage where _defines() was called without source and target
arguments would yield an exception. This issue was found via qt4 and qt5 tools in
scons-contrib <a class="reference external" href="https://github.com/SCons/scons-contrib/issues/45">https://github.com/SCons/scons-contrib/issues/45</a></li>
<li>Fix issue where if you only had mingw installed on a Windows system and no MSVC compiler, and
did not explicitly request the mingw tool, mingw tool initialization would fail and set the
default compiler to MSVC which wasn't installed, yielding broken build.
Updated mingw tool so that the generate and exists methods use the same mingw search paths
(issue #4134).</li>
<li>Ninja: Added NINJA_GENERATED_SOURCE_ALIAS_NAME which allows user to specify an
Alias() which the ninja tool can use to determine which files are generated sources.
If this is not set by the user then the ninja tool will still dynamically determine
which files are generated sources based on NINJA_GENERATED_SOURCE_SUFFIXES, and create
a phony target _ninja_generated_sources. Generated sources will be built first by
ninja. This is needed because ninja cannot determine which generated sources are
required by other build targets. Code contributed by MongoDB.</li>
<li>Added special case for ninja scons daemon to work in win32 python3.6 environments.
This particular environment does a bad job managing popen standard file handles, so
some special workarounds are needed.</li>
<li>Added user configurable setting of ninja depfile format via NINJA_DEPFILE_PARSE_FORMAT.
Now setting NINJA_DEPFILE_PARSE_FORMAT to [msvc,gcc,clang] can force the ninja expected
format. Compiler tools will also configure the variable automatically.</li>
<li>Fix issue where Express versions of the MSVC compiler were not detected due to differences
in initial msvc detection and msvc batch file determination when configuring the build
environment. This could lead to build failures when only an MSVC Express instance is installed
and the MSVC version is not explicitly specified (issue #2668 and issue #2697).</li>
<li>Restore the ability of the content-timestamp decider to see that a
a source which is a symlink has changed if the file-system target of
that link has been modified (issue #3880)</li>
<li>Fix typo in ninja scons daemon startup which causes ConnectionRefusedError to not retry
to connect to the server during start up.</li>
<li>Fix incorrect Java classpath generation when a NodeList is used as part of any JAVA*PATH variables.</li>
<li>The system environment variable names imported for MSVC 7.0 and 6.0 were updated to be
consistent with the variables names defined by their respective installers. This fixes an
error caused when bypassing MSVC detection by specifying the MSVC 7.0 batch file directly.</li>
<li>lex: Fixed an issue with the lex tool where file arguments specified to either "--header-file="
or "--tables-file=" which included a space in the path to the file would be processed incorrectly</li>
<li>Modify the MSCommon logger configuration to be independent of the root logger. This fixes an issue
when multiple loggers are created and the MSCommon logger added computed fields to the root logger
that are not present in other logging instances.</li>
<li>Modify the MSVC_USE_SCRIPT_ARGS test fixture to disable the msvc cache. This fixes an issue where
the MSVC_USE_SCRIPT_ARGS test for success relied on a debug log message that was not produced when
the msvc cache file exists and the test keys are already in the cache as the msvc script invocation
was bypassed.</li>
<li>Suppress issuing a warning when there are no installed Visual Studio instances for the default
tools configuration (issue #2813). When msvc is the default compiler because there are no
compilers installed, a build may fail due to the cl.exe command not being recognized. At
present, there is no easy way to detect during msvc initialization if the default environment
will be used later to build a program and/or library. There is no error/warning issued for the
default tools as there are legitimate SCons uses that do not require a c compiler.</li>
</ul>
</div>
<div class="section" id="improvements">
<h2>IMPROVEMENTS</h2>
<ul class="simple">
<li>Verify that a user specified msvc script (via MSVC_USE_SCRIPT) exists and raise an
exception immediately when the user specified msvc script does not exist.</li>
<li>Add cache-debug messages for push failures.</li>
<li>Ninja: Added ninja mingw support and improved ninja CommandGeneratorAction support.</li>
<li>Command-line help is now sensitive to the size of the terminal window: the
width of the help text will scale for terminals other than 80 chars wide.</li>
<li>Refactor the msvc code so that the same data structures are used during initial msvc detection
and msvc batch file determination when configuring the build environment. Simplify the msvc
code by eliminating special case handling primarily due to the differences between the full
versions and express versions of visual studio.</li>
<li>Small refactor of scons daemons using a shared StateInfo class for communication
between the scons interactive thread and the http server thread. Added error handling
for scons interactive failing to startup.</li>
<li>Ninja: Updated ninja scons daemon scripts to output errors to stderr as well as the daemon log.</li>
<li>Ninja: Ensure that all targets set as default via Default() in SConstruct/SConscripts are
default targets in the generated ninja.build file.</li>
</ul>
</div>
<div class="section" id="packaging">
<h2>PACKAGING</h2>
<ul class="simple">
<li>Added project_url for mailing lists and Discord</li>
<li>Updated setup.cfg to remove Python 3.5 and add Python 3.10</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.3.0..HEAD
174 Joseph Brill
126 Mats Wichmann
93 William Deegan
64 Daniel Moody
4 SergBobrovsky
2 dependabot[bot]
1 djh
1 Ivan Kravets
1 Vishwajith-K
1 Zhichang Yu
</pre></div>
</div>
</div>
SCons 4.3.0 is available2021-11-17T18:12:46-08:002021-11-17T18:12:46-08:00William Deegantag:scons.org,2021-11-17:/scons-430-is-available.html<p class="first last">SCons release 4.3.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.1.0/">page</a> at SourceForge. This release should be used instead of 4.2.0. This release fixes several issues. <strong>This release ONLY supports Python versions 3.6+.</strong></p>
<p>A new SCons release, 4.3.0, is now available
on the SCons download page:</p>
<blockquote>
<a class="reference external" href="https://scons.org/pages/download.html">https://scons.org/pages/download.html</a></blockquote>
<p>NOTE: 4.3.0 now requires Python 3.6.0 and above. Python 3.5.x is no longer supported</p>
<p>Here is a summary of the changes since 4.2.0:</p>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<ul class="simple">
<li>Ninja - Added ninja API 'NINJA_FORCE_SCONS_BUILD' to force a node to callback to scons.</li>
<li>Add support for Visual Studio 2022.</li>
</ul>
</div>
<div class="section" id="deprecated-functionality">
<h2>DEPRECATED FUNCTIONALITY</h2>
<ul class="simple">
<li>The qt tool, which targets Qt version 3, is deprecated. Qt3 has been unsupported by
upstream for many years. Qt4 and Qt5 tools are available from scons-contrib.</li>
</ul>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h2>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h2>
<ul class="simple">
<li>Ninja - Expanded ninja Mkdir to also support Mkdir actions.</li>
<li>Further PCH updates. It's now recommended that env['PCH'] should always be a File node.
Either via return value from env.PCH() or by explicitly using File('StdAfx.pch').</li>
<li>Change SCons.Platform.win32.get_architecture() to return platform.platform() when run in an
environment where neither: PROCESSOR_ARCHITEW6432 nor PROCESSOR_ARCHITECTURE is set.
This should fix platform tests which started failing when HOST_OS/HOST_ARCH changes
introduced by Aaron Franke (listed below) were merged.</li>
<li>The Java tool now accepts more versions (up to 17.0), and is better
able to detect the many builds of OpenJDK available since it became
designated the reference Java implementation.</li>
</ul>
</div>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul class="simple">
<li>Fix reproducible builds. Restore logic respecting SOURCE_DATE_EPOCH when set.</li>
<li>Small fix to ensure CLVar default value is an empty list.
See MongoDB bug report: <a class="reference external" href="https://jira.mongodb.org/browse/SERVER-59656">https://jira.mongodb.org/browse/SERVER-59656</a>
Code contributed by MongoDB.</li>
<li>Ninja - Fix ninja tool to never use for_sig substitution because ninja does not use signatures. This
issue affected CommandGeneratorAction function actions specifically.</li>
<li>Fix PCH not being evaluated by subst() where necessary.</li>
<li>Fix issue #4021. Change the way subst() is used in Textfile() to not evaluate '$$(' -> '$',
but instead it should yield '$('.</li>
<li>Ninja - Fix command line escaping for ninja dollar sign escape. Without escaping ninja properly,</li>
<li>Fix MSVS tests (vs-N.N-exec.py) for MSVS 6.0, 7.0, and 7.1 (import missing module).</li>
<li>Fix command line escaping for ninja dollar sign escape. Without escaping ninja properly,
the ninja file scons regenerate and callback invocations will lose the $ characters used in
the scons command line which ninja uses itself for escaping. For Example:
scons BUILD=xyz OTHERVAR=$BUILD
Prior to this fix, it would cause ninja to fail to escape the dollar sign, leading to the
single dollar sign being used as a ninja escape character in the ninja file.</li>
<li>Ninja - Fixed an issue where if you control-c and/or killed ninja while it was running scons to regenerate
build.ninja you would end up with no build.ninja file and have to rerun scons from scratch.
Code contributed by MongoDB.</li>
</ul>
</div>
<div class="section" id="development">
<h2>DEVELOPMENT</h2>
<ul class="simple">
<li>Added --no-ignore-skips to runtest.py. Changed default to ignore skips when setting
runtest.py's exit status. Previously would exit 2 if any tests were skipped.
Now will only exit 2 if user specifies --no-ignore-skips and some tests were skipped.</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.2.0..HEAD
47 Mats Wichmann
46 William Deegan
14 Jacob Cassagnol
11 Daniel Moody
8 Ryan Egesdahl
5 Joseph Brill
4 Omar Polo
2 Brian Quistorff
1 Aaron Franke
</pre></div>
</div>
</div>
Frequently Asked Questions2021-09-15T20:29:00-07:002021-09-15T20:29:00-07:00SCons Foundationtag:scons.org,2021-09-15:/faq.html<p>This FAQ contains information about the SCons software construction
tool.</p>
<p>The most frequently-asked frequently asked questions:</p>
<ol>
<li><a href="#Why_doesn.27t_SCons_find_my_compiler.2BAC8-linker.2BAC8-etc..3F_I_can_execute_it_just_fine_from_the_command_line.">Why doesn't SCons find my compiler/linker/etc.? I can execute it just fine from the command line.</a></li>
<li><a href="#How_do_I_install_files.3F_The_Install.28.29_method_doesn.27t_do_anything._In_general.2C_how_do_I_build_anything_outside_my_current_directory.3F">How do I install files? The Install() method doesn't do anything. In general, how do I …</a></li></ol><p>This FAQ contains information about the SCons software construction
tool.</p>
<p>The most frequently-asked frequently asked questions:</p>
<ol>
<li><a href="#Why_doesn.27t_SCons_find_my_compiler.2BAC8-linker.2BAC8-etc..3F_I_can_execute_it_just_fine_from_the_command_line.">Why doesn't SCons find my compiler/linker/etc.? I can execute it just fine from the command line.</a></li>
<li><a href="#How_do_I_install_files.3F_The_Install.28.29_method_doesn.27t_do_anything._In_general.2C_how_do_I_build_anything_outside_my_current_directory.3F">How do I install files? The Install() method doesn't do anything. In general, how do I build anything outside my current directory?</a></li>
</ol>
<p>Contents</p>
<ol>
<li>
<p><a href="#Frequently_Asked_Questions">Frequently Asked Questions</a></p>
<ol>
<li>
<p><a href="#General_Information">General Information</a></p>
<ol>
<li><a href="#What_is_SCons.3F">What is SCons?</a></li>
<li><a href="#Where_do_I_get_SCons.3F">Where do I get SCons?</a></li>
<li><a href="#What.27s_the_difference_between_the_scons.2C_scons-local.2C_and_scons-src_packages.3F">What's the difference between the scons, scons-local, and scons-src packages?</a></li>
<li><a href="#What_version_of_Python_do_I_need.3F">What version of Python do I need?</a></li>
<li><a href="#Do_I_need_to_know_how_to_program_in_Python_to_use_SCons.3F">Do I need to know how to program in Python to use SCons?</a></li>
<li><a href="#Are_there_any_SCons_mailing_lists_or_newsgroups.3F_Are_they_archived_anywhere.3F">Are there any SCons mailing lists or newsgroups? Are they archived anywhere?</a></li>
<li><a href="#Is_SCons_released_under_anpi_Open_Source_license.3F">Is SCons released under an Open Source license?</a></li>
<li><a href="#Can_I_help_with_SCons_development.3F">Can I help with SCons development?</a></li>
</ol>
</li>
<li>
<p><a href="#SCons_Questions">SCons Questions</a></p>
<ol>
<li><a href="#Why_doesn.27t_SCons_find_my_compiler.2BAC8-linker.2BAC8-etc..3F_I_can_execute_it_just_fine_from_the_command_line.">Why doesn't SCons find my compiler/linker/etc.? I can execute it just fine from the command line.</a></li>
<li><a href="#How_do_I_get_SCons_to_find_my_.23include_files.3F">How do I get SCons to find my #include files?</a></li>
<li><a href="#How_do_I_install_files.3F_The_Install.28.29_method_doesn.27t_do_anything._In_general.2C_how_do_I_build_anything_outside_my_current_directory.3F">How do I install files? The Install() method doesn't do anything. In general, how do I build anything outside my current directory?</a></li>
<li><a href="#Why_is_my_directory_only_updated_the_first_time.3F">Why is my directory only updated the first time?</a></li>
<li><a href="#I.27m_already_using_ldconfig.2C_pkg-config.2C_gtk-config.2C_etc._Do_I_have_to_rewrite_their_logic_to_use_SCons.3F">I'm already using ldconfig, pkg-config, gtk-config, etc. Do I have to rewrite their logic to use SCons?</a> </li>
<li><a href="#Linking_on_Windows_gives_me_an_error">Linking on Windows gives me an error: LINK: fatal error LNK1104: cannot open file 'TEMPFILE'. How do I fix this?</a></li>
<li><a href="#How_do_I_prevent_commands_from_being_executed_in_parallel.3F">How do I prevent commands from being executed in parallel?</a></li>
</ol>
</li>
<li>
<p><a href="#Compatibility_with_make">Compatibility with make</a></p>
<ol>
<li><a href="#Is_SCons_compatible_with_make.3F">Is SCons compatible with make?</a></li>
<li><a href="#Is_there_a_Makefile-to-SCons_or_SCons-to-Makefile_converter.3F">Is there a Makefile-to-SCons or SCons-to-Makefile converter?</a></li>
<li><a href="#Does_SCons_support_building_in_parallel.2C_like_make.27s_-j_option.3F">Does SCons support building in parallel, like make's -j option?</a></li>
<li><a href="#Does_SCons_support_something_like_VPATH_in_make.3F">Does SCons support something like VPATH in make?</a></li>
</ol>
</li>
<li>
<p><a href="#SCons_History_and_Background">SCons History and Background</a></p>
<ol>
<li><a href="#Who_wrote_SCons.3F">Who wrote SCons?</a></li>
<li><a href="#Is_SCons_the_same_as_Cons.3F">Is SCons the same as Cons?</a></li>
<li><a href="#So_what_can_SCons_do_that_Cons_can.27t.3F">So what can SCons do that Cons can't?</a></li>
<li><a href="#Should_I_use_Cons_or_SCons_for_my_project.3F">Should I use Cons or SCons for my project?</a></li>
<li><a href="#Is_SCons_the_same_as_the_ScCons_design_from_the_Software_Carpentry_competition.3F">Is SCons the same as the ScCons design from the Software Carpentry competition?</a></li>
</ol>
</li>
<li>
<p><a href="#Administrivia">Administrivia</a></p>
<ol>
<li><a href="#Copyright">Copyright</a></li>
<li><a href="#Feedback">Feedback</a></li>
</ol>
</li>
</ol>
</li>
</ol>
<h2 id="General_Information">General Information</h2>
<h3 id="What_is_SCons.3F">What is SCons?</h3>
<p>SCons is a software construction tool—that is, a superior alternative to
the classic "Make" build tool that we all know and love.</p>
<p>SCons is implemented as a Python script and set of modules, and SCons
"configuration files" are actually executed as Python scripts. This
gives SCons many powerful capabilities not found in other software build
tools.</p>
<h3 id="Where_do_I_get_SCons.3F">Where do I get SCons?</h3>
<p>The SCons download page is <a href="http://scons.org/pages/download.html">http://scons.org/pages/download.html</a></p>
<p>If you're interested in the [b]leading edge, you can take a look at what
the developers are up to in the latest code checked in to the Git
(git) tree. You can browse the tree on-line at
<a href="https://github.com/SConsProject/scons">https://github.com/SConsProject/scons</a> or follow the instructions on that
page to download the sources to your own machine. The master branch is
the primary development branch.</p>
<h3 id="What.27s_the_difference_between_the_scons.2C_scons-local.2C_and_scons-src_packages.3F">What's the difference between the scons, scons-local, and scons-src packages?</h3>
<p>We make SCons available in three distinct packages, for different
purposes.</p>
<p>The <code>scons</code> package is the basic one for installing SCons on your system
and using it or experimenting with it. You don't need any other package
if you just want to try out SCons.</p>
<p>The <code>scons-local</code> package is one that you can execute standalone, out of
a local directory. It's intended to be dropped in to and shipped with
packages of other software that want to build with SCons, but which
don't want to have to require that their users install SCons.</p>
<p>The <code>scons-src</code> package is the complete source tree, including
everything we use to package SCons and all of the regression tests. You
might want this one if you had concerns about whether SCons was working
correctly on your operating system and wanted to run the regression
tests.</p>
<h3 id="What_version_of_Python_do_I_need.3F">What version of Python do I need?</h3>
<p>SCons is written to work with any Python version >= 3.5
Extensive tests are used to ensure that SCons works on all supported versions.</p>
<h3 id="Do_I_need_to_know_how_to_program_in_Python_to_use_SCons.3F">Do I need to know how to program in Python to use SCons?</h3>
<p>No, you can use SCons very successfully even if you don't know how to
program in Python.</p>
<p>With SCons, you use Python functions to tell a central build engine
about your input and output files. You can look at these simply as
different commands that you use to specify what software (or other
files) you want built. SCons takes care of the rest, including figuring
out most of your dependencies.</p>
<p>Of course, if you do know Python, you can use its scripting capabilities
to do more sophisticated things in your build: construct lists of files,
manipulate file names dynamically, handle flow control (loops and
conditionals) in your build process, etc.</p>
<h3 id="Are_there_any_SCons_mailing_lists_or_newsgroups.3F_Are_they_archived_anywhere.3F">Are there any SCons mailing lists or IRC Channels? Are they archived anywhere?</h3>
<p>There are several SCons mailing lists, and they are archived.
Information about the lists and archives is available at
<a href="https://scons.org/lists.html">https://scons.org/lists.html</a> .</p>
<p>There is a SCons Discord server at
<a href="https://discord.gg/bXVpWAy">Discord Server</a>.</p>
<p>There is a SCons IRC channel at
<a href="irc://irc.libera.chat/#scons">libera</a>. For a
complete overview of how to best contact us, visit
<a href="https://scons.org/contact.html">https://scons.org/contact.html</a> .</p>
<h3 id="Is_SCons_released_under_an_Open_Source_license.3F">Is SCons released under an Open Source license?</h3>
<p>Yes. SCons is distributed under the MIT license, an approved Open Source
license. This means you can use it, modify it, or even redistribute it
without charge, so long as you maintain the license.</p>
<h3 id="Can_I_help_with_SCons_development.3F">Can I help with SCons development?</h3>
<p>Definitely. We're looking for any help possible:</p>
<ul>
<li>Python programmers</li>
<li>documentation writers</li>
<li>web designers and/or administrators</li>
<li>testers (especially if you use a non-usual operating system or tool
chain)</li>
</ul>
<p>If you have time and/or resources to contribute, contact the SCons
developers <code><scons-dev AT scons DOT org></code> and tell us what you're
interested in doing. You may also want to check out
<a href="http://scons.org/wiki/HowToContribute">http://scons.org/wiki/HowToContribute</a> , for some ideas about how you
can help us.</p>
<h2 id="SCons_Questions">SCons Questions</h2>
<h3 id="Why_doesn.27t_SCons_find_my_compiler.2BAC8-linker.2BAC8-etc..3F_I_can_execute_it_just_fine_from_the_command_line.">Why doesn't SCons find my compiler/linker/etc.? I can execute it just fine from the command line.</h3>
<p>A common problem for new users is that SCons can't seem to find a
compiler, linker, or other utility that they can run just fine from the
command line. This is almost always because, by default, SCons does not
use the same PATH environment variable that you use from the command
line, so it can't find a program that has been installed in a
"non-standard" location unless you tell it how. Here is the explanation
from the SCons man page:</p>
<ul>
<li>SCons does not automatically propagate the external environment used
to execute '<code>scons</code>' to the commands used to build target files.
This is so that builds will be guaranteed repeatable regardless of
the environment variables set at the time scons is invoked. This
also means that if the compiler or other commands that you want to
use to build your target files are not in standard system locations,
SCons will not find them unless you explicitly set the PATH to
include those locations.</li>
</ul>
<p>Fortunately, it's easy to propagate the PATH value from your external
environment by initializing the ENV construction variable as follows:</p>
<div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">os</span>
<span class="n">env</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">(</span><span class="n">ENV</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'PATH'</span> <span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'PATH'</span><span class="p">]})</span>
</code></pre></div>
<p>Alternatively, you might want to propagate your entire external
environment to the build commands as follows:</p>
<div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">os</span>
<span class="n">env</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">(</span><span class="n">ENV</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">)</span>
</code></pre></div>
<p>Of course, by propagating external environment variables into your
build, you're running the risk that a change in the external environment
will affect the build, possibly in unintended ways. The way to guarantee
that the build is repeatable is to explicitly initialize the PATH</p>
<div class="highlight"><pre><span></span><code><span class="n">path</span><span class="o">=</span> <span class="p">[</span><span class="s1">'/bin'</span><span class="p">,</span> <span class="s1">'/usr/bin'</span><span class="p">,</span> <span class="s1">'/path/to/other/compiler/bin'</span><span class="p">]</span>
<span class="n">env</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">(</span><span class="n">ENV</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'PATH'</span> <span class="p">:</span> <span class="n">path</span><span class="p">})</span>
</code></pre></div>
<h3 id="How_do_I_get_SCons_to_find_my_.23include_files.3F">How do I get SCons to find my #include files?</h3>
<p>If your program has #include files in various directories, SCons must
somehow be told in which directories it should look for the #include
files. You do this by setting the CPPPATH variable to the list of
directories that contain .h files that you want to search for:</p>
<div class="highlight"><pre><span></span><code><span class="n">env</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">(</span><span class="n">CPPPATH</span><span class="o">=</span><span class="s1">'inc'</span><span class="p">)</span>
<span class="n">env</span><span class="o">.</span><span class="n">Program</span><span class="p">(</span><span class="s1">'foo'</span><span class="p">,</span> <span class="s1">'foo.c'</span><span class="p">)</span>
</code></pre></div>
<p>SCons will add to the compilation command line(s) the right -I options,
or whatever similar options are appropriate for the C or C++ compiler
you're using. This makes your SCons-based build configuration portable.</p>
<p>Note specifically that you should not set the include directories
directly in the CCFLAGS variable, as you might initially expect:</p>
<div class="highlight"><pre><span></span><code><span class="n">env</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">(</span><span class="n">CCFLAGS</span><span class="o">=</span><span class="s1">'-Iinc'</span><span class="p">)</span> <span class="c1"># THIS IS INCORRECT!</span>
<span class="n">env</span><span class="o">.</span><span class="n">Program</span><span class="p">(</span><span class="s1">'foo'</span><span class="p">,</span> <span class="s1">'foo.c'</span><span class="p">)</span>
</code></pre></div>
<p>This will make the program compile correctly, but SCons will not find
the dependencies in the "inc" subdirectory and the program will not be
rebuilt if any of those #include files change.</p>
<h3 id="How_do_I_install_files.3F_The_Install.28.29_method_doesn.27t_do_anything._In_general.2C_how_do_I_build_anything_outside_my_current_directory.3F">How do I install files? The Install() method doesn't do anything. In general, how do I build anything outside my current directory?</h3>
<p>By default, SCons only builds what you tell it to, and anything that
these files depend on (no matter where they live). If you don't specify
differently, SCons builds "." (<em>i.e.</em>, all the targets in and under the
current directory). If you want SCons to build/install targets outside
the current directory, you have to tell it to do so somehow. There are
four ways you might do this:</p>
<ol>
<li>
<p>Specify the full path name of the external target(s) on the command
line. This will build the the target(s) and anything they need.</p>
<div class="highlight"><pre><span></span><code>%<span class="w"> </span>scons<span class="w"> </span>/full/path/to/target
</code></pre></div>
</li>
<li>
<p>Specify a directory on the command line that is above the target(s)
to be built. One example of this is to specify the root directory,
which tells SCons to build everything it knows about.</p>
<div class="highlight"><pre><span></span><code>%<span class="w"> </span>scons<span class="w"> </span>/
</code></pre></div>
</li>
<li>
<p>Use <a href="https://scons.org/doc/production/HTML/scons-man.html#f-Default">Default()</a>. Any argument you pass
to Default() will be built when the user just runs "scons" without
explicitly specifying any targets to build. So, you'd say something
like:</p>
<div class="highlight"><pre><span></span><code><span class="n">Default</span><span class="p">(</span><span class="n">env</span><span class="o">.</span><span class="n">Install</span><span class="p">(</span><span class="n">directory</span><span class="o">=</span><span class="s1">'my_install_dir'</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="s1">'foo'</span><span class="p">))</span>
</code></pre></div>
</li>
<li>
<p>Use <a href="https://scons.org/doc/production/HTML/scons-man.html#f-Alias">Alias()</a>. Alias allows you to attach
a "pseudo target" to one or more files. Say you want a user to type
"scons install" in order to install all your targets, just like a
user might type "<code>make install</code>" for traditional make. Here is how
you do that:</p>
<div class="highlight"><pre><span></span><code><span class="n">Alias</span><span class="p">(</span><span class="s2">"install"</span><span class="p">,</span> <span class="n">env</span><span class="o">.</span><span class="n">Install</span><span class="p">(</span><span class="nb">dir</span><span class="o">=</span><span class="s2">"install_dir"</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="s2">"foo"</span><span class="p">))</span>
</code></pre></div>
<p>Note that you can call Alias() with a target of "install" as many
times as you want with different source files, and SCons will build
all of them when the user types "<code>scons install</code>".</p>
</li>
</ol>
<p>[Charles Crain, 14 August 2003, updated by Greg Noel, 1 December 2008]</p>
<h3 id="Why_is_my_directory_only_updated_the_first_time.3F">Why is my directory only updated the first time?</h3>
<p>Like every other build system, SCons considers a directory used as a
target as up-to-date if it exists. The first time you built, the
directory wasn't there, so SCons ran the update command. Each time after
that, the directory already existed, so SCons considered it up-to-date.</p>
<p>As a workaround, make the dependency on some file within the directory
that's always updated:</p>
<div class="highlight"><pre><span></span><code><span class="n">env</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="s1">'html_dir/index.html'</span><span class="p">,</span> <span class="n">Glob</span><span class="p">(</span><span class="s1">'rst/*.rst'</span><span class="p">),</span> <span class="s1">'rst2html -o $TARGET.dir $SOURCES'</span><span class="p">)</span>
</code></pre></div>
<p>If there isn't such a file, create one and put something in it that
changes every time you build (such as the date):</p>
<div class="highlight"><pre><span></span><code><span class="n">env</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="s1">'html_dir/last_updated'</span><span class="p">,</span> <span class="n">Glob</span><span class="p">(</span><span class="s1">'rst/*.rst'</span><span class="p">),</span> <span class="p">[</span><span class="s1">'rst2html -o $TARGET.dir $SOURCES'</span><span class="p">,</span> <span class="s1">'date >$TARGET'</span><span class="p">])</span>
</code></pre></div>
<h3 id="I.27m_already_using_ldconfig.2C_pkg-config.2C_gtk-config.2C_etc._Do_I_have_to_rewrite_their_logic_to_use_SCons.3F">I'm already using ldconfig, pkg-config, gtk-config, etc. Do I have to rewrite their logic to use SCons?</h3>
<p>SCons provides explicit support for getting information from programs
like ldconfig and pkg-config. The relevant method is <code>ParseConfig()</code>,
which executes a <code>*-config</code> command, parses the returned flags, and puts
them in the environment through which the
<a href="https://scons.org/doc/production/HTML/scons-man.html#f-ParseConfig">ParseConfig</a>() method is called:</p>
<div class="highlight"><pre><span></span><code><span class="n">env</span><span class="o">.</span><span class="n">ParseConfig</span><span class="p">(</span><span class="s1">'pkg-config --cflags --libs libxml'</span><span class="p">)</span>
</code></pre></div>
<p>If you need to provide some special-purpose processing, you can supply a
function to process the flags and apply them to the environment in any
way you want.</p>
<h3 id="Linking_on_Windows_gives_me_an_error">Linking on Windows gives me an error: LINK: fatal error LNK1104: cannot open file 'TEMPFILE'. How do I fix this?</h3>
<p>The Microsoft linker requires that the environment variable TMP is set.
I do the following in my SConstruct file.</p>
<div class="highlight"><pre><span></span><code><span class="n">env</span><span class="p">[</span><span class="s1">'ENV'</span><span class="p">][</span><span class="s1">'TMP'</span><span class="p">]</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'TMP'</span><span class="p">]</span>
</code></pre></div>
<p>There are potential pitfalls for copying user environment variables into
the build environment, but that is well documented. If you don't want to
import from your external environment, set it to some directory
explicitly.</p>
<p>[Rich Hoesly, 18 November 2003]</p>
<h3 id="How_do_I_prevent_commands_from_being_executed_in_parallel.3F">How do I prevent commands from being executed in parallel?</h3>
<p>Use the <a href="https://scons.org/doc/production/HTML/scons-man.html#f-SideEffect">SideEffect() method</a> and specify
the same dummy file for each target that shouldn't be built in parallel.
Even if the file doesn't exist, SCons will prevent the simultaneous
execution of commands that affect the dummy file. See the linked method
page for examples.</p>
<h2 id="Compatibility_with_make">Compatibility with make</h2>
<h3 id="Is_SCons_compatible_with_make.3F">Is SCons compatible with make?</h3>
<p>No. The SCons input files are Python scripts, with function calls to
specify what you want built,</p>
<h3 id="Is_there_a_Makefile-to-SCons_or_SCons-to-Makefile_converter.3F">Is there a Makefile-to-SCons or SCons-to-Makefile converter?</h3>
<p>There are no current plans for a converter. The SCons architecture,
however, leaves open the future possibility of wrapping a Makefile
interpreter around the SCons internal build engine, to provide an
alternate Make-like interface. Contact the SCons developers if this is
something you're interested in helping build.</p>
<p>Note that a proof-of-concept for parsing Makefiles in a scripting
language exists in the Perl-based implementation for Gary Holt's Make++
tool, which has its home page at <a href="http://makepp.sourceforge.net/">http://makepp.sourceforge.net/</a></p>
<h3 id="Does_SCons_support_building_in_parallel.2C_like_make.27s_-j_option.3F">Does SCons support building in parallel, like make's -j option?</h3>
<p>Yes, SCons is designed from the ground up to support a <code>-j</code> option for
parallel builds.</p>
<h3 id="Does_SCons_support_something_like_VPATH_in_make.3F">Does SCons support something like VPATH in make?</h3>
<p>Yes. SCons supports a <a href="https://scons.org/doc/production/HTML/scons-man.html#f-Repository">Repository()
method</a> and a <code>-Y</code> command-line option
that provide very similar functionality to VPATH, although without some
inconsistencies that make VPATH somewhat difficult to use. These
features are directly modeled on (read: stolen from) the corresponding
features in the Cons tool.</p>
<h2 id="SCons_History_and_Background">SCons History and Background</h2>
<h3 id="Who_wrote_SCons.3F">Who wrote SCons?</h3>
<p>SCons was written by Steven Knight and the original band of developers:
Chad Austin, Charles Crain, Steve Leblanc, and Anthony Roach.</p>
<h3 id="Is_SCons_the_same_as_Cons.3F">Is SCons the same as Cons?</h3>
<p>No, SCons and Cons are not the same program, although their
architectures are very closely related. The most obvious difference is
that SCons is implemented in Python and uses Python scripts as its
configuration files, while Cons is implemented in Perl and uses Perl
scripts.</p>
<p>SCons is essentially a re-design of the Cons architecture (by one of the
principal Cons implementors) to take advantage of Python's ease of use,
and to add a number of improvements and enhancements to the architecture
based on several years of experience working with Cons.</p>
<p>Information about the classic Cons tool is available at
<a href="http://dsmit.com/cons/">http://dsmit.com/cons/</a></p>
<h3 id="So_what_can_SCons_do_that_Cons_can.27t.3F">So what can SCons do that Cons can't?</h3>
<p>Although SCons was not started to be the anti-Cons, there are a number
of features designed into SCons that are not present in the Cons
architecture:</p>
<p>SCons is easier to extend for new file types. In Cons, these methods are
hard-coded inside the script, and to create a new Builder or Scanner,
you need to write some Perl for an undocumented internal interface. In
SCons, there are factory methods that you call to create new Builders
and Scanners.</p>
<p>SCons is more modular. Cons is pretty monolithic. SCons is designed from
the ground up in separate modules that can be imported or not depending
on your needs.</p>
<p>The SCons build engine (dependency management) is separate from the
wrapper "scons" script. Consequently, you can use the build engine in
any other piece of Python software. For example, you could even
theoretically wrap it in another interface that would read up Makefiles
(a la Gary Holt's make++ Perl script).</p>
<p>SCons dependencies can be between arbitrary objects, not just files.
Dependencies are actually managed in an abstract "Node" base class, and
specific subclasses (can) exist for files, database fields, lines within
a file, etc. So you will be able to use SCons to update a file because a
certain web page changed, or a value changed in a database, for example.</p>
<p>SCons has good parallel build (-j) support. Cons' recursive dependency
descent makes it difficult to restructure for good parallel build
support. SCons was designed from the ground up with a multithreaded
tasking engine (courtesy Anthony Roach) that will keep N jobs going
simultaneously, modulo waiting for dependent files to finish building.</p>
<h3 id="Should_I_use_Cons_or_SCons_for_my_project.3F">Should I use Cons or SCons for my project?</h3>
<p>Well, this is the SCons FAQ, so of course we'll recommend that you use
SCons. That having been said...</p>
<p>Unfortunately, Cons classic is essentially a dead project at this point.
The last release many years ago (May 2001) and no one is actively
working on it. This is really too bad, because Cons is still a very
useful tool, and could continue to help people solve build problems if
it got some more development.</p>
<p>In contrast, SCons has a thriving development and user community, and
we're releasing new functionality and fixes approximately once a month.
SCons also has a virtual superset of Cons classic functionality, the
only things really missing are some minor debugging capabilities that
don't affect basic software builds.</p>
<p>So at this point, probably the only reason to prefer Cons over SCons is
if you're a die-hard Perl fan who really can't stomach using Python for
your software build configuration scripts, and the functionality you
need from Cons works well enough that you don't need new features or bug
fixes, or you can get by with fixing your own bugs. If that's your
situation and Cons is a better fit for you, then more power to you.
Maybe you could even help get Cons kick-started again...</p>
<h3 id="Is_SCons_the_same_as_the_ScCons_design_from_the_Software_Carpentry_competition.3F">Is SCons the same as the ScCons design from the Software Carpentry competition?</h3>
<p>Yes. Same design, same developer, same goals, essentially the same tool.</p>
<p>SCons, however, is an independent project, and no longer directly
associated with Software Carpentry. Hence, we dropped the middle 'c' to
differentiate it slightly, and to make it a tiny bit easier to type.</p>
<p>Even though SCons is being developed independently, the goal is for
SCons to be a flexible enough tool that it would fit in with any future
tools that the Software Carpentry project may produce.</p>
<p>Note that, at last report, the Software Carpentry project renamed their
tools with the prefix "qm"--the build tool being "qmbuild"--so there
shouldn't be any confusion between SCons and any independent build tool
that Software Carpentry may eventually produce.</p>
<p>Although the information about the original Software Carpentry
competition doesn't seem to be available any more, the project lives on
as a source of teaching materials to teach software development skills.
See <a href="http://en.wikipedia.org/wiki/Software_Carpentry">http://en.wikipedia.org/wiki/Software_Carpentry</a> for details and
further links.</p>
<h2 id="Administrivia">Administrivia</h2>
<h3 id="Copyright">Copyright</h3>
<p>The original of this document is copyright 2001-2021 by SCons Foundation.</p>
<p>This document may be freely copied, redistributed, or modified for any
purpose and without fee, provided that this copyright notice is not
removed or altered.</p>
<p>Individual items from this document may be excerpted and redistributed
without inclusion of the copyright notice.</p>
<p>If you incorporate this FAQ in any commercial, salable, or for-profit
collection or product, please be courteous and send a copy to the
copyright holder.</p>
<h3 id="Feedback">Feedback</h3>
<p>Any and all feedback on this FAQ is welcome: corrections to existing
answers, suggested new questions, typographical errors, better
organization of questions, etc. Contact the the user mailing list
<code><scons-users AT scons DOT org></code>.</p>SCons 4.2.0 is available2021-07-31T18:12:46-07:002021-07-31T18:12:46-07:00William Deegantag:scons.org,2021-07-31:/scons-420-is-available.html<p class="first last">SCons release 4.2.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.1.0/">page</a> at SourceForge. This release should be used instead of 4.1.0. This release fixes several issues. <strong>This release ONLY supports Python versions 3.5+.</strong></p>
<p>A new SCons release, 4.2.0, is now available
on the SCons download page:</p>
<blockquote>
<a class="reference external" href="https://scons.org/pages/download.html">https://scons.org/pages/download.html</a></blockquote>
<p>Here is a summary of the changes since 4.1.0:</p>
<p>NOTE: The 4.2.0 Release of SCons will deprecate Python 3.5 Support. Python 3.5 support will be dropped in the next major release.</p>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<blockquote>
<ul class="simple">
<li>Add support for the (TARGET,SOURCE,TARGETS,SOURCES,CHANGED_TARGETS,CHANGED_SOURCES}.relpath property.
This will provide a path relative to the top of the build tree (where the SConstruct is located)
Fixes #396</li>
<li>Added --experimental flag, to enable various experimental features/tools. You can specify
'all', 'none', or any combination of available experimental features.</li>
<li>Added affect_signature flag to _concat function. If set to False, it will prepend and append $( and $).
That way the various Environment variables can use that rather than "$( _concat(...) $)".</li>
</ul>
</blockquote>
</div>
<div class="section" id="deprecated-functionality">
<h2>DEPRECATED FUNCTIONALITY</h2>
<blockquote>
<ul class="simple">
<li>Deprecate Python 3.5 as a supported version.</li>
</ul>
</blockquote>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h2>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h2>
<blockquote>
<ul class="simple">
<li>SCons now supports the command-line parameter <cite>--hash-format</cite> to override the default
hash format that SCons uses. It can also be set via <cite>SetOption('hash_format')</cite>. Supported
values are: <cite>md5</cite>, <cite>sha1</cite>, and <cite>sha256</cite>. For all hash formats other than
the default of <cite>md5</cite>, the SConsign database will include the name of the hash format.
For example, <cite>--hash-format=sha256</cite> will create a SConsign with name
<cite>.sconsign_sha256.dblite.</cite>.</li>
<li>Improve Subst()'s logic to check for proper callable function or class's argument list.
It will now allow callables with expected args, and any extra args as long as they
have default arguments. Additionally functions with no defaults for extra arguments
as long as they are set using functools.partial to create a new callable which set them.</li>
<li>Internal has_key methods removed from SCons' dictionary-like objects
SubstitutionEnvironment and OverrideEnvironment - in other words,
an env - to match Python 3 which no longer has dict.has_key.</li>
<li>Removed long-deprecated construction variables PDFCOM, WIN32_INSERT_DEF,
WIN32DEFPREFIX, WIN32DEFSUFFIX, WIN32EXPPREFIX, WIN32EXPSUFFIX.
All have been replaced by other names since at least 1.0.</li>
<li>Added CACHEDIR_CLASS construction variable and expanded CacheDir method args
to support SCons invoking CacheDir derived classes for CacheDir customization.
Moved copy_from_cache attribute from the Environment class to CacheDir class.
Code contributed by MongoDB.</li>
<li>Update BuildTask to pass all targets to the progress object fixing an issue
where multi-target build nodes only got the first target passed to the progress
object.</li>
<li>Change SConscript() missing SConscript behavior - if must_exist=False,
the warning is suppressed.</li>
</ul>
</blockquote>
</div>
<div class="section" id="fixes">
<h2>FIXES</h2>
<blockquote>
<ul class="simple">
<li>The command-line parameter <cite>--md5-chunksize</cite> is now deprecated. Use <cite>--hash-chunksize</cite>
instead.</li>
<li>Fix Issue #3906 - <cite>IMPLICIT_COMMAND_DEPENDENCIES</cite> was not properly disabled when
set to any string value (For example ['none','false','no','off'])
Also previously 'All' wouldn't have the desired affect.</li>
<li>DocbookXslt tool: The XSLT stylesheet file is now initialized to an env.File() Node,
such that dependencies work correctly in hierarchical builds (eg when using
DocbookXslt in SConscript('subdir/SConscript') context.</li>
<li>The Install builder will now set the writable mode on the file(s) it
copies. This restores the (previously undocumented) SCons behavior
that regressed as of 4.0.0.</li>
<li>Fix issue #3790: Generators in CPPDEFINES now have access to populated source
and target lists</li>
<li>Fix a potential race condition in shared cache environments where the permissions are
not writeable for a moment after the file has been renamed and other builds (users) will copy
it out of the cacheSmall reorganization of logic to copy files from cachedir. Moved CacheDir
writeable permission code for copy to cache behind the atomic rename operation.</li>
<li>Fixed intermediate and and multi target nodes generated from SConf tests not being marked
as is_conftest().</li>
</ul>
</blockquote>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.1.0..HEAD
177 William Deegan
101 Daniel Moody
95 Mats Wichmann
25 Adam Gross
4 greenbender
4 Daniel
4 Henrik Maier
4 Mathew Robinson
3 Andrew Morrow
3 Ivan Kravets
3 Dillan Mills
1 WholesomeIsland
1 dependabot[bot]
1 djh
1 Joseph Brill
</pre></div>
</div>
</div>
Contact2021-05-27T19:28:00-07:002021-05-27T19:28:00-07:00SCons Foundationtag:scons.org,2021-05-27:/contact.html<h1>Mailing lists</h1>
<p>The most reliable way to contact us is to send email to one of our
<a href="https://scons.org/lists.html">mailing lists</a>. In general, the best place to start is the
<a href="https://scons.org/lists.html#users">users' mailing list</a> as it's common that other users
have faced the same problem before and can quickly suggest what to do …</p><h1>Mailing lists</h1>
<p>The most reliable way to contact us is to send email to one of our
<a href="https://scons.org/lists.html">mailing lists</a>. In general, the best place to start is the
<a href="https://scons.org/lists.html#users">users' mailing list</a> as it's common that other users
have faced the same problem before and can quickly suggest what to do.
If your topic is better addressed by the <a href="lists.php#dev">developers' mailing
list</a>, someone will suggest you send it there for
consideration.</p>
<p>You should be warned that responses will usually be sent to the mailing
list rather than directly to you, so it's a good idea to subscribe to
the mailing list (see the <a href="https://scons.org/lists.html">instructions</a>) before sending the
message.</p>
<p>Also note that the mailing lists are moderated, so your messages may be
delayed before they appear on the list. Subscribing to the list will
(normally) cause moderation to be skipped, but the software used by our
mailing list provider has been known to be buggy in this regard, and it
sometimes requires administrator intervention to set things right.</p>
<h1>Web Site</h1>
<p>If you need to contact someone about our web pages (even if it's as
simple as a typo that should be corrected), send mail to
<a href="mailto:webmaster@scons.org">webmaster@scons.org</a> and someone should get back to you.</p>
<p>If there's no response after a couple of days, the webmaster is probably
on vacation, so you should <a href="https://pairlist2.pair.net/mailman/listinfo/scons-dev">Send email to dev mailing list</a>
so that the it doesn't get lost.</p>
<h1>Discord Channel</h1>
<p>The SCons Discord channel is <a href="https://discord.gg/bXVpWAy">https://discord.gg/bXVpWAy</a>.
We're trying this as an alternative/superset of IRC as Discord maintains history and allows more formatting options.
Please join and come say hi!</p>
<h1>IRC Channel</h1>
<p>The SCons IRC channel is <a href="<irc://irc.libera.chat/#scons">#scons</a> on the
<a href="https://libera.chat/">Libera service</a> .
If there's someone there, the response is quicker than the mailing list,
but the SCons culture is geared more toward email than IRC, so IRC
coverage is sporatic and unpredictable.</p>
<h3>Regular Participants</h3>
<ul>
<li><a href="wiki/GaryOberbrunner">Gary Oberbrunner</a> Project Co-Manager</li>
<li><a href="wiki/WilliamDeegan">William Deegan</a> Project Co-Manager</li>
<li><a href="wiki/SergeyPopov">Sergey Popov</a> Question-answering Phenom on IRC</li>
</ul>
<p>To contact any of the development team, send email to the
<a href="mailto:scons-dev@scons.org">dev@scons</a> mailing list as described
above.</p>
<h1>Project Alumni</h1>
<ul>
<li><a href="wiki/StevenKnight">Steven Knight</a> Project Founder</li>
<li><a href="wiki/GregNoel">Greg Noel</a> Former Administrator/Contributor</li>
</ul>SCons Mailing Lists2021-05-27T10:20:00-07:002021-05-27T10:20:00-07:00SCons Foundationtag:scons.org,2021-05-27:/lists.html<p>These are the major SCons mailing lists available for your enjoyment and
education.</p>
<p>For the Mailman-based lists, you can administer your subscription
via the web at:</p>
<ul>
<li>Users list: <a href="http://four.pairlist.net/mailman/listinfo/scons-users">scons-users</a> </li>
<li>Development list: <a href="http://two.pairlist.net/mailman/listinfo/scons-dev">scons-dev</a></li>
</ul>
<h3 id="users">User General Discussion</h3>
<p>Information and discussion about using SCons.</p>
<p>A general discussion list for the project's end users …</p><p>These are the major SCons mailing lists available for your enjoyment and
education.</p>
<p>For the Mailman-based lists, you can administer your subscription
via the web at:</p>
<ul>
<li>Users list: <a href="http://four.pairlist.net/mailman/listinfo/scons-users">scons-users</a> </li>
<li>Development list: <a href="http://two.pairlist.net/mailman/listinfo/scons-dev">scons-dev</a></li>
</ul>
<h3 id="users">User General Discussion</h3>
<p>Information and discussion about using SCons.</p>
<p>A general discussion list for the project's end users. If you're in
doubt as to whether a post should go here or to 'dev', then it should
probably go here first -- people will suggest posting it to 'dev' if
that's appropriate.</p>
<p>You must be a member of this list to post.</p>
<ul>
<li><a href="http://four.pairlist.net/mailman/listinfo/scons-users">subscribe to mailing list</a> (also
has archives)</li>
<li><a href="mailto:scons-users@scons.org">send email to mailing list</a></li>
</ul>
<h3 id="dev">SCons Development</h3>
<p>Discussion among developers working on SCons. This is the main list for
developers to discuss project development issues. Non-development
questions should be posted to 'users' instead; that includes usage
questions, build problems, configuration issues, etc.</p>
<p>You must be a member of this list to post.</p>
<ul>
<li><a href="http://two.pairlist.net/mailman/listinfo/scons-dev">subscribe to mailing list</a> (also has
archives)</li>
<li><a href="mailto:scons-dev@scons.org">send email to mailing list</a></li>
</ul>
<h3 id="commits">Commit Messages</h3>
<p>Automated notification of version control changes in the project.</p>
<p>Since the project has switched it's revision control to a <a href="https://github.com/SConsProject/scons">Git repo</a> hosted on
<a href="https://github.com">github.com</a>
if you wish to be notified about commits, pull requests, etc about the repository you'll need to
watch the repo on the github site. Then you will be able to set whether you want github to
email you on notifications from the repo under Settings -> Manage your account -> Notifications.</p>
<h3 id="issues">Notification of Issues</h3>
<p>Please watch the GitHub SCons/SCons repo via:</p>
<p>https://github.com/SCons/scons/watchers</p>SCons 4.1.0 is available2021-01-19T20:08:00-08:002021-01-19T20:08:00-08:00William Deegantag:scons.org,2021-01-19:/scons-410-is-available.html<p class="first last">SCons release 4.1.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.1.0/">page</a> at SourceForge. This release should be used instead of 4.0.1. This release fixes several issues. <strong>This release ONLY supports Python versions 3.5+.</strong></p>
<p>SCons release 4.1.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.1.0/">page</a> at SourceForge.</p>
<p>Here is a summary of the changes since 4.0.1:</p>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<ul class="simple">
<li>Add <tt class="docutils literal">COMPILATIONDB_PATH_FILTER</tt> env option for CompilationDatabase() builder which allows
filtering of entries based on the output file paths using glob style file matching (issue #3742).</li>
<li>Add <tt class="docutils literal">ZIP_OVERRIDE_TIMESTAMP</tt> env option to Zip builder which allows for overriding of the file
modification times in the archive.</li>
<li>Raise an error if an option (not otherwise consumed) is used which
looks like an abbreviation of one one added by AddOption. (#3653)</li>
</ul>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h2>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h2>
<ul class="simple">
<li>Completely rewrote versioned shared libraries logic.
Added support for <tt class="docutils literal">SOVERSION</tt> via dmoody's initial PR #3733</li>
<li>No longer automatically disable setting SONAME on shared libraries on OpenBSD.</li>
<li><tt class="docutils literal">Environment.SideEffect()</tt> no longer adds duplicate side effects.
NOTE: The list of returned side effect Nodes will not include any
duplicate side effect Nodes.</li>
<li>/snap/bin is added to the default search path for the 'posix' platform.</li>
<li>Completely rewrote versioned shared libraries logic.</li>
<li>Added support for <tt class="docutils literal">SOVERSION</tt></li>
<li>No longer automatically disable setting <tt class="docutils literal">SONAME</tt> on shared libraries on OpenBSD.</li>
<li>Switch to use ctypes instead of pywin32 (requiring an extra pip install) - Fixes Github Issue #2291
- pywin32 no longer necessary for SCons install. (pip install SCons will no longer also require pywin32 on win32)
- Remove pywin32 usage from SCons.Util where it was used for accessing the registry. Python native winreg
library already includes this functionality.
- Remove using pywin32 to retrieve peak memory usage on Win32 for <cite>--debug=memory</cite></li>
<li>Tool module not found will now raise a UserError to more clearly indicate this is
probably an SConscript problem, and to make the traceback more relevant.</li>
<li>Fix three issues with MergeFlags:
- Signature/return did not match documentation or existing usage - the implementation now no longer returns the passed env
- merging --param arguments did not work (issue #3107);
- passing a dict to merge where the values are strings failed (issue #2961).</li>
<li>Only try to initialize the wix tool by default (or when tool <cite>default</cite> is explicitly installed)
on Windows based systems.</li>
<li>Add <tt class="docutils literal">/snap/bin</tt> to <tt class="docutils literal"><span class="pre">env['PATH']</span></tt> on POSIX, although this is only
really useful for a subset of POSIX systems that use snaps.
Was needed for CI builds, which run on Ubuntu LTS images.</li>
</ul>
</div>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul class="simple">
<li>Fix yacc tool, not respecting <tt class="docutils literal">YACC</tt> set at time of tool initialization.</li>
<li>Fix race condition bug when initializing a scons cache directory at the
same time from multiple threads or processes. Problem described in PR #3114.
This is a simpler fix which should avoid some problems identified with the initial PR.
(Credit to Fredrik Medley for reporting the issue, the initial PR, and discussing and testing
this solution)</li>
<li>Fix incorrect cache hits and/or misses when running in interactive mode by having
SCons.Node.Node.clear() clear out all caching-related state.</li>
<li>Fix Zip builder not rebuilding when <tt class="docutils literal">ZIPROOT</tt> env option was changed.</li>
<li>Fix python3 crash when Value node get_text_content when child content does not have decode()
NOTE: If you depend on Value node's get_text_content returning concatenated contents of it's
children. This may break your code. It now concatenates the csig() of all children.</li>
<li>Fix Zip tool to respect ZIPCOMSTR. Previously all zip builder calls would yield something
like zip(["test.zip"], ["zip_scons.py"]) and ignore <tt class="docutils literal">ZIPCOMSTR</tt> if <tt class="docutils literal">ZIPCOM</tt> and <tt class="docutils literal">ZIPCOMSTR</tt>
weren't set after the Environment/Tool is initialized. (Explained in PR #3659)</li>
<li>Fix issue where java parsed a class incorrectly from lambdas used after a new.</li>
<li>Fix using <tt class="docutils literal">TEMPFILE</tt> in multiple actions in an action list. Previously a builder, or command
with an action list like the following could yield a single tempfile with the first TEMPFILE's contents, used by both steps
in the action list.</li>
</ul>
<div class="highlight"><pre><span></span>``['${TEMPFILE("xxx.py -otempfile $SOURCE")}', '${TEMPFILE("yyy.py -o$TARGET tempfile")}']``
</pre></div>
<ul class="simple">
<li>Cleanup in SCons.Util.AddMethod. If called with an environment instance
as the object to modify, the method would not be correctly set up in
any Clone of that instance. Now tries to detect this and calls
MethodWrapper to set up the method the same way env.AddMethod does.
MethodWrapper moved to Util to avoid a circular import. Fixes #3028.</li>
<li>Fix Issue #3014 - Empty file and missing file have same csig</li>
</ul>
</div>
<div class="section" id="packaging">
<h2>PACKAGING</h2>
<ul class="simple">
<li>Fix Issue #3759 - include scons.1, sconsign.1, scons-time.1 manpages in sdist and wheel packages.</li>
<li>Pick a better "Topic" Trove classifier for SCons: SW Dev / Build Tools</li>
</ul>
</div>
<div class="section" id="documentation">
<h2>DOCUMENTATION</h2>
<ul class="simple">
<li>Include previously-excluded SideEffect section in User Guide.</li>
</ul>
</div>
<div class="section" id="development">
<h2>DEVELOPMENT</h2>
<ul class="simple">
<li>Rework runtest.py to use argparse for arg handling (was a mix
of hand-coded and optparse, with a stated intent to "gradually port").</li>
<li>Add options to runtest to generate/not generate a log of failed tests,
and to rerun such tests. Useful when an error cascades through several
tests, can quickly try if a change improves all the fails. Dropped
runtest test for fallback from qmtest, not needed; added new tests.</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.0.1..HEAD
115 Mats Wichmann
83 William Deegan
14 Adam Gross
4 Joseph Brill
3 Joachim Kuebart
2 GIT
2 Daniel Moody
2 James Benton
1 Unknown
1 Daniel
1 anatoly techtonik
1 Dirk Baechle
1 dependabot[bot]
1 David H
1 Michał Górny
1 Simon Tegelid
</pre></div>
</div>
</div>
SCons 4.0.1 is available2020-07-16T20:08:00-07:002020-07-16T20:08:00-07:00William Deegantag:scons.org,2020-07-16:/scons-401-is-available.html<p class="first last">SCons release 4.0.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.0.1/">page</a> at SourceForge. This release should be used instead of 4.0.0. This release fixes several issues. <strong>This release ONLY supports Python versions 3.5+.</strong></p>
<p>SCons release 4.0.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.0.1/">page</a> at SourceForge.</p>
<p><strong>This release ONLY supports Python versions 3.5+.</strong></p>
<p>Here is a summary of the changes since 3.1.2:</p>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<ul class="simple">
<li>Added <tt class="docutils literal">Environment() ``variable ``TEMPFILEDIR</tt> which allows setting the directory which temp
files createdby <tt class="docutils literal">TEMPFILEMUNGE</tt> are created in.</li>
</ul>
<div class="section" id="deprecated-functionality">
<h3>DEPRECATED FUNCTIONALITY</h3>
<ul class="simple">
<li>N/A</li>
</ul>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h3>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h3>
<ul class="simple">
<li>N/A</li>
</ul>
</div>
<div class="section" id="fixes">
<h3>FIXES</h3>
<ul class="simple">
<li>Fix fortran tools to set SHFORTRAN variables to $FORTRAN, similarly SHF77, SHF90, SHF95,
SHF03 and SHF08 will default to the variables $F77, $F90, $F95, $F03 and $F08 respectively.
If you were depending on changing the value of FORTRAN (or $F[0-9][0-9]) having no effect
on the value of SHFORTRAN, this change will break that. The values of FORTRAN, F77, F90,
F95, F03, F08 and SHFORTRAN, SHF77 (etc.) now are not overridden in generate if alredy set
by the user.</li>
<li>Fix subprocess execution of 'lslpp' on AIX to produce text standard i/o.</li>
<li>Re-do the fix for suncxx tool (Oracle Studio compiler) now that only Python 3 is supported,
to avoid decoding errors.</li>
</ul>
</div>
<div class="section" id="improvements">
<h3>IMPROVEMENTS</h3>
<ul class="simple">
<li>N/A</li>
</ul>
</div>
<div class="section" id="packaging">
<h3>PACKAGING</h3>
<ul class="simple">
<li>N/A</li>
</ul>
</div>
<div class="section" id="documentation">
<h3>DOCUMENTATION</h3>
<ul class="simple">
<li>N/A</li>
</ul>
</div>
</div>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h2>Thanks to the following contributors listed below for their contributions to this release.</h2>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 4.0.0..HEAD
12 William Deegan
2 Rob Boehne
1 Clemens Tolboom
</pre></div>
</div>
SCons 4.0.0 is available2020-07-05T18:30:00-07:002020-07-05T18:30:00-07:00William Deegantag:scons.org,2020-07-05:/scons-400-is-available.html<p class="first last">SCons release 4.0.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.0.0/">page</a> at SourceForge. This release should be used instead of 3.1.2. This release fixes several issues. <strong>This release ONLY supports Python versions 3.5+.</strong></p>
<p>SCons release 4.0.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/4.0.0/">page</a> at SourceForge.</p>
<p><strong>This release ONLY supports Python versions 3.5+.</strong></p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p>If you have an existing pip-installed version of SCons on Windows, you can avoid some reported issues by uninstalling SCons first, an upgrade install may not work correctly:</p>
<p class="last"><tt class="docutils literal">pip uninstall SCons</tt></p>
</div>
<p>Here is a summary of the changes since 3.1.2:</p>
<div class="section" id="new-functionality">
<h2>NEW FUNCTIONALITY</h2>
<ul class="simple">
<li>Added support for scanning multiple entries in an action string if
<tt class="docutils literal">IMPLICIT_COMMAND_DEPENDENCIES</tt> is set to 2 or 'all'. This enables more thorough
action scanning where every item in each command line is scanned to determine
if it is a non-source and non-target path and added to the list of implicit dependencies
for the target.</li>
<li>Added new module SCons.Scanner.Python to allow scanning .py files.</li>
<li>Added support for explicitly passing a name when creating Value() nodes. This may be useful
when the value can't be converted to a string or if having a name is otherwise desirable.</li>
<li>Added a new flag called "linedraw" for the command line argument "--tree"
that instructs scons to use single line drawing characters to draw the dependency tree.</li>
<li>Add CompilationDatabase() builder in compilation_db tool. Contributed by MongoDB.
Setting <tt class="docutils literal">COMPILATIONDB_USE_ABSPATH</tt> to <tt class="docutils literal">True|False</tt> controls whether the files are absolute or relative
paths. Address Issue #3693 and #3694 found during development.</li>
<li>Extended <cite>Environment.Dump()</cite> to select a format to serialize construction variables (pretty, json).</li>
<li>New conditional C Scanner (<cite>SCons.Scanner.C.CConditionalScanner()</cite>)
which interprets C/C Preprocessor conditional syntax (<tt class="docutils literal">#ifdef, #if, #else, #elif, #define, etc.</tt>)</li>
<li>Experimental New Feature: Enable caching MSVC configuration
If <tt class="docutils literal">SCONS_CACHE_MSVC_CONFIG</tt> shell environment variable is set,
SCons will cache the results of past calls to <tt class="docutils literal">vcvarsall.bat</tt> to
a file; integrates with existing memoizing of such vars.</li>
<li>Preliminary Python 3.9 support.</li>
</ul>
</div>
<div class="section" id="deprecated-removed-functionality">
<h2>DEPRECATED/REMOVED FUNCTIONALITY</h2>
<ul class="simple">
<li>Drop support for Python 2.7. SCons will be Python 3.5+ going forward.</li>
<li>Remove deprecated <tt class="docutils literal">SourceCode()</tt></li>
</ul>
</div>
<div class="section" id="changed-enhanced-existing-functionality">
<h2>CHANGED/ENHANCED EXISTING FUNCTIONALITY</h2>
<ul>
<li><p class="first">Resolve Issue #3248 - Removing -Wl,-Bsymbolic from <tt class="docutils literal">SHLIBVERSIONFLAGS</tt></p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">If your build depends on the above you must now add to your <tt class="docutils literal">SHLIBVERSIONFLAGS</tt></p>
</div>
</li>
<li><p class="first">Added check for SONAME in environment to setup symlinks correctly (Github Issue #3246)</p>
</li>
<li><p class="first">Microsoft Visual Studio switch to using uuid module to generate GUIDs rather than hand rolled method using md5 directly.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This change affects the following builders' output. If your build depends
on the output of these builders you will likely see a rebuild:</p>
</div>
<ul class="simple">
<li><tt class="docutils literal">Package()</tt> (with <tt class="docutils literal"><span class="pre">PACKAGETYPE='msi'</span></tt>)</li>
<li><tt class="docutils literal">MSVSSolution()</tt></li>
<li><tt class="docutils literal">MSVSProject()</tt></li>
</ul>
</li>
<li><p class="first">Improve Visual Studio solution/project generation code to add support for a per-variant cppflags. Intellisense can be affected by cppflags, this is especially important when it comes to <tt class="docutils literal"><span class="pre">/std:c++*</span></tt> which specifies what C++ standard version to target. SCons will append <tt class="docutils literal">/Zc:__cplusplus</tt> to the project's cppflags when a <tt class="docutils literal"><span class="pre">/std:c++*</span></tt> flag is found as this is required for intellisense to use the C++ standard version from cppflags.</p>
</li>
<li><p class="first">Allow user specified location for vswhere.exe specified by VSWHERE.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This must be set at the time the 'msvc' 'msvs' and/or 'mslink' tool(s) are initialized to have any effect.</p>
</div>
</li>
<li><p class="first">Fixed Github Issue 3628 - Hardcoding pickle protocol to 4 (supports python 3.4+) and skipping Python 3.8's new pickle protocol 5 whose main advantage is for out-of-band data buffers.</p>
<!-- NOTE: If you used Python 3.8 with SCons 3.0.0 or above, you may get a a pickle protocol error. Remove your .sconsign.dblite. You will end up with a full rebuild. -->
</li>
<li><p class="first">MSVC updates: When there are multiple product installations (e.g, Community and Build Tools) of MSVC 2017 or MSVC 2019, an Enterprise, Professional, or Community installation will be selected before a Build Tools installation when "14.1" or "14.2" is requested, respectively. (GH Issue #3699).</p>
</li>
<li><p class="first">MSVC updates: When there are multiple product installations of MSVC 2017 (e.g., Community and Express), 2017 Express is no longer returned
when "14.1" is requested. Only 2017 Express will be returned when "14.1Exp" is requested. (GH Issue #3699).</p>
</li>
<li><p class="first">MSVC updates: pass on <tt class="docutils literal">VSCMD_DEBUG</tt> and <tt class="docutils literal">VSCMD_SKIP_SENDTELEMETRY</tt> to msvc tool setup if set in environment. Add Powershell to default env (used to call telemetry script).</p>
</li>
<li><p class="first">Renamed as.py to asm.py and left redirecting tool. 'as' is a reserved word and so
changing the name was required as we wanted to import symbols for use in compilation_db
tool.</p>
</li>
<li><p class="first">Add no_progress (-Q) option as a set-able option. However, setting it in the
SConstruct/SConscript will still cause "scons: Reading SConscript files ..." to be
printed, since the option is not set when the build scripts first get read.</p>
</li>
<li><p class="first">Docbook builder provides a fallback if lxml fails to generate
a document with <tt class="docutils literal">tostring()</tt>.</p>
</li>
<li><p class="first"><tt class="docutils literal">SubstitutionEnvironment</tt> and <tt class="docutils literal">OverrideEnvironment</tt> now have <tt class="docutils literal">keys()</tt>
and <tt class="docutils literal">values()</tt> methods to better emulate a dict (already had <tt class="docutils literal">items()</tt>).</p>
</li>
</ul>
</div>
<div class="section" id="fixes">
<h2>FIXES</h2>
<ul>
<li><p class="first">Cleanup dangling symlinks before running builders (Issue #3516)</p>
</li>
<li><p class="first">Fixed usage of abspath and path for <cite>RootDir</cite> objects on Windows. Previously
<tt class="docutils literal"><span class="pre">env.fs.Dir("T:").abspath</span></tt> would return <tt class="docutils literal"><span class="pre">"T:\\T:"</span></tt> and now it correctly returns <tt class="docutils literal">"T:"</tt>.</p>
</li>
<li><p class="first">Fix Issue #3469 - Fixed improper reuse of temporary and compiled files by <tt class="docutils literal">Configure</tt>
when changing the order and/or number of tests. This is done by using the hash
of the generated temporary files content and (For the target files) the hash of
the action. So where previously files would be named:</p>
<ul class="simple">
<li><tt class="docutils literal">config_1.c</tt>, <tt class="docutils literal">config_1.o</tt>, <tt class="docutils literal">config_1</tt></li>
</ul>
<p>they will now be named (For example):</p>
<ul class="simple">
<li><tt class="docutils literal">conftest_68b375d16e812c43e6d72d6e93401e7c_0.c,</tt></li>
<li><tt class="docutils literal">conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187.o</tt></li>
</ul>
<p>or:</p>
<ul class="simple">
<li><tt class="docutils literal">conftest_68b375d16e812c43e6d72d6e93401e7c_0.o</tt></li>
<li><tt class="docutils literal">conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187</tt> (for executable)</li>
</ul>
</li>
<li><p class="first">Updated documentation toolchain to work properly under Python3, also
removed libxslt support from the Docbook Tool. (issue #3580)</p>
</li>
<li><p class="first">Fix broken clang + MSVC 2019 combination by using MSVC configuration logic to
propagate <tt class="docutils literal">VCINSTALLDIR</tt> and <tt class="docutils literal">VCToolsInstallDir</tt> which clang tools use to locate
header files and libraries from MSVC install. (Fixes GH Issue #3480)</p>
</li>
<li><p class="first">Fix Github Issue #2904 - Provide useful error message when more than one Configure Contexts are opened.
Only one open is allowed. You must call <tt class="docutils literal">conf.Finish()</tt> to complete the currently open one before creating another</p>
</li>
</ul>
</div>
<div class="section" id="improvements">
<h2>IMPROVEMENTS</h2>
<ul class="simple">
<li>Improve performance of Subst by preventing unnecessary frame allocations by no longer defining the *Subber classes inside of their respective function calls.</li>
<li>Improve performance of Subst in some cases by preventing
unnecessary calls to eval when a token is surrounded in braces
but is not a function call.</li>
<li>Improve performance of subst by removing unnecessary recursion.</li>
</ul>
</div>
<div class="section" id="packaging">
<h2>PACKAGING</h2>
<ul class="simple">
<li>Resolve Issue #3451 and Issue #3450 - Rewrite SCons setup.py and packaging. Move script logic to entry points so
package can create scripts which use the correct version of Python.</li>
</ul>
</div>
<div class="section" id="documentation">
<h2>DOCUMENTATION</h2>
<ul class="simple">
<li>Significant rework of documentation: API docs are now generated
using Sphinx; manpage and user guide now use more "standard"
markup elements (which could facilitate later conversion to a
different doc format, should that choice be made); significant
rewordings in manpage. Manpage Examples moved to an external
repository / <a class="reference external" href="https://scons-cookbook.readthedocs.io">website</a>.</li>
</ul>
<div class="section" id="thanks-to-the-following-contributors-listed-below-for-their-contributions-to-this-release">
<h3>Thanks to the following contributors listed below for their contributions to this release.</h3>
<div class="highlight"><pre><span></span>git shortlog --no-merges -ns 3.1.2..HEAD
290 William Deegan
184 Mats Wichmann
46 Adam Gross
22 Daniel Moody
16 Joseph Brill
15 Dirk Baechle
12 Ivan Kravets
9 Mathew Robinson
6 Paul Tipei
1 Rob Boehne
1 Robert Boehne
1 Daniel
1 Andrew Morrow
1 Iosif Daniel Kurazs
1 James Benton
1 Jeremy Elson
1 Konstantin Gonchar
1 Andrii Doroshenko (Xrayez)
</pre></div>
</div>
</div>
SCons 3.1.2 is available2019-12-17T21:52:42-08:002019-12-17T21:52:42-08:00William Deegantag:scons.org,2019-12-17:/scons-312-is-available.html<p class="first last">SCons release 3.1.2 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.1.2/">page</a> at SourceForge. This release should be used instead of 3.1.1. This release fixes several issues. This release supports Python versions 2.7.* as well as 3.5+.</p>
<p>SCons release 3.1.2 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.1.2/">page</a> at SourceForge. This release should be used instead of 3.0.4. This release fixes several issues.
This release supports Python versions 2.7.* as well as 3.5+. You can view <a class="reference external" href="https://raw.githubusercontent.com/SCons/scons/rel_3.1.2/src/CHANGES.txt">ChangeLog</a></p>
<p>Note that due to many changes needed to support both 2.7 and 3.5+ switching python between 2.7 and 3.5+ will cause rebuilds of some targets.</p>
SCons 3.0.5 is available2019-03-26T15:04:42-07:002019-03-26T15:04:42-07:00William Deegantag:scons.org,2019-03-26:/scons-305-is-available.html<p class="first last">SCons release 3.0.5 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.5/">page</a> at SourceForge. This release should be used instead of 3.0.4. This release fixes several issues. This release supports Python versions 2.7.* as well as 3.5+.</p>
<p>SCons release 3.0.5 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.5/">page</a> at SourceForge. This release should be used instead of 3.0.4. This release fixes several issues.
This release supports Python versions 2.7.* as well as 3.5+. You can view <a class="reference external" href="https://raw.githubusercontent.com/SCons/scons/rel_3.0.5/src/CHANGES.txt">ChangeLog</a></p>
<p>Note that due to many changes needed to support both 2.7 and 3.5+ switching python between 2.7 and 3.5+ will cause rebuilds of some targets.</p>
SCons 3.0.4 is available2019-02-20T22:49:27-08:002019-02-20T22:49:27-08:00William Deegantag:scons.org,2019-02-20:/scons-304-is-available.html<p class="first last">SCons release 3.0.4 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.4/">page</a> at SourceForge. This release should be used instead of 3.0.2. This release fixes several issues. This release supports Python versions 2.7.* as well as 3.5+.</p>
<p>SCons release 3.0.3 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.4/">page</a> at SourceForge. This release should be used instead of 3.0.2. This release fixes several issues.
This release supports Python versions 2.7.* as well as 3.5+. You can view <a class="reference external" href="https://raw.githubusercontent.com/SConsProject/scons/rel_3.0.4/src/CHANGES.txt">ChangeLog</a></p>
<p>Note that due to many changes needed to support both 2.7 and 3.5+ switching python between 2.7 and 3.5+ will cause rebuilds of some targets.</p>
SCons 3.0.3 is available2019-01-07T20:05:22-08:002019-01-07T20:05:22-08:00William Deegantag:scons.org,2019-01-07:/scons-303-is-available.html<p class="first last">SCons release 3.0.3 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.3/">page</a> at SourceForge. This release should be used instead of 3.0.2. This release fixes several issues. This release supports Python versions 2.7.* as well as 3.5+.</p>
<p>SCons release 3.0.3 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.3/">page</a> at SourceForge. This release should be used instead of 3.0.2. This release fixes several issues.
This release supports Python versions 2.7.* as well as 3.5+. You can view <a class="reference external" href="https://raw.githubusercontent.com/SConsProject/scons/rel_3.0.3/src/CHANGES.txt">ChangeLog</a></p>
<p>Note that due to many changes needed to support both 2.7 and 3.5+ switching python between 2.7 and 3.5+ will cause rebuilds of some targets.</p>
SCons 3.0.2 is available2018-12-31T16:00:12-08:002018-12-31T16:00:12-08:00William Deegantag:scons.org,2018-12-31:/scons-302-is-available.html<p class="first last">SCons release 3.0.2 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.2/">page</a> at SourceForge. This release should be used instead of 3.0.1. This release fixes several issues. This release supports Python versions 2.7.* as well as 3.5+.</p>
<p>SCons release 3.0.2 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.2/">page</a> at SourceForge. This release should be used instead of 3.0.1. This release fixes several issues.
This release supports Python versions 2.7.* as well as 3.5+. You can view <a class="reference external" href="https://raw.githubusercontent.com/SConsProject/scons/rel_3.0.2/src/CHANGES.txt">ChangeLog</a></p>
<p>Note that due to many changes needed to support both 2.7 and 3.5+ switching python between 2.7 and 3.5+ will cause rebuilds of some targets.</p>
Tracking of SCons bug reports has moved to GitHub2018-02-09T19:19:00-08:002018-02-09T19:19:00-08:00William Deegantag:scons.org,2018-02-09:/tracking-of-scons-bug-reports-has-moved-to-github.html<p class="first last">Tracking of SCons bug reports, patches and feature requests has moved to GitHub.</p>
<p>After many years of tracking bug reports, patches and feature requests
at our <a class="reference external" href="http://www.tigris.org">tigris.org</a> we've finally moved into the present and bugs and pull requests can be
filed at <a class="reference external" href="https://github.com/SCons/scons">github.com</a>
The goal is for this to provide improved management of work on the project.</p>
Bugs and Feature Requests2018-02-09T19:11:00-08:002018-02-09T19:11:00-08:00William Deegantag:scons.org,2018-02-09:/bugs.html<p>The SCons project welcomes bug reports and feature requests.</p>
<p>The procedure may be a little different than in many open source projects: the maintainer team prefers that issues are discussed before filing. So please make sure you send email with the problem or feature request to the SCons user's mailing …</p><p>The SCons project welcomes bug reports and feature requests.</p>
<p>The procedure may be a little different than in many open source projects: the maintainer team prefers that issues are discussed before filing. So please make sure you send email with the problem or feature request to the SCons user's mailing list, which you can join via the link below:
<a class="reference external" href="http://four.pairlist.net/mailman/listinfo/scons-users">scons-users</a></p>
<p>Once you have discussed your issue on the users mailing list and the community has confirmed that it should be filed (new issue, enhancement/feature request), then please follow the instructions the community provides to file a new issue. If it's a duplicate, you'll find the issue number, and you can add yourself as a "participant" by making a comment, or even by adding a reaction (emoji) on an existing comment.</p>
<p>You can explore the list of existing issues, which may include workarounds for the problem you've run into on GitHub <a class="reference external" href="https://github.com/SCons/scons/issues">Issues</a></p>
SCons 3.0.1 is available2017-11-12T15:31:00-08:002017-11-12T15:31:00-08:00William Deegantag:scons.org,2017-11-12:/scons-301-is-available.html<p class="first last">SCons release 3.0.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.1/">page</a> at SourceForge. This release should be used instead of 3.0.1. This release fixes several issues. This release supports Python versions 2.7.* as well as 3.5+.</p>
<p>SCons release 3.0.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.1/">page</a> at SourceForge. This release should be used instead of 3.0.1. This release fixes several issues.
This release supports Python versions 2.7.* as well as 3.5+. You can view <a class="reference external" href="https://raw.githubusercontent.com/SConsProject/scons/rel_3.0.1/src/CHANGES.txt">ChangeLog</a></p>
<p>Note that due to many changes needed to support both 2.7 and 3.5+ switching python between 2.7 and 3.5+ will cause rebuilds of some targets.</p>
SCons Version Specific Documentation2017-09-18T10:20:00-07:002017-09-18T10:20:00-07:00SCons Foundationtag:scons.org,2017-09-18:/docversions.htmlSCons 3.0.0 is available2017-09-18T10:20:00-07:002017-09-18T10:20:00-07:00William Deegantag:scons.org,2017-09-18:/scons-300-is-available.html<p class="first last">SCons release 3.0.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.0/">page</a> at SourceForge. This release should be used instead of 2.5.1. This release fixes several issues. This will be the first release to support Python versions 2.7.* as well as 3.5+.</p>
<p>SCons release 3.0.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/3.0.0/">page</a> at SourceForge. This release should be used instead of 2.5.1. This release fixes several issues.
This will be the first release to support Python versions 2.7.* as well as 3.5+. You can view <a class="reference external" href="https://bitbucket.org/scons/scons/src/rel_3.0.0/src/CHANGES.txt?at=3.0.0">ChangeLog</a></p>
<p>Note that due to many changes needed to support both 2.7 and 3.5+ switching python between 2.7 and 3.5+ will cause rebuilds of some targets.</p>
SCons 2.5.1 is available2016-11-03T10:20:00-07:002016-11-03T10:20:00-07:00William Deegantag:scons.org,2016-11-03:/scons-251-is-available.html<p class="first last">SCons release 2.5.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.5.1/">page</a> at SourceForge. This release should be used instead of 2.5.0. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
<p>SCons release 2.5.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.5.1/">page</a> at SourceForge. This release should be used instead of 2.5.0. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3. You can view <a class="reference external" href="https://bitbucket.org/scons/scons/src/rel_2.5.1/src/CHANGES.txt?at=2.5.1">ChangeLog</a></p>
<p>Note that due to improvements in cross language scanning 2.5.1 may find a non-trivial amount of previously undiscovered dependancies which may cause rebuilds and longer runtimes.</p>
SCons 2.5.0 is available2016-04-09T10:20:00-07:002016-04-09T10:20:00-07:00William Deegantag:scons.org,2016-04-09:/scons-250-is-available.html<p class="first last">SCons release 2.5.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.5.0/">page</a> at SourceForge. This release should be used instead of 2.4.1. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
<p>SCons release 2.5.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.5.0/">page</a> at SourceForge. This release should be used instead of 2.4.1. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3. You can view <a class="reference external" href="https://bitbucket.org/scons/scons/src/rel_2.5.0/src/CHANGES.txt?at=2.5.0">ChangeLog</a></p>
<p>Note that due to improvements in cross language scanning 2.5.0 may find a non-trivial amount of previously undiscovered dependancies which may cause rebuilds and longer runtimes.</p>
SCons 2.4.1 is available2015-11-07T10:20:00-08:002015-11-07T10:20:00-08:00William Deegantag:scons.org,2015-11-07:/scons-241-is-available.html<p class="first last">SCons release 2.4.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.4.1/">page</a> at SourceForge. This release should be used instead of 2.4.0. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
<p>SCons release 2.4.1 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.4.1/">page</a> at SourceForge. This release should be used instead of 2.4.0. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
SCons 2.4.0 is available2015-09-21T10:20:00-07:002015-09-21T10:20:00-07:00William Deegantag:scons.org,2015-09-21:/scons-240-is-available.html<p class="first last">SCons release 2.4.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.4.0/">page</a> at SourceForge. This release should be used instead of 2.3.6. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
<p>SCons release 2.4.0 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.4.0/">page</a> at SourceForge. This release should be used instead of 2.3.6. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
Donate2015-08-07T10:20:00-07:002015-08-07T10:20:00-07:00SCons Foundationtag:scons.org,2015-08-07:/donate.html<p>Thank you for considering a donation to support SCons</p>
<p>None of us working on SCons is doing it to make a fortune, but we have
been putting in a lot of time and more than a little out-of-pocket cash
to write and get out the word about a tool that …</p><p>Thank you for considering a donation to support SCons</p>
<p>None of us working on SCons is doing it to make a fortune, but we have
been putting in a lot of time and more than a little out-of-pocket cash
to write and get out the word about a tool that we hope is helping
people build software more easily and effectively.</p>
<p>If you'd care to make a cash donation to help support the costs of
developing and promoting SCons, it would be greatly appreciated. The
following button will take you to a PayPal page where you can consider
making a donation by credit card:</p>
<div>
<form method="post" action="https://www.paypal.com/cgi-bin/webscr">
<input type="hidden" value="_xclick" name="cmd"></input>
<input type="hidden" value="donate@scons.org" name="business"></input>
<input type="hidden" value="1" name="no_note"></input>
<input type="hidden" value="USD" name="currency_code"></input>
<input type="hidden" value="0" name="tax"></input>
<input type="image" border="0" alt="Make a donation with PayPal - it's fast, free and secure!" name="submit" src="https://www.paypal.com/images/x-click-but11.gif"></input>
</form>
</div><p>(Don't worry, nothing will actually happen until you've had a chance
check out the page, satisfy yourself that it's legitimate, and actually
submit the necessary information to make a donation.)</p>
<p>We are also interested in donations of either hardware or software to
help with establishing a test bed that we could use to ensure that SCons
interoperates with a wide variety of platforms and tools--even old,
outdated ones. If you have an old, slow system that you can't find
anyone else to take, or an unused copy of an operating system, compiler
or other software tool, consider contacting us at <<a class="reference external" href="mailto:donate@scons.org">donate@scons.org</a>> to
see if we could use it. (If we can use what you have available, and have
cash on hand, we'll likely even pay the shipping costs.)</p>
<p>Note that SCons is not a 501(c)(3) charitable organization, so any
donations of cash, hardware or software are not legally tax-deductible
in the United States. If this really starts growing, we'll likely try to
organize in that fashion, but we're just not anywhere near that big
yet...</p>
<p>Thanks again for consideration a donation.</p>
Logos2015-08-07T10:20:00-07:002015-08-07T10:20:00-07:00SCons Foundationtag:scons.org,2015-08-07:/logos.html<p>You are welcome to use these SCons logos in your projects and on your
web sites without prior approval, attribution required.
Thanks very much to <a class="reference external" href="http://www.goebel-consult.de/">Hartmut Goebel</a> for creating them.</p>
<table border="1" class="table table-bordered docutils">
<caption>SCons Logos</caption>
<colgroup>
<col width="33%" />
<col width="33%" />
<col width="33%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Name</th>
<th class="head">Image</th>
<th class="head">License</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>SCons Logo (PNG)</td>
<td><img alt=""SCons Logo"" class="first last" src="https://scons.org/images/SCons.png" />
</td>
<td><a class="reference external" href="http://creativecommons.org/licenses/by-sa/3.0/">by-sa</a></td>
</tr>
<tr><td>"Constructs Using SCons (PNG)" badge</td>
<td><img alt=""Constructs Using SCons"" class="first last" src="https://scons.org/images/Constructs-using-SCons.png" />
</td>
<td><a class="reference external" href="http://creativecommons.org/licenses/by-sa/3.0/">by-sa</a></td>
</tr>
<tr><td>SCons Bricks (PNG)</td>
<td><img alt=""SCons Bricks"" class="first last" src="https://scons.org/images/SCons-Bricks.png" />
</td>
<td><a class="reference external" href="http://creativecommons.org/licenses/by-sa/3.0/">by-sa</a></td>
</tr>
<tr><td>SCons …</td></tr></tbody></table><p>You are welcome to use these SCons logos in your projects and on your
web sites without prior approval, attribution required.
Thanks very much to <a class="reference external" href="http://www.goebel-consult.de/">Hartmut Goebel</a> for creating them.</p>
<table border="1" class="table table-bordered docutils">
<caption>SCons Logos</caption>
<colgroup>
<col width="33%" />
<col width="33%" />
<col width="33%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Name</th>
<th class="head">Image</th>
<th class="head">License</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>SCons Logo (PNG)</td>
<td><img alt=""SCons Logo"" class="first last" src="https://scons.org/images/SCons.png" />
</td>
<td><a class="reference external" href="http://creativecommons.org/licenses/by-sa/3.0/">by-sa</a></td>
</tr>
<tr><td>"Constructs Using SCons (PNG)" badge</td>
<td><img alt=""Constructs Using SCons"" class="first last" src="https://scons.org/images/Constructs-using-SCons.png" />
</td>
<td><a class="reference external" href="http://creativecommons.org/licenses/by-sa/3.0/">by-sa</a></td>
</tr>
<tr><td>SCons Bricks (PNG)</td>
<td><img alt=""SCons Bricks"" class="first last" src="https://scons.org/images/SCons-Bricks.png" />
</td>
<td><a class="reference external" href="http://creativecommons.org/licenses/by-sa/3.0/">by-sa</a></td>
</tr>
<tr><td>SCons Logo (SVG), all 3 above layers</td>
<td><object class="first last" data="https://scons.org/images/SCons.svg" type="image/svg+xml"></object>
</td>
<td><a class="reference external" href="http://creativecommons.org/licenses/by-sa/3.0/">by-sa</a></td>
</tr>
</tbody>
</table>
SCons 2.3.6 is available2015-07-31T10:20:00-07:002015-07-31T10:20:00-07:00William Deegantag:scons.org,2015-07-31:/scons-236-is-available.html<p class="first last">SCons release 2.3.6 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.6/">page</a> at SourceForge. This release should be used instead of 2.3.5. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
<p>SCons release 2.3.6 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.6/">page</a> at SourceForge. This release should be used instead of 2.3.5. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
SCons 2.3.5 is available2015-06-17T10:20:00-07:002015-06-17T10:20:00-07:00William Deegantag:scons.org,2015-06-17:/scons-235-is-available.html<p class="first last">SCons release 2.3.5 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.5/">page</a> at SourceForge. This release should be used instead of 2.3.4. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
<p>SCons release 2.3.5 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.5/">page</a> at SourceForge. This release should be used instead of 2.3.4. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
References2015-05-17T00:00:00-07:002015-05-17T00:00:00-07:00SCons Foundationtag:scons.org,2015-05-17:/refer.html<p>There are lots of people and projects using SCons; here's what some of
them have to say about it.</p>
<blockquote>
<p><a href="http://platformio.ikravets.com">PlatformIO</a></p>
<p><em>PlatformIO</em> is a cross-platform code builder and the missing library manager.</p>
<p><strong>Single source code - Multiple platforms!</strong></p>
<p>SCons is an irreplaceable software construction tool for embedded
development. <em>PlatformIO Code Builder</em> uses …</p></blockquote><p>There are lots of people and projects using SCons; here's what some of
them have to say about it.</p>
<blockquote>
<p><a href="http://platformio.ikravets.com">PlatformIO</a></p>
<p><em>PlatformIO</em> is a cross-platform code builder and the missing library manager.</p>
<p><strong>Single source code - Multiple platforms!</strong></p>
<p>SCons is an irreplaceable software construction tool for embedded
development. <em>PlatformIO Code Builder</em> uses it to build single source
code to multiple embedded platforms.
SCons allowed <em>PlatformIO</em> to replace huge <em>Makefiles</em> by simple SCons
Scripts with the several lines.</p>
<p>— Ivan Kravets, PlatformIO author</p>
</blockquote>
<p><a href="http://newage-avkseg.com">NEWAGE AVK SEG</a></p>
<p>Newage-AVKSEG uses SCons in all of its embedded-control software
development projects.</p>
<p>"Once more I have to say that I <strong>really</strong> like SCons. Being a
python-newbie I managed to write some extensions that allow the usage of
SCons for our Make-driven projects nearly out of the box. The first of
our projects I have converted to SCons consists of 750 '#include'-Files
in about 100 include-directories and 500 C/C++ sourcefiles in 76
libraries. The original <code>MAKE</code>-Project-setup was heavily recursive and
is now substituted with a single <code>SCONSTRUCT</code>-file of about 120 lines of
python-code. This is Great!"</p>
<p>—Thomas Runge, NEWAGE AVK SEG</p>
<p><a href="http://www.ni.com">National Instruments</a></p>
<p>NI uses SCons on a project of more than 5000 source files (.h and .cpp).</p>
<p>" We use SCons at work to build a huge, highly componentized project
with upwards of 5000 source files. It's hands down the best experience
I've ever had for building large projects."</p>
<p>—Greg Falcon, National Instruments</p>
<p><a href="http://bombyx.sourceforge.net/">Bombyx</a></p>
<p>This open source project, a graphical Secure Internet Live Conferencing
(<a href="http://www.silcnet.org">SILC</a>) client, converted to using SCons for
cross-platform builds in May 2002.</p>
<p>"SCons is a fantastic build system, written in Python (1.5.2) that does
lots of nice things like automated dependencies, cross platform
operation, configuration, and other great stuff. I would have to say
that it is probably going to be the best thing for building C/C++
projects in the near future."</p>
<p>—Zed A. Shaw, Bombyx project lead</p>
<p><a href="http://ailoom.sourceforge.net/">AI Loom</a></p>
<p>AI Loom is a cross-platform toolkit for rapid development of artificial
intelligent agents.</p>
<p>"SCons is a replacement for make and is far, far, FAR better... The Loom
team strongly suggests that you consider SCons for all your application
development."</p>
<p>—AI Loom <a href="http://ailoom.sourceforge.net/docs/readme.html">README</a> file</p>
<p><a href="http://sphere.sourceforge.net/">Sphere</a></p>
<p>Sphere is a 2D RPG engine that allows people with minimal programming
experience to create role-playing games like Final Fantasy VI or
Phantasy Star. Sphere uses SCons to build more than 90,000 lines of code
in 480 files using both MinGW and VC++ 6.0.</p>
<p>"SCons has made my life as a maintainer so much easier by allowing me to
build and install all of Sphere's components into their correct
locations, autogenerate documentation, and create an installer, all in
one command."</p>
<p>—Chad Austin, Sphere creator and project manager</p>
<p><a href="http://www.aerosonde.com/">Aerosonde</a></p>
<p>The Aerosonde is a small long endurance UAV (Unmanned Aerial Vehicle)
originally developed for meteorological sensing.</p>
<p>"We now use SCons for all our code builds including the avionics code
for embedded targets as well as PC applications (Windows & Unix). It has
been working well for us since we started using it to overcome a memory
problem with makefiles."</p>
<p>—Aerosonde Software Engineering Manager</p>
<p><a href="http://cctbx.sourceforge.net/">cctbx</a></p>
<p>The Computational Crystallography Toolbox is a portable, reusable
scientific software library for crystallography. The project has adopted
SCons for all of its cross-platform builds, as
<a href="http://cci.lbl.gov/publications/download/compcomm_1_2003/#a-piece-of-cake">described</a>
in an <a href="http://cci.lbl.gov/publications/download/compcomm_1_2003/">update
paper</a>
published in January 2003.</p>
<p>"Having a global view of the dependencies is <strong>really</strong> cool. Compare
the couple of seconds of waiting with the need to <code>make clean; make</code> or
<code>make depend; make</code>. I wasted so much time before because I forgot about
certain dependencies, resulting in inconsistent builds and strange bugs.
This hasn't happened to me anymore since I switched to SCons."</p>
<p>—Ralf W. Grosse-Kunstleve, cctbx Project Leader</p>
<p><a href="http://www.es.com">Evans & Sutherland</a></p>
<p>Evans & Sutherland produces professional hardware and software to create
highly realistic visual images for simulation, training, engineering,
and other applications throughout the world. E&S visual systems are used
in both military and commercial systems, as well as planetariums and
interactive theaters.</p>
<p>"SCons and Python have allowed us to create a flexible, extensible
framework for organizing the automated builds of a number our products."</p>
<p>—E&S Software Engineer</p>
<p><a href="http://reduz.com.ar/cheesetronic/index.php?section=2">Cheesetracker</a></p>
<p>Cheesetracker is an Open Source electronic music program similar to
Impulse Tracker and ScreamTracker, part of the
<a href="http://cheesetronic.sf.net">Cheesetronic</a> suite of audio and music
composition applications.</p>
<p>"SCons does an awesome job keeping track of everything, managing
components that you can switch on depending on what you want to compile,
etc. But most importantly, being Python based we can do customization to
a degree of freedom and ease that the autotools package would never
allow us! ... [T]hanks for such an awesome build system!"</p>
<p>—Juan Linietsky, Cheesetronic project leader</p>
<p><a href="None">Unreleased Ph.D. project</a></p>
<p>Earlier while using Makefiles I used about 20 different makefiles with
about 1000 lines of make code... I switched to SCons a few weeks back
and had the basics up and running in very little time. This week I
polished the <code>SConscript/SConstruct</code> files more to my liking and now it
works really well. The code to do this uses two files (<code>SConstruct</code> and
a <code>SConscript</code>) files at about 190 lines of code! Any number of variants
were easy to handle and the approach to this was much cleaner than my
way of handling it with make. Since it's all Python, the syntax is not a
problem at all. The scripts are elegant and fairly easy to understand.
Its remarkable that almost all that I was doing with my makefiles could
be handled in so little code.</p>
<p>—Prabhu Ramachandran</p>
<p><a href="http://www.qeradiant.com">GtkRadiant</a></p>
<p>This package of game level design tools converted their Linux builds
from Cons classic to SCons in July 2003.</p>
<p><a href="http://www.iplt.org">Image Processing Library and Toolbox</a></p>
<p>IPLT provides a C++ image processing library, Python wrappers, and a
wxWindows-based GUI. The project started using SCons for builds in July
2003.</p>
<p><a href="http://www.atd.ucar.edu">Research Technology Facility, NCAR</a></p>
<p>The Research Technology Facility of NCAR's Atmospheric Techology
Division is using SCons to build a project with 750 files and 38
subdirectories.</p>
<p>"We replaced an <code>autoconf/automake</code> environment that had been a real
challenge to maintain. SCons's auto-dependency features have been great
-- I now have confidence that my libraries are rebuilt when needed."</p>
<p>—Joe Van Andel, NCAR</p>
<p><a href="http://www.idsoftware.com">id Software</a></p>
<p>Doom3 Linux's build system uses SCons.</p>
<p>"<code>CC="ccache distcc g++-3.3" JOBS=8</code> rocks!"</p>
<p>—Timothee Besset, id Software</p>
<p><a href="http://dicomlib.swri.ca/dicomlib.html">Dicomlib</a></p>
<p>Dicomlib is an all-new dicom library with the goal of "providing a
clean, simple API, close adherence to the DICOM standard and rigorous
type safety." Dicomlib uses SCons for its UNIX builds.</p>
<p>"...[my] experience is that SCons is so much more powerful and easier to
work with than make that it is definitely worth it."</p>
<p>—Trevor Morgan, Dicomlib author</p>
<p><a href="http://fear.sourceforge.net/">FEAR</a></p>
<p>FEAR is a language-independent open source project for creating
artificial intelligence within realistic simulated world (game)
environments. FEAR uses SCons for all of its build and packaging.</p>
<p>"SCons is a truly awesome tool that offers power and flexibility second
to none... Within days of introducing SCons, it already replaced the
various tools and Visual Studio files. Now it handles things such as
generating source code from templates, compiling C++ files, building
release packages, extracting and generating documentation, among many
other things."</p>
<p>—FEAR <a href="http://fear.sourceforge.net/docs/latest/guide/Build.html">User
Guide</a></p>
<p><a href="http://madman.sourceforge.net">madman</a></p>
<p>madman is a music manager application similar to Apple's iTunes and the
like. madman began using SCons for its builds in December 2003.</p>
<p><a href="http://rekallrevealed.org">Rekall</a></p>
<p>Rekall is a database front end associated with the KDE desktop
environment. Rekall has begun converting their build process to SCons
with their 2.3.0-Beta0 release.</p>
<p><a href="http://www.blender3d.org">Blender</a></p>
<p>Blender is an Open Source software package for 3D modeling, animation,
rendering, post-production, interactive creation and playback. The
Blender Foundation
<a href="http://www.blender3d.org/cms/Build_systems.108.0.html">announced</a> that
Blender has been using SCons <a href="http://www.blender3d.org/cms/Building_with_SCons.137.0.html">since January 4,
2004</a> to
build Blender on Linux, Windows (using both Microsoft Visual C and
Cygwin), Solaris, Mac OS X, IRIX and OpenBSD.</p>
<p><a href="http://it-proj-diane.web.cern.ch/it-proj-diane/">DIANE</a></p>
<p>DIANE is a lightweight distributed framework for parallel scientific
applications in master-worker model. Some of the applications include:
Simulation for Radiotherapy and Astrophysics, BLAST for Genome
Sequencing, Data Analysis for High Energy Physics and Image Rendering.
It is a thin software layer which easily works on top of more
fundamental middleware such as LSF, PBS or the Grid Resource Brokers. It
may also work in a standalone mode and does not require any complex
underlying software. Applications may be run in local clusters or on the
Grid without any special modifications. DIANE is using SCons primarily
to build extension modules for Python.</p>
<p><a href="http://sourceforge.net/projects/stringx/">Stringx</a></p>
<p>Strinx is a string library written in C++ using modern template
techniques, designed to be efficient and easy to use.</p>
<p>"I would like to take this opportunity to thank the SCons development
team for their wonderful build tool. Without it, the development of the
Strinx library would be much more difficult."</p>
<p>—Shachar Sharon, Strinx author</p>
<p><a href="http://www.scons.org/">SCons</a></p>
<p>Of course, SCons uses itself to build and package SCons.</p>SCons registered with OpenHatch2015-05-05T23:40:00-07:002015-05-05T23:40:00-07:00Dirk Baechletag:scons.org,2015-05-05:/scons-registered-with-openhatch.html<p class="first last">SCons is now registered with <a class="reference external" href="http://openhatch.org/search/">OpenHatch</a> so check out our project <a class="reference external" href="http://openhatch.org/projects/SCons">page</a> over there, and don't forget to tell your friends!</p>
<p>We're happy to announce that SCons is now properly registered with
<a class="reference external" href="http://openhatch.org/search/">OpenHatch</a>, the project page being:</p>
<blockquote>
<a class="reference external" href="http://openhatch.org/projects/SCons">http://openhatch.org/projects/SCons</a></blockquote>
<p>and you can inspect the list of currently open bugs at</p>
<blockquote>
<a class="reference external" href="http://openhatch.org/search/?project=SCons">http://openhatch.org/search/?project=SCons</a></blockquote>
<p>If you feel up to the task, please add yourself as a mentor, or help interested users appearing on our user mailing list to make
their first steps in SCons development.
Finally, don't forget to tell your friends...especially those that are interested in starting with open-source development!</p>
Example for a data processing workflow with SCons2015-03-05T18:50:00-08:002015-03-05T18:50:00-08:00Dirk Baechletag:scons.org,2015-03-05:/example-for-a-data-processing-workflow-with-scons.html<p class="first last">In his blog, Zachary Tessler describes how he setup a data processing workflow in the area of physical oceanography with SCons. Definitely worth a read!</p>
<p>In his blog post</p>
<blockquote>
<a class="reference external" href="http://zacharytessler.com/2015/03/05/data-workflows-with-scons/">http://zacharytessler.com/2015/03/05/data-workflows-with-scons/</a></blockquote>
<p>Zachary reports about his experiments with SCons, while trying to
come up with a cleaner replacement for a bunch of old scripts and
code fragments that proved to be rather unmaintainable.</p>
<p>After a few struggles here and there, he is now rewarded with a more
modular code base. Reproducability of results is a snap, and he can
even run things in parallel with the "-j" option. Check out his nicely
written article now!</p>
SCons 2.3.4 is available2014-09-27T10:20:00-07:002014-09-27T10:20:00-07:00William Deegantag:scons.org,2014-09-27:/scons-234-is-available.html<p class="first last">SCons release 2.3.4 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.4/">page</a> at SourceForge. This release should be used instead of 2.3.3. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
<p>SCons release 2.3.4 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.4/">page</a> at SourceForge. This release should be used instead of 2.3.3. This release fixes several issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
SCons 2.3.2 is available2014-08-24T10:20:00-07:002014-08-24T10:20:00-07:00William Deegantag:scons.org,2014-08-24:/scons-232-is-available.html<p class="first last">SCons release 2.3.2 now available from the download page at SourceForge. This release adds new features, and fixes and improves a number of issues.</p>
<p>SCons release 2.3.2 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.2/">page</a> at SourceForge. This release adds new features, and fixes and improves a number of issues.</p>
SCons 2.3.3 is available2014-08-24T10:20:00-07:002014-08-24T10:20:00-07:00William Deegantag:scons.org,2014-08-24:/scons-233-is-available.html<p class="first last">This release should be used instead of 2.3.2, especially on Windows. This release adds a few new features, and fixes and improves a number of issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
<p>SCons release 2.3.3 now available from the download <a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.3/">page</a> at SourceForge. This release should be used instead of 2.3.2, especially on Windows. This release adds a few new features, and fixes and improves a number of issues. This will be the last release to support Python versions earlier than 2.7, as we begin to move toward supporting Python 3.</p>
SCons 2.3.1 is available2014-03-02T12:00:00-08:002014-03-02T12:00:00-08:00William Deegantag:scons.org,2014-03-02:/scons-231-is-available.html<p class="first last">SCons release 2.3.1 now available from the download page at SourceForge.</p>
<p>SCons release 2.3.1 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.1/">download page</a>
at SourceForge.
This release adds new features, and fixes and improves a number of issues.</p>
<p>See the <a class="reference external" href="RELEASE.txt">Release notes</a> for important changes,
and see the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in this release.</p>
SCons 2.3.0 is available2013-03-02T12:00:00-08:002013-03-02T12:00:00-08:00William Deegantag:scons.org,2013-03-02:/scons-230-is-available.html<p class="first last">SCons release 2.3.0 now available from the download page at SourceForge.</p>
<p>SCons release 2.3.0 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.3.0/">download page</a>
at SourceForge.
This release adds new features, and fixes and improves a number of issues.</p>
<p>See the <a class="reference external" href="RELEASE.txt">Release notes</a> for important changes,
and see the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in this release.</p>
SCons 2.2.0 is available2012-08-05T12:00:00-07:002012-08-05T12:00:00-07:00William Deegantag:scons.org,2012-08-05:/scons-220-is-available.html<p class="first last">SCons release 2.2.0 now available from the download page at SourceForge.</p>
<p>SCons release 2.2.0 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.2.0/">download page</a>
at SourceForge.
This release adds new features, and fixes and improves a number of issues.</p>
<p>The 2.x series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="RELEASE.txt">Release notes</a> for important changes,
and see the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in this release.</p>
SCons 2.1.0 is available2011-09-09T12:00:00-07:002011-09-09T12:00:00-07:00William Deegantag:scons.org,2011-09-09:/scons-210-is-available.html<p class="first last">SCons release 2.1.0 now available from the download page at SourceForge.</p>
<p>SCons release 2.1.0 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.1.0/">download page</a>
at SourceForge.
The 2.1 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.1.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.1.0.alpha.20110323 is available2011-03-23T12:00:00-07:002011-03-23T12:00:00-07:00William Deegantag:scons.org,2011-03-23:/scons-210alpha20110323-is-available.html<p class="first last">SCons release 2.1.0.alpha.20110323 now available from the download page at SourceForge.</p>
<p>SCons release 2.1.0.alpha.20110323 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.1.0.alpha.20110323/">download page</a>
at SourceForge.
The 2.1 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.1.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.1.0.alpha.20101125 is available2010-11-25T12:00:00-08:002010-11-25T12:00:00-08:00William Deegantag:scons.org,2010-11-25:/scons-210alpha20101125-is-available.html<p class="first last">SCons release 2.1.0.alpha.20101125 now available from the download page at SourceForge.</p>
<p>SCons release 2.1.0.alpha.20101125 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.1.0.alpha.20101125/">download page</a>
at SourceForge.
The 2.1 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.1.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.0.1 is available2010-08-15T12:00:00-07:002010-08-15T12:00:00-07:00William Deegantag:scons.org,2010-08-15:/scons-201-is-available.html<p class="first last">SCons release 2.0.1 now available from the download page at SourceForge.</p>
<p>SCons release 2.0.1 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.0.1/">download page</a>
at SourceForge.
The 2.0 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.x.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.3.1 is available2010-07-25T12:00:00-07:002010-07-25T12:00:00-07:00William Deegantag:scons.org,2010-07-25:/scons-131-is-available.html<p class="first last">SCons release 1.3.1 now available from the download page at SourceForge.</p>
<p>SCons release 1.3.1 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.3.1/">download page</a>
at SourceForge.
A number of fixes which should improve compiling on win32 with VS versions up to 9.0.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.0.1.beta.20100627 is available2010-06-27T12:00:00-07:002010-06-27T12:00:00-07:00William Deegantag:scons.org,2010-06-27:/scons-201beta20100627-is-available.html<p class="first last">SCons release 2.0.1.beta.20100627 now available from the download page at SourceForge.</p>
<p>SCons release 2.0.1.beta.20100627 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.0.1.beta.20100627/">download page</a>
at SourceForge.
This a beta release for the 2.0 series.
The 2.0 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.0.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.3.0.d20100626 is available2010-06-26T12:00:00-07:002010-06-26T12:00:00-07:00William Deegantag:scons.org,2010-06-26:/scons-130d20100626-is-available.html<p class="first last">SCons release 1.3.0.d20100626 now available from the download page at SourceForge.</p>
<p>SCons release 1.3.0.d20100626 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.3.0.d20100626/">download page</a>
at SourceForge.
Fix the ability to append to default $*FLAGS values (which are implemented as CLVar instances) in a copied construction environment without affecting the original construction environment's value.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.0.0.final.0 is available2010-06-14T12:00:00-07:002010-06-14T12:00:00-07:00William Deegantag:scons.org,2010-06-14:/scons-200final0-is-available.html<p class="first last">SCons release 2.0.0.final.0 now available from the download page at SourceForge.</p>
<p>SCons production release 2.0.0.final.0 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.0.0.final.0/">download page</a>
at SourceForge.
This is the production release for the 2.0 series.
The 2.0 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.0.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.0.0.candidate.20100607 is available2010-06-07T12:00:00-07:002010-06-07T12:00:00-07:00William Deegantag:scons.org,2010-06-07:/scons-200candidate20100607-is-available.html<p class="first last">SCons release 2.0.0.candidate.20100607 now available from the download page at SourceForge.</p>
<p>SCons release 2.0.0.candidate.20100607 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.0.0.candidate.20100607/">download page</a>
at SourceForge.
First candidate the in 2.0 series.
The 2.0 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.0.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.3.0.d20100606 is available2010-06-06T12:00:00-07:002010-06-06T12:00:00-07:00William Deegantag:scons.org,2010-06-06:/scons-130d20100606-is-available.html<p class="first last">SCons release 1.3.0.d20100606 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.3.0.d20100606
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.3.0/">download page</a>.d20100606
at SourceForge.
Fix issue breaking initialization of MSVS/MSVC/SDK initialization by propagating MS*COM* and COMSPEC from environment if they are not set in by the user in the Environment.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.0.0.beta.20100605 is available2010-06-05T12:00:00-07:002010-06-05T12:00:00-07:00William Deegantag:scons.org,2010-06-05:/scons-200beta20100605-is-available.html<p class="first last">SCons release 2.0.0.beta.20100605 now available from the download page at SourceForge.</p>
<p>SCons release 2.0.0.beta.20100605 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.0.0.beta.20100605/">download page</a>
at SourceForge.
This is the third checkpoint in 2.0 series,
and fixes a few bugs found in the first checkpoint.
The 2.0 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.0.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.0.0.beta.20100531 is available2010-05-31T12:00:00-07:002010-05-31T12:00:00-07:00William Deegantag:scons.org,2010-05-31:/scons-200beta20100531-is-available.html<p class="first last">SCons release 2.0.0.beta.20100531 now available from the download page at SourceForge.</p>
<p>SCons release 2.0.0.beta.20100531 is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.0.0.beta.20100531/">download page</a>
at SourceForge.
This is the second checkpoint in 2.0 series,
and fixes a few bugs found in the first checkpoint.
The 2.0 series drops support for all pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES-2.0.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.3.0.d20100523 is available2010-05-23T12:00:00-07:002010-05-23T12:00:00-07:00William Deegantag:scons.org,2010-05-23:/scons-130d20100523-is-available.html<p class="first last">SCons release 1.3.0.d20100523 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.3.0.d20100523
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.3.0/">download page</a>.d20100523
at SourceForge.
Fix issue with shell environment leaking into Environment via MSVC initialization.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 2.0.0.alpha.20100508 is available2010-05-08T12:00:00-07:002010-05-08T12:00:00-07:00William Deegantag:scons.org,2010-05-08:/scons-200alpha20100508-is-available.html<p class="first last">SCons release 2.0.0.alpha.20100508 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 2.0.0.alpha.20100508
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/2.0.0.alpha.20100508/">download page</a>.d20100501
at SourceForge.
First checkpoint release for the 2.0 series. Dropping support for pre-2.4 versions of Python.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.3.0.d20100501 is available2010-05-01T12:00:00-07:002010-05-01T12:00:00-07:00William Deegantag:scons.org,2010-05-01:/scons-130d20100501-is-available.html<p class="first last">SCons release 1.3.0.d20100501 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.3.0.d20100501
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.3.0/">download page</a>.d20100501
at SourceForge.
For MSVC fix platform defaulting. If on amd64 platform and the user didn't request a specific platform, it will also try x86 before failing.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.3.0.d20100404 is available2010-04-04T12:00:00-07:002010-04-04T12:00:00-07:00William Deegantag:scons.org,2010-04-04:/scons-130d20100404-is-available.html<p class="first last">SCons release 1.3.0.d20100404 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.3.0.d20100404
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.3.0/">download page</a>.d20100404
at SourceForge.
This release contains a minor fix for cygwin paths and a fix for the Express versions of Visual C/C++
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.3.0 is available2010-03-23T12:00:00-07:002010-03-23T12:00:00-07:00William Deegantag:scons.org,2010-03-23:/scons-130-is-available.html<p class="first last">SCons release 1.3.0 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.3.0
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.3.0/">download page</a>
at SourceForge.
This release contains a significant redesign of how SCons
detects installed Visual Studio and Visual C/C++ versions.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.2.0.d20100306 is available2010-03-06T12:00:00-08:002010-03-06T12:00:00-08:00William Deegantag:scons.org,2010-03-06:/scons-120d20100306-is-available.html<p class="first last">SCons release 1.2.0.d20100306 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.2.0.d20100306
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.2.0.d20100306/">download page</a>
at SourceForge.
This release contains a significant redesign of how SCons
detects installed Visual Studio and Visual C/C++ versions.
It is intended to be the last checkpoint prior to 1.3 release.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.2.0.d20100117 is available2010-01-17T12:00:00-08:002010-01-17T12:00:00-08:00William Deegantag:scons.org,2010-01-17:/scons-120d20100117-is-available.html<p class="first last">SCons release 1.2.0.d20100117 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.2.0.d20100117
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.2.0.d20100117/">download page</a>
at SourceForge.
This release contains a significant redesign of how SCons
detects installed Visual Studio and Visual C/C++ versions.
It is intended to be the last checkpoint prior to 1.3 release.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.2.0.d20091224 is available2009-12-24T12:00:00-08:002009-12-24T12:00:00-08:00William Deegantag:scons.org,2009-12-24:/scons-120d20091224-is-available.html<p class="first last">SCons release 1.2.0.d20091224 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.2.0.d20091224
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.2.0.d20091224/">download page</a>
at SourceForge.
This release contains a significant redesign of how SCons
detects installed Visual Studio and Visual C/C++ versions.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.2.0.d20090919 is available2009-09-19T12:00:00-07:002009-09-19T12:00:00-07:00William Deegantag:scons.org,2009-09-19:/scons-120d20090919-is-available.html<p class="first last">SCons release 1.2.0.d20090919 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.2.0.d20090919
is now available from the
<a class="reference external" href="http://sourceforge.net/projects/scons/files/scons/1.2.0.d20090919/">download page</a>
at SourceForge.
This release contains a significant redesign of how SCons
detects installed Visual Studio and Visual C/C++ versions.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.2.0.d20090223 is available2009-02-23T12:00:00-08:002009-02-23T12:00:00-08:00William Deegantag:scons.org,2009-02-23:/scons-120d20090223-is-available.html<p class="first last">SCons release 1.2.0.d20090223 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.2.0.d20090223
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release contains a significant redesign of how SCons
detects installed Visual Studio and Visual C/C++ versions.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.2.0.d20090113 is available2009-01-13T12:00:00-08:002009-01-13T12:00:00-08:00William Deegantag:scons.org,2009-01-13:/scons-120d20090113-is-available.html<p class="first last">SCons release 1.2.0.d20090113 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.2.0.d20090113
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release notably adds support for batch compilation,
including new $CHANGED_SOURCES and $CHANGED_TARGETS variables.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.2.0 is available2008-12-21T12:00:00-08:002008-12-21T12:00:00-08:00William Deegantag:scons.org,2008-12-21:/scons-120-is-available.html<p class="first last">SCons release 1.2.0 now available from the download page at SourceForge.</p>
<p>SCons release 1.2.0
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release notably contains numerous fixes and minor enhancements
including Python 2.6 portability fixes.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons checkpoint 1.1.0.d20081104 is available2008-11-05T12:00:00-08:002008-11-05T12:00:00-08:00William Deegantag:scons.org,2008-11-05:/scons-checkpoint-110d20081104-is-available.html<p class="first last">SCons release checkpoint now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.1.0.d20081104
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release contains fixes for
running SCons under Python 2.6,
and signficant enhancements to the TeX/LaTeX support.</p>
SCons 1.1.0 is available2008-10-10T12:00:00-07:002008-10-10T12:00:00-07:00William Deegantag:scons.org,2008-10-10:/scons-110-is-available.html<p class="first last">SCons release 1.1.0 now available from the download page at SourceForge.</p>
<p>SCons release 1.1.0
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release notably contains
significant memory utilization improvements,
Windows <tt>.rc</tt> file scanning,
and <tt>TeX</tt> toolchain updates.
See the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of changes in the release.</p>
SCons 1.0.1.d20081001 (release candidate for 1.1) is available2008-10-02T12:00:00-07:002008-10-02T12:00:00-07:00William Deegantag:scons.org,2008-10-02:/scons-101d20081001-release-candidate-for-11-is-available.html<p class="first last">SCons release 1.0.1.d20081001 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.0.1.d20081001
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This checkpoint is a candidate for the 1.1 release;
see the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a specific list of changes in the release.</p>
SCons 1.0.1.d2008015 is available2008-09-15T12:00:00-07:002008-09-15T12:00:00-07:00William Deegantag:scons.org,2008-09-15:/scons-101d2008015-is-available.html<p class="first last">SCons release 1.0.1.d2008015 now available from the download page at SourceForge.</p>
<p>SCons checkpoint release 1.0.1.d200815
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release provides an early look at features and fixes for 1.1;
see the <a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a specific list.</p>
SCons 1.0.1 is available2008-09-07T12:00:00-07:002008-09-07T12:00:00-07:00William Deegantag:scons.org,2008-09-07:/scons-101-is-available.html<p class="first last">SCons release 1.0.1 now available from the download page at SourceForge.</p>
<p>SCons 1.0.1
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release adds some key bug fixes
and documentation updates.</p>
SCons 1.0.0 is available2008-08-12T12:00:00-07:002008-08-12T12:00:00-07:00William Deegantag:scons.org,2008-08-12:/scons-100-is-available.html<p class="first last">SCons release 1.0.0 now available from the download page at SourceForge.</p>
<p>SCons 1.0.0
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release is functionally the same as the 0.98.5 candidate,
with documentation updates.</p>
SCons 0.98.5 is available2008-06-09T12:00:00-07:002008-06-09T12:00:00-07:00William Deegantag:scons.org,2008-06-09:/scons-0985-is-available.html<p class="first last">SCons release 0.98.5 now available from the download page at SourceForge.</p>
<p>SCons 0.98.5
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release fixes an installation problem on Mac,
an exit code return status problem on Windows,
and a few other bugs.
This release is a candidate for the (long-awaited) official
1.0 SCons release. We welcome and encourage widespread testing and use
of this release to try to identify any problems.</p>
SCons 0.98.4 is available2008-05-18T12:00:00-07:002008-05-18T12:00:00-07:00William Deegantag:scons.org,2008-05-18:/scons-0984-is-available.html<p class="first last">SCons release 0.98.4 now available from the download page at SourceForge.</p>
<p>SCons 0.98.4
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release fixes a handful of important bugs,
and is a candidate for the (long-awaited) official
1.0 SCons release. We welcome and encourage widespread testing and use
of this release to try to identify any problems.</p>
SCons 0.98.3 is available2008-04-30T12:00:00-07:002008-04-30T12:00:00-07:00William Deegantag:scons.org,2008-04-30:/scons-0983-is-available.html<p class="first last">SCons release 0.98.3 now available from the download page at SourceForge.</p>
<p>SCons 0.98.3
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release fixes some urgent bugs,
and will be followed by another
updated candidate for the (long-awaited) official
1.0 SCons release. We welcome and encourage widespread testing and use
of this release to try to identify any problems.</p>
SCons 0.98.2 is available2008-04-21T12:00:00-07:002008-04-21T12:00:00-07:00William Deegantag:scons.org,2008-04-21:/scons-0982-is-available.html<p class="first last">SCons release 0.98.2 now available from the download page at SourceForge.</p>
<p>SCons 0.98.2
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release is an updated candidate for the (long-awaited) official
1.0 SCons release. We welcome and encourage widespread testing and use
of this release to try to identify any problems.</p>
SCons 0.98.1 is available2008-04-18T12:00:00-07:002008-04-18T12:00:00-07:00William Deegantag:scons.org,2008-04-18:/scons-0981-is-available.html<p class="first last">SCons release 0.98.1 now available from the download page at SourceForge.</p>
<p>SCons 0.98.1
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release is an updated candidate for the (long-awaited) official
1.0 SCons release. We welcome and encourage widespread testing and use
of this release to try to identify any problems.</p>
SCons 0.98 is available2008-03-31T12:00:00-07:002008-03-31T12:00:00-07:00William Deegantag:scons.org,2008-03-31:/scons-098-is-available.html<p class="first last">SCons release 0.98 now available from the download page at SourceForge.</p>
<p>SCons 0.98
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This release is considered a candidate for the (long-awaited) official
1.0 SCons release. We welcome and encourage widespread testing and use
of this release to try to identify any problems.</p>
SCons 0.97.0d20071212 is available2007-12-12T12:00:00-08:002007-12-12T12:00:00-08:00William Deegantag:scons.org,2007-12-12:/scons-0970d20071212-is-available.html<p class="first last">SCons release 0.97.0d20071212 now available from the download page at SourceForge.</p>
<p>The checkpoint release SCons 0.97.0d20071212
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This is a snapshot that contains some new fixes and functionality for testing,
most importantly a new Glob() function that understands
build directories and repositories,
and some significant memory and performance improvements.</p>
SCons 0.97.0d20070918 is available2007-09-18T12:00:00-07:002007-09-18T12:00:00-07:00William Deegantag:scons.org,2007-09-18:/scons-0970d20070918-is-available.html<p class="first last">SCons release 0.97.0d20070918 now available from the download page at SourceForge.</p>
<p>The checkpoint release SCons 0.97.0d20070918
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This is a snapshot that contains some new fixes and functionality for testing,
most importantly a major refactoring of the signature subsystem.</p>
SCons 0.97.0d20070809 is available2007-08-09T12:00:00-07:002007-08-09T12:00:00-07:00William Deegantag:scons.org,2007-08-09:/scons-0970d20070809-is-available.html<p class="first last">SCons release 0.97.0d20070809 now available from the download page at SourceForge.</p>
<p>The checkpoint release SCons 0.97.0d20070809
is now available from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
This is a snapshot that contains some new functionality for testing,
most importantly the addition of a new
Package() builder by Philipp Scholl,
and a revamping of the various Java-related builders
by Leanid Nazdrynau.</p>
SCons 0.97 is available2007-05-17T12:00:00-07:002007-05-17T12:00:00-07:00William Deegantag:scons.org,2007-05-17:/scons-097-is-available.html<p class="first last">SCons release 0.97 now available from the download page at SourceForge.</p>
<p>SCons 0.97 is now available as the first "stable" release since 0.96.1.
0.97 has been preceded by a long development
cycle with numerous testing pre-releases,
and contains significant accumulated features and fixes.
If you upgrade from 0.96.1 (or an earlier release),
BE SURE TO READ THE <a class="reference external" href="RELEASE.txt">RELEASE NOTES</a>
for important information about
potential configuration changes and rebuilds.
Download it directly from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.</p>
SCons 0.96.96 (candidate for 0.97) is available2007-04-12T12:00:00-07:002007-04-12T12:00:00-07:00William Deegantag:scons.org,2007-04-12:/scons-09696-candidate-for-097-is-available.html<p class="first last">SCons release 0.96.96 now available from the download page at SourceForge.</p>
<p>Another testing pre-release has been made available.
This pre-release makes available more bug fixes
that have accumulated since 0.96.95,
and is considered a candidate for the 0.97 release.
Download it directly from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.</p>
SCons awarded two projects for Google Summer of Code 20072007-04-12T12:00:00-07:002007-04-12T12:00:00-07:00William Deegantag:scons.org,2007-04-12:/scons-awarded-two-projects-for-google-summer-of-code-2007.html<p class="first last">SCons awarded two projects for Google Summer of Code 2007</p>
<p>The SCons Foundation has been awarded two student projects for
Google Summer of Code 2007. Maciej Pasternacki will work on
enhancing SCons' configuration capabilities in the model of GNU Automake.
Thomas Fischer will work on distributed compilation across grid networks.
Congratulations to Maciej and Thomas
on their successful proposals!</p>
<p>:: <span class="target" id="summer-of-code">Summer of Code</span>: <a class="reference external" href="http://code.google.com/soc/">http://code.google.com/soc/</a></p>
SCons accepted for participation in Google Summer of Code 20072007-03-15T12:00:00-07:002007-03-15T12:00:00-07:00William Deegantag:scons.org,2007-03-15:/scons-accepted-for-participation-in-google-summer-of-code-2007.html<p class="first last">SCons accepted for participation in Google Summer of Code 2007</p>
<p>The SCons Foundation is pleased to announce
that SCons has been accepted a participating organization
in Google's <a class="reference internal" href="#summer-of-code">Summer of Code</a> 2007.
Summer of Code is a program where Google pays student developers
a stipend to work on writing code for open source projects.
Applications from students interested in working on sCons are now
being accepted.
You can learn more at our <a class="reference internal" href="#announcement-page">announcement page</a>.</p>
<p>:: <span class="target" id="summer-of-code">Summer of Code</span>: <a class="reference external" href="http://code.google.com/soc/">http://code.google.com/soc/</a>
:: <span class="target" id="announcement-page">announcement page</span>: <a class="reference external" href="http://www.scons.org/wiki/GSoC2007/Announcement">http://www.scons.org/wiki/GSoC2007/Announcement</a></p>
SCons 0.96.95 (candidate for 0.97) is available2007-02-15T12:00:00-08:002007-02-15T12:00:00-08:00William Deegantag:scons.org,2007-02-15:/scons-09695-candidate-for-097-is-available.html<p class="first last">SCons release 0.96.95 now available from the download page at SourceForge.</p>
<p>Another testing pre-release has been made available.
This pre-release makes available more features and bug fixes
that have accumulated since 0.96.94,
and is considered a candidate for the 0.97 release.
Download it directly from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.</p>
SCons 0.96.94 (testing pre-release for 0.97) is available2007-01-07T12:00:00-08:002007-01-07T12:00:00-08:00William Deegantag:scons.org,2007-01-07:/scons-09694-testing-pre-release-for-097-is-available.html<p class="first last">SCons release 0.96.94 now available from the download page at SourceForge.</p>
<p>Another testing pre-release has been made available.
This pre-release makes available more features and bug fixes
that have accumulated since 0.96.93.
Download it directly from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.</p>
SCons 0.96.93 (testing pre-release for 0.97) is available2006-11-06T12:00:00-08:002006-11-06T12:00:00-08:00William Deegantag:scons.org,2006-11-06:/scons-09693-testing-pre-release-for-097-is-available.html<p class="first last">SCons release 0.96.93 now available from the download page at SourceForge.</p>
<p>Another testing pre-release has been made available.
This pre-release makes available more features and bug fixes
that have accumulated since 0.96.92.
Download it directly from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.</p>
Tracking of SCons bug reports has moved to tigris.org2006-05-21T12:00:00-07:002006-05-21T12:00:00-07:00William Deegantag:scons.org,2006-05-21:/tracking-of-scons-bug-reports-has-moved-to-tigrisorg.html<p class="first last">Tracking of SCons bug reports, patches and feature requests has moved to tigris.org.</p>
<p>After five years of tracking bug reports, patches and feature requests
at our <a class="reference external" href="http://sourceforge.net/projects/scons/">SourceForge project page</a>, we've converted them all to our project
<a class="reference external" href="http://scons.tigris.org/servlets/ProjectIssues">Issue Tracker</a> at <a class="reference external" href="http://www.tigris.org">tigris.org</a>.
The goal is for this to provide improved management of work on the project.</p>
<p>Many thanks to Greg Noel and Kevin Maples for making this happen.</p>
SCons 0.96.92 (testing pre-release for 0.97) is available2006-04-10T12:00:00-07:002006-04-10T12:00:00-07:00William Deegantag:scons.org,2006-04-10:/scons-09692-testing-pre-release-for-097-is-available.html<p class="first last">SCons release 0.96.92 now available from the download page at SourceForge.</p>
<p>Another testing pre-release has been made available.
This is intended as the last testing pre-release before
the .sconsign file changes significantly
to (among other things)
handle builds consistently
when only a subset of a tree's
dependency graph is used,
as well as
supporting more flexible detection of file changes.
This pre-release
also makes available more features and bug fixes
that have accumulated since 0.96.91.
Download it directly from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.</p>
SCons 0.96.91 (testing pre-release for 0.97) is available2005-09-08T12:00:00-07:002005-09-08T12:00:00-07:00William Deegantag:scons.org,2005-09-08:/scons-09691-testing-pre-release-for-097-is-available.html<p class="first last">SCons release 0.96.91 now available from the download page at SourceForge.</p>
<p>Another testing pre-release has been made available.
There will be more of these to get fixes out to the field
while we continue to work on performance issues
in anticipation of a wider 0.97 release.
Download it directly from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.</p>
SCons 0.96.90 (testing pre-release for 0.97) is available2005-02-15T12:00:00-08:002005-02-15T12:00:00-08:00William Deegantag:scons.org,2005-02-15:/scons-09690-testing-pre-release-for-097-is-available.html<p class="first last">SCons release 0.96.90 now available from the download page at SourceForge.</p>
<p>SCons 0.96.90 contains a lot of features, bug fixes,
and some greatly-anticipated improvements
in performance and memory consumption.
Because there have been a number of extensive changes
to internal subsystems,
this testing pre-release is intended to try to catch
any last crucial bugs before releasing it officially as 0.97
(to be released soon, we hope).
You can download it directly from the
<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=30337">download page</a>
at SourceForge.
See the <a class="reference external" href="RELEASE.txt">Relase Notes</a>
for a description of how you can help test this release
and an overview of important (interface- or behavior-changing) changes.
See the
<a class="reference external" href="CHANGES.txt">ChangeLog</a>
for a complete list of all the new and fixed stuff.</p>
New SCons Website Design2004-09-28T12:00:00-07:002004-09-28T12:00:00-07:00William Deegantag:scons.org,2004-09-28:/new-scons-website-design.html<p class="first last">New SCons website design is live now.</p>
<p>SCons has unveiled a new design of its website, contributed by Keir Mierle.
Please report any issues with the site to <a class="reference external" href="mailto:webmaster@scons.org">webmaster@scons.org</a>.</p>
SCons 0.96.1 Released2004-08-23T12:00:00-07:002004-08-23T12:00:00-07:00William Deegantag:scons.org,2004-08-23:/scons-0961-released.html<p class="first last">SCons release 0.96.1 now available from the download page at SourceForge.</p>
<p>Bugfix release 0.96.1 fixes a handful of critical problems in 0.96.
Consult your friendly neighborhood download page for more information,
or use the Download quick links to the right.</p>
SCons 0.96 Released2004-08-18T12:00:00-07:002004-08-18T12:00:00-07:00William Deegantag:scons.org,2004-08-18:/scons-096-released.html<p class="first last">SCons release 0.96 now available from the download page at SourceForge.</p>
<p>Beta release 0.96 adds Fortran 90/95 support,
better Qt support, platform-independent file manipulation actions,
new debugging features and lots more.
&nbsp;</p>