ANNOUNCE: SCons.0.8 (Python build tool) is now available

Steven Knight knight at baldmt.com
Mon Jul 15 18:00:06 EDT 2002


SCons is a software construction tool (build tool, or make tool) written
in Python.  It is based on the design which won the Software Carpentry
build tool competition in August 2000.

Version 0.08 of SCons has been released and is available for download
from the SCons web site:

	http://www.scons.org/

Or through the download link at the SCons project page at SourceForge:

	http://sourceforge.net/projects/scons/

RPM and Debian packages and a Win32 installer are all available, in
addition to the traditional .tar.gz and .zip files.


WHAT'S NEW IN THIS RELEASE?

IMPORTANT:  Release 0.08 contains the following interface changes:
  - The old feature of automatically splitting strings of file names
    on white space has been REMOVED.
  - The prefix, suffix and src_suffix arguments to the Builder()
    function may no longer be callable functions.
  - The BUILDERS construction variable should now be a dictionary
    that maps builder names to actions.  Existing uses of lists,
    and the Builder() name= keyword argument, generate warnings
    about use of deprecated features.
  - The "shared" keyword argument has been removed from the Object
    and Library builders.  Shared and static objects and libraries
    should now be created via the separate StaticObject, SharedObject,
    StaticLibrary and SharedLibrary builders.  Object and Library are
    now synonyms for StaticObject and StaticLibrary, respectively.

This release adds the following features:
  - New construction environment Append() and Replace() methods allow
    clearer manipulation of construction variables.
  - New functions:  FindFile(), GetLaunchDir(), SetBuildSignatureType(),
    SideEffect().
  - New command-line options:  --debug=time, --implicit-deps-changed,
    --implicit-deps-unchanged, --warn.
  - New Builders:  Tar.
  - Added a new Platform() method with support for the cygwin, os2,
    posix, and win32 platforms.
  - New "platform" and "tools" keyword arguments to Environment().
  - Added a new Tool() method with support for the ar, dvipdf, dvips,
    g++, g77, gas, gcc, gnulink, icc, ilink, latex, lex, lib, masm,
    mslink, msvc, nasm, pdflatex, pdftex, tar, tex and yacc tools.
  - A dependency Scanner for native Fortran "include" statements,
    using a new "F77PATH" construction variable.
  - The -v option prints more specific version / build information.
    changes in the case of drive letters don't cause a rebuild.
  - The "target" argument to a Builder call may now be omitted, in which
    case the target(s) are deduced from the source file(s) and the
    Builder's specified suffix.
  - A new "multi" keyword argument to Builder() specifies that it's okay
    to call the builder multiple times for a target.
  - SCons now automatically falls back to using timestamps for
    out-of-date checks if the Python MD5 module can't be imported.
  - Multiple calls for a single Alias() will now append values.

The following fixes have been added:
  - File names with multiple dots are now handled correctly.
  - The --implicit-cache option has been fixed if the scanner returns
    an empty list; no longer causes redundant rebuilds when the header
    file list changed; has been fixed when a file has no implicit
    dependencies and its source is generated.
  - C dependency scanning now detects #include file names with characters
    like '-'.
  - Shared libraries now use LIBS and LIBPATH for dependencies.
  - A build directory may now be outside of the SConstruct tree.
  - Shared object builds using g++ and gcc now use $CPPFLAGS, too.
  - A single interrupt is now guaranteed to halt SCons both when using -j
    and not.
  - Relative CPPPATH directories now work correctly when using BuildDir().
  - SCons now prints an error message if a file can't be unlinked before
    being built, instead of just silently terminating the build.
  - Emitter functions' use of path names work properly using BuildDir or
    in subdirectories.
  - Fix .sconsign signature storage so that output files of one build
    can be safely used as input files to another build.

Performance has been improved as follows:
  - Use our own version of the inefficient stock os.path.splitext() method.
  - Cache source suffix computation.
  - Code cleanup in MultiStepBuilder.__call__().
  - Replicate some logic in scons_subst().

The following changes have been made to the SCons packaging:
  - Updated README instructions and setup.py code to catch an
    installation failure from not having distutils installed.

The documentation has been updated to reflect the above changes.


ABOUT SCONS

Distinctive features of SCons include:

  - a global view of all dependencies; no multiple passes to get
    everything built properly
  - configuration files are Python scripts, allowing the full use of a
    real scripting language to solve difficult build problems
  - a modular architecture allows the SCons Build Engine to be
    embedded in other Python software
  - the ability to scan files for implicit dependencies (#include files);
  - improved parallel build (-j) support that provides consistent
    build speedup regardless of source tree layout
  - use of MD5 signatures to decide if a file has really changed; no
    need to "touch" files to fool make that something is up-to-date
  - easily extensible through user-defined Builder and Scanner objects
  - build actions can be Python code, as well as external commands

An scons-users mailing list is available for those interested in getting
started using SCons.  You can subscribe at:

	http://lists.sourceforge.net/lists/listinfo/scons-users

Alternatively, we invite you to subscribe to the low-volume
scons-announce mailing list to receive notification when new versions of
SCons become available:

	http://lists.sourceforge.net/lists/listinfo/scons-announce


ACKNOWLEDGEMENTS

Special thanks to Charles Crain, Jeff Petkau, Anthony Roach, Zed Shaw
and Terrel Shumway for their contributions to this release.

On behalf of the SCons team,

	--SK






More information about the Python-list mailing list