Revision history for Perl extension Module::Build.
0.14 Fri Dec 13 14:06:29 AEST 2002
- Added support for MacPerl (Mac OS version 9 and below), which (as
far as I know) was never natively supported by MakeMaker. Still
lacks support for the 'test' action (because Test::Harness
requires forking, which MacPerl won't do) and compiling XS/C files
(because I don't know how to invoke a compiler on MacOS, and one
may not even be available). This change is brought to you by
Michael Schwern and the letter '('.
- Improved processing of .xs files. Now we use the new
ExtUtils::ParseXS module if it's available, otherwise we use
backticks and write the result to a .c file ourselves. This
avoids the need to do cross-platform shell redirection.
- Make sure all parts of 'Build test' use the not-yet-installed
version of Module::Build. This only affects the tests for this
module, not any of the module code itself. [Spotted by Schwern]
- Oopsie - use $Config{ld} instead of $Config{cc} for linking.
- Added a 'diff' action, which is useful for comparing the details
of what you're about to install with what is already installed on
your system. This uses File::Compare, which is in the core.
- Fixed a problem on Windows in which the _build/ directory wasn't
getting deleted during the 'realclean' action, because we had a
file open in that directory. [Spotted by Michael Schwern]
- delete_filetree() now always uses File::Path::rmtree(), regardless
of whether the thing being deleted is a file or a directory. This
helps remove things on obscure platforms with strange locking
rules (or even not so obscure ones like MacOS). It also now
reports the number of files or directories deleted (without
recursing directory contents).
- rm_previous_build_script() is gone, replaced by calls to
delete_filetree().
- 'Build' now chdir()s in a BEGIN block, so the 'use Module::Build'
statement will work correctly. Solves a problem on MacOS, where
the 'Build' script may often be invoked from the wrong working
directory. [Fix by Michael Schwern]
- Internally we now use the multi-argument form of system() to run
external commands (such as 'diff' or 'cc') whenever possible (and
whenever we can't avoid system() altogether). Note that this
means we have to handle splitting some strings (such as
$Config{ccflags}) into argument lists like the shell would, which
is a drag. However, the alternative would be to handle shell
quoting of all arguments to commands ourselves, which is an even
bigger drag across platforms and involves arbitrary filenames and
so on.
- To handle the argument splitting mentioned above, a method
split_like_shell() has been created. So far it's just doing naive
processing. In practice, I've yet to actually see a %Config entry
that uses quotes & spaces, so the splitting task is usually not
very error-prone.
- The 'test' action now takes a 'test_files' parameter, similar to
the (undocumented) ExtUtils::MakeMaker TEST_FILES argument. Handy
during development when fixing bugs.
- Internally, the rscan_dir() method can now accept a predicate
function that decides whether a file/directory should be matched.
- We now issue a warning message when the author hasn't specified a
license type.
0.13 Wed Nov 20 20:07:53 AEST 2002
- 'cleanup' file lists are now written immediately, rather than at
program termination. This helps avoid "phantom files" that don't
get handled by the 'realclean' action. The internal
write_cleanup() method (which was never documented) is now gone.
- The 'blib/' directory is now properly cleaned up in more (all?)
circumstances. Previously it could become a phantom if
create_build_script() was never called.
- Now scan the 'c_source' directory for .cpp (C++) files as well as
.c files, and compiles them.
- Use a 'phony' target for 'make manifest' in the pass-through
Makefile, for the same reason as 'make install' (see version 0.12
notes below).
- Module::Build::Compat now accepts any known Config.pm key and
passes it through to the Build.PL. Fixes a problem with CPANPLUS,
which was passing INSTALLMAN1DIR.
- The file 'META.yaml' has been re-named to 'META.yml' in order to
cooperate better with systems that can only handle 3 characters
after the dot.
- The t/xs.t test should give more informative error messages upon
failure.
0.12 Thu Nov 14 18:31:47 AEST 2002
- The META.yaml file was erroneously looking for 'build_depends'
instead of 'build_requires'. [spotted by Iain Truskett]
- Add prompt() and y_n() methods for use in Build.PLs
- Do more to work with all versions of Test::Harness when setting
the TEST_VERBOSE flag and running under the debugger [patch by
Dave Rolsky]
- Include a test for verbosity handling
- Make sure the blib/ directory is always cleaned up with the
'clean' or 'realclean' action.
- In a pass-through Makefile.PL, inform 'make' that 'install' is a
"fake target", so that it works properly on case-insensitive
filesystems like HFS+ with distributions that contain an INSTALL
file. [patch by Brian Ingerson]
- In Module::Build::Compat, show an example Makefile.PL that can
install Module::Build and re-invoke itself in one fell swoop [Dave
Rolsky and Autrijus Tang]
- Improve the formatting of the Module::Build and
Module::Build::Compat documentation.
0.11 Fri Aug 23 18:50:46 AEST 2002
- 'module_version' and 'module_version_from' have been replaced by
'dist_version' and 'dist_version_from', which is what they really
meant in the first place. 'dist_name' has been added.
- 'module_name' is now just a way to set 'dist_name' and
'dist_version_from' in a convenient way.
- The 'name' in META.yaml is now the distribution name, not the
(incorrect) module name. [spotted by Graham Barr]
- Added the check_installed_status() and prereq_failures() methods
for checking prerequisite information with the programmatic
interface
- check_installed_version() now uses check_installed_status()
internally
- Documented the create_build_script() method, which had escaped
documentation.
- create_build_script() now writes prerequisite information to the
_build/ directory, for use by Module::Build::Compat.
- Module::Build::Compat has documentation for a safer way to write a
dummy Makefile.PL. [patch by Autrijus Tang]
0.10 Wed Aug 7 19:36 2002
- Recommend YAML 0.35 instead of 0.30.
- Don't die during 'Build disttest' if YAML isn't installed. This
fixes tests 5-10 in runthrough.t if YAML isn't installed.
- Die if an unknown license type is used, but still default to
'unknown' if no license is specified.
- Use YAML::DumpFile() if we're using a recent YAML,
YAML::StoreFile() otherwise.
- Show specific error messages in runthrough.t.
- Add a generated_by entry to the META.yaml file.
- Skip a few tests if YAML isn't installed.
0.09 Fri Jun 28 11:07:08 EST 2002
- The 'distdir' action wasn't deleting the distribution directory
before building it again. This meant that, say, if you did 'Build
disttest' then 'Build dist', you'd end up with a blib/ directory
in your distribution. I actually had this happen for version
0.08, and it's not nice to distribute a blib/ on CPAN.
- We now keep track of the 'base_dir', i.e. the top-level build
directory, so we can change back into it if we change out of it.
This necessitated a cwd() method, which uses the Cwd.pm module.
I'm aware of Cwd's limitations, particularly under taint-mode, but
I don't know a way around using it here.
- The 'dist_dir' action now changes back into 'base_dir' directory.
- We now do write_config() inside the create_build_script() method,
not inside the new() method.
- Simplified the find_version() method, and improved its error
messages.
- Renamed module_name_to_file() to find_module_by_name(), and added
a parameter specifying the directories to search in. Previously
we searched in 'lib' and @INC, which wasn't correct in all
situations.
- Patched the docs to change "Build test" to "./Build test"
[Elizabeth Mattijsen]
0.08 Wed Jun 26 20:30:56 EST 2002
- Fixed the 'prereq' alias for the 'requires' parameter
- Added some tests in t/basic.t to test the dependency checking
- Added 'artistic' as a licensing option [Arthur Bergman]
- Fixed some bugs in requires/prereq/recommends/conflicts/build_depends
- Fixed a typo in the 'distclean' action that prevented its
execution [Arthur Bergman]
- Separated the linking phase of building XS items into its own
link_c() method. Its interface is still unstable, so it's not
documented yet. [suggested by Arthur Bergman]
0.07 Jun 9 2002 15:46
- We now generate a 'META.yaml' metadata file during 'Build dist'.
This can be very useful for lots of things, none of which are
implemented yet.
- Added a 'dynamic_config' parameter, defaulting to false. This
lets distribution systems (CPAN.pm, etc.) build, test, and install
"easy" modules without having to execute the Build.PL at runtime.
It's also a guarantee that the list of dependencies is exactly
what is present in the metadata file, and won't be changed during
the build process.
- Added support for "recommended" and "build-time requirement"
modules, besides those that are absolutely required. Also added a
"conflicts" field.
- Changed the 'prereq' field to 'requires' (the old name will
continue to work).
- Added support for checking the installed version of perl as an
explicit dependency.
- Added a 'license' parameter to specify one of a fixed number of
licenses for the distribution.
- Fixed a bug in Module::Build::Compat that was preventing arguments
from being processed properly. [patch by Ilya Martynov]
- Make sure we're in the right directory when we write the cleanup
file, since various ExtUtils::Install errors might leave us in an
unknown directory. [patch by Ilya Martynov]
- Specified the 'license', 'recommends', and 'dynamic_config'
values in Build.PL, and changed 'prereq' to 'requires'.
0.06 Apr 2 2002 17:44
- Added the Module::Build::Compat module for assisting and
explaining compatibility with ExtUtils::Makemaker and cohorts.
- State is now saved using Data::Dumper instead of my ad-hoc
mechanism, guaranteeing data integrity. Whitespace values broke
in the former scheme.
- Added the 'recommended' option, which works like 'prereq' but
isn't insistent.
- Separated the various parameters into three groups: parameters
that tell Module::Build what to do, Config.pm parameters, and
user-defined parameters for each build (the module author is the
'user' here). This helps avoid conflicts between names, and it
was silly to have them all together. The three groups of
parameters are subject to the same rules for overriding: values
specified during a Build action take precedence over values
specified at 'perl Build.PL' time, which in turn take precedence
over values specified in the call to new().
- Improved support for .PL files. Any .PL file in the lib/
directory or the directory specified by 'c_source' will now get
properly executed. I also added a 'PL_files' parameter that you
can use in case the .PL doesn't create an obviously-named output
file.
- If a prerequisite condition is malformed, we now report a prereq
failure and say why. Previously we issued a warning and kept
going.
0.05 10-Jan-2002 20:26
- Added the Module::Build->subclass() method, which makes it easier to
make quick-and-dirty subclasses of Module::Build.
- Reorganized the docs a bit.
- Added the 'testdb' action, and the 'debugger=1' argument to the
'test' action, both of which run tests under the perl
debugger. (idea: Dave Rolsky)
- Added prerequisite checking (Dave Rolsky)
XXX Needs to write _build/prereq
- Fixed an unlikely-to-occur bug with misquoted strings in the
'Build' script (spot: Dave Rolsky)
- We're more careful about shush-ing warnings that
ExtUtils::Manifest might emit (Dave Rolsky)
- The 'help' action now auto-generates the list of actions (Dave Rolsky)
- Added the 'distcheck', 'skipcheck', 'distclean', 'distdir', and
'disttest' actions (Dave Rolsky)
- We're a little more aggressive about cleaning up temporary files -
we'll try to clean them up even when we don't have write permission
on them. This isn't as dastardly as it sounds; if we /really/
don't have permission, we won't be able to remove them no matter
how hard we try.
0.04 Fri Nov 16 16:55 2001
- Added a 'manifest' action. It's just like MakeMaker's 'make manifest', it
brings your MANIFEST file up to date with your distribution directory.
- Reorganized some of the responsibilities of various methods, which
allows modules to be built and tested programmatically.
- The 'clean' action will now clean up files that were created more
recently than the on-disk cleanup registry was written.
- Undefined values from Config.pm are handled correctly now.
- The dispatch() method will now accept explicit dispatch
parameters, for use in a programmatic setting.
- $ENV{TEST_VERBOSE} will be set in test scripts if the 'verbose=1'
parameter is set.
- Moved the test.pl script to t/basic.t
- Created the t/xs.t script, which tests building a module with a
.xs component.
- Fixed the loading of $^O-specific modules (there were no such
modules before).
- Added a 'darwin' platform module, which removes -flat_namespace
from $Config{ccflags} while building .xs modules (it's a linker
flag, not a compiler flag).
- Now uses $^W instead of the 'warnings' pragma, which apparently
provides compatibility with perl 5.005 (I've only tested it with
5.6.x myself).
- If a file called C<visual.pl> exists in the top-level directory,
this file will be executed as a Perl script during 'Build test' and
its output will be shown to the user. This is a good place to put
speed tests or other tests that don't use the C<Test::Harness> format
for output.
- The 'Build install' step will now put .xs-related things in the
correct architecture-dependent libraries.
- Added the 'autosplit' option, even though I think autosplitting is
a load of hooie.
0.03 Sun Nov 11 14:58 CDT 2001
- The 'perl Build.PL' step will now detect whether the current
environment is "unixish", "windowsish", etc., and load the correct
module (i.e. Module::Build::Platform::Unix). More specific
modules may also be written for particular values of $^O.
- Module::Build will now process any .xs files in the lib/
directory. Please let me know whether this works or not with your
distribution & platform. I'll be trying out various distributions
on my platform.
- Corrected some embarassing errors in the POD documentation. Also
added a long documentation section on the various build actions
(test, install, build, etc.) and added some neato ASCII art.
- Added a 'cleanup' mechanism - any method may call the
$self->add_to_cleanup(@files) method to register files which need
to be cleaned up during 'Build clean'.
- Added a 'Build help' action that gives a little syntax help, and
lists all the actions available.
- Fixed a bug in which 'blib/' wasn't properly being added to @INC
when running 'Build test'.
- For the 'Build dist' action, we'll use the 'tar' and 'gzip'
programs (as specified by Config.pm) on Unix platforms, otherwise
we'll use Archive::Tar and Compress::Zlib.
0.02 Wed Sep 5 00:53:04 CDT 2001
- Added POD documentation.
- Added the 'install', 'fakeinstall', and 'dist' actions.
- new() will now determine version string based on 'module_version', or
'module_version_from', or 'module_name', in that order.
- Module::Build::Base handles its file paths in a platform-independent
way, using the File:: modules
0.01 Sun Aug 5 01:23:10 2001
- original version; created by h2xs 1.1.1.4 with options -XA -n Module::Build