Cons is a software construction system. A description appears under
"Cons 1.0", below.
$Id: CHANGES,v 1.48 2000/06/02 06:38:48 knight Exp $
Cons 2.0
********
- Release Version of 1.8b2 (see 1.8b2 for all the changes)
- Redo the copyright to be GNU General Public License.
- Integrate the tests from the cons-test suite into the cons release,
creating separate tar files with and without the tests.
Cons 1.8b2
**********
Contributions from Wayne Scott <wscott@ichips.intel.com>
- Create subdirectories in the Cache directory if they don't already exist.
- Don't match #include delimiters in comments on the same line.
- Prevent scan::quickscan::scan from adding null entries to its
include-file list.
Contributions from Damien Neill <neild@segasoft.com>
- An initial '@' on a command line suppresses its printing (a la make).
- Make Cons realize that topdir is part of the file system, allowing
building/installing in directories more than one level up.
- Add support for rewriting portions of the command line enclosed by
%[-%] by passing them to a named code ref in the Cons environment.
- Add a -t flag to walk up the directory hierarchy looking for a
Construct file, allowing invocation from child directories.
(Contributed with Greg Spencer.)
Contributions from Brad Garcia <bgarcia@home.com>
- Make the default environment '%LINK => '%CXX', which in turn
transparently maps to '%CC' for anyone not using C++.
Contributions from Greg Spencer <greg_spencer@acm.org>
- Add support for %:b, %:s, %:F and %:a suffixes on pseudo-variables.
- Add Win32 default environment overrides for Microsoft VC++ 6.0.
- Add a -t flag to walk up the directory hierarchy looking for a
Construct file, allowing invocation from child directories.
(Contributed with Damien Neill.) Add hooks to builds an associated
Linked subdirectory if -t is invoked from a source subdirectory.
- Fix futil::install (and the other futil methods) so they warn,
not die, and return failure on error.
- Add a Precious method to suppress unlinking a file before building.
Contributions from Eric Shienbrood <ers@wildfire.com>
- Fix the Objects method to return path names relative to the Conscript
file.
Contributions from Johan Holmberg <holmberg@iar.se>
- Bug fixes in new File::Spec logic for incorrect use of Boolean tests
instead of string comparisons against ''.
- Performance optimizations: fix caching values in dir::is_linked
and futil::mkdir methods.
- CPPPATH as an array ref wasn't properly expanding %-variables,
causing missed dependencies.
Contributions from Gary Oberbrunner <garyo@genarts.com>
- Have -d print the dependencies in-line with build. Identify
what's a Target and what's a dependency we're Checking.
Contributions from Steven Knight <knight@baldmt.com>
- Rewrite all path name manipulation using File::Spec so we're as
portable as possible (at least between UNIX and NT). Add support
for multiple file system volumes through a hash of $root nodes.
- Due to incompatibility problems with some versions of File::Spec
on some versions of Perl, create our own internal File::Spec class with
methods cut-and-pasted from the real module, so people don't have to
install an external File::Spec.
- Rewrite "options" routine; now hash-driven for speed and readability.
- Let Default be called more than once. Document it.
- Rewrite the dir::lookup and dir::lookupdir methods to avoid changing
a file node into a dir node if the names match. This was causing "Can't
locate object method" errors. We now enforce a distinction between the
two node types, so add a dir::lookupfile and dir::lookupdir methods and
change calls as appropriate. If someone tries to use a dir as a file
or vice versa, die and report the error with info about what's wrong,
where we detected the conflict, and where the node was created. If a
dir was created as a file via "FilePath," change it to a dir (preserve
old behavior), but warn them that they should use "DirPath" instead.
Add an empty 'entry' subclass for nodes which we don't yet know are
files or directories.
(Bug reported by Eric Shienbrood.)
- Have srcsig return a '' signature, not die, if the file can't be read.
- Fix a bunch of perl -w warnings. There are still a few warnings left.
- Replace the hard-coded global FLAG_CHARACTER and LIB_FLAG_PREFIX
values with INCDIRPREFIX and LIBDIRPREFIX values in the Cons
environment, so people can simultaneously use multiple compilers/
linkers with different calling conventions.
(Bug reported by Johan Holmberg.)
- Documentation cleanup and updates.
- Minor changes to make sure Cons still executes under Perl 5.003.
Expand the testing to include Cons under Perl versions 5.00[345]
as well as 5.6.0.
Cons 1.7
********
Contributions from Rajesh Vaidheeswarran <rv@fore.com>
- Add QuickScan documentation.
- Add Argument passing from cons to Construct.
- Remove modification history feature from cons due to duplication, and
bloat.
Contributions from Brad Garcia <bgarcia@fore.com>
- Add ability to compile both C and C++ files using the same environment.
Based off of code written by Michael Polis <mfp@terrasim.com>.
Cons 1.6b1
**********
Contributions from Rajesh Vaidheeswarran <rv@fore.com>
- Fix futil::copy to return undef if unable to copy a target to the cache
instead of aborting the build process.
Cons 1.6a3
**********
Contributions from <v-ronaar@Exchange.Microsoft.com>
- Fix for Win32: [problem: 'require'ing Win32 won't work when Win32 module
isn't installed, as is the case for a generic perl installation (not
ActiveState)].
Contributions from Rajesh Vaidheeswarran <rv@fore.com>
- InstallAs modified to accept either a single file or a list of files as
source and target.
Cons 1.6a2
**********
Contributions from Rajesh Vaidheeswarran <rv@fore.com>
- Bugfix for Repository to add the path to INC to enable perl packages in
the local tree to be used in Cons scripts.
- Bugfix for SourcePath to return the correct path in a repositorey enabled
build.
- Add InstallAs method to link/copy a source file to any arbitrary target
file name.
- Move all the documentation to cons itself, and get rid of the pod file
from the distribution. Users can now use perlpod on cons to see the docs.
Cons 1.6a1
**********
Contributions from Steven Knight <knight@baldmt.com>
- Fixed a bug where .consign seems to be closed improperly when
cons is terminated with a signal, leading to rebuilds of various
targets that had already been built.
Contributions from Rajesh Vaidheeswarran <rv@fore.com>
- New flag -q (for quiet) to be less verbose about what files were
`Install'ed (or `Removed' when used in conjunction with -r).
Cons 1.5
********
Contributions from Steven Knight <knight@baldmt.com>
- Added Repository global function, similar to make's VPATH, and
supporting functions: Local, Install_Local, Repository_List,
Repository_Sig_Times_OK.
- Added -R command-line option as a synonym for Repository.
- Bugfix for SplitPath (when given a path with N components,
it returned N**2 components).
Cons 1.4a3
**********
Contributions from Rajesh Vaidheeswarran <rv@fore.com>
- Construction local help.
Exported command: Help <string>;
Cons 1.4a2
**********
Contributions from Bob Sidebotham:
- LIBPATH, CPPPATH, and program search path ENV->{PATH} may all now
be arrays. The old usage (colon separated strings) is deprecated, but
still supported. In the old form, on Unix, ":"'s separate path components,
and on Windows, ";" separates them.
- PATH_SEPERATOR was finally changed to PATH_SEPARATOR
Contributions from Steven Knight <knight@baldmt.com>
- Default target support has been added (see RELEASE for details).
Cons 1.4 (alpha1)
*****************
This release of Cons has a number of changes. Briefly, they are:
- a QuickScan function that makes it trivial to set up
simple dependency scanners by Bob Sidebotham.
- improvements in signature calculation for better control of rebuilds
- a caching mechanism for sharing derived files between builds
- new global functions: UseCache, Salt, SourcePath, ConsPath.
- some minor cleanup
Cons 1.3.1
**********
This is a minor release with limited shared library support contributed by
Gary Oberbrunner <garyo@genarts.com>.
Documentation is now maintained in pod format, thanks to the cons.pod file
from Ulrich Pfiefer.
Cons 1.3
********
This is the first combined Win32 and unix cons contributed by Rajesh
Vaidheeswarran <rv@fore.com>. This contains some significant fixes that
enables the same cons file to be used for both platforms.
Cons 1.2
********
This is the WIN32 port of cons by Chriss Stephens <chriss@fore.com>, Rajesh
Vaidheeswarran <rv@fore.com> and Jochen Schwarze <schwarze@isa.de>.
Cons 1.1
********
This is a minor patch release to cons 1.0. This contains a number of
minor changes, a bug fix affecting multi-target commands, and a couple
of minor new features. A list of changes from 1.0 to 1.1 is included
in the file CHANGES. There are no incompatible changes between 1.0 and
1.1. The NT support is working well here, but it still hasn't been
integrated into an single version of cons. The changes are quite
simple, and if anyone wants it let me know.
Cons 1.0
********
This is a Perl5-based make replacement, but does not provide make
compatibility.
You will need Perl 5.002 or better and the Perl MD5 Extension
(MD5-1.6.tar.gz), available from CPAN.
This program is known to work on a variety of platforms: it's in
production use on versions of SunOS, Solaris, HPUX, AIX, and IRIX.
The current program will not work correctly on Windows/NT, but we do
have an internal version that does appear to work on that platform,
but has not been well tested. If anyone is interested, contact me.
PostScript documentation is in cons.ps.
The following is an excerpt from the introduction in cons.ps:
Cons is a system for constructing, primarily, software, but is quite
different from previous software construction systems. Cons was
designed from the ground up to deal easily with the construction of
software spread over multiple source directories. Cons makes it easy
to create build scripts that are simple, understandable and
maintainable. Cons ensures that complex software is easily and
accurately reproducible.
Cons uses a number of techniques to accomplish all of this.
Construction scripts are just Perl scripts, making them both easy to
comprehend and very flexible. Global scoping of variables is replaced
with an import/export mechanism for sharing information between
scripts, significantly improving the readability and maintainability
of each script. Construction environments are introduced: these are
Perl objects that capture the information required for controlling the
build process. Multiple environments are used when different semantics
are required for generating products in the build tree. Cons
implements automatic dependency analysis and uses this to globally
sequence the entire build. Variant builds are easily produced from a
single source tree. Intelligent build subsetting is possible, when
working on localized changes. Overrides can be setup to easily
override build instructions without modifying any scripts. MD5
cryptographic signatures are associated with derived files, and are
used to accurately determine whether a given file needs to be rebuilt.
Complaints, suggestions, kudos, etc. to:
Bob Sidebotham
cons-discuss@eng.fore.com
FORE Systems
Pittsburgh, PA.