'Module::Build' =>
{
'MAINTAINER' => 'kwilliams',
- 'DISTRIBUTION' => 'DAGOLDEN/Module-Build-0.3607.tar.gz',
+ 'DISTRIBUTION' => 'DAGOLDEN/Module-Build-0.3603.tar.gz',
'FILES' => q[cpan/Module-Build],
'EXCLUDED' => [ qw{ t/par.t t/signature.t },
qr!^contrib/!, qr!^devtools! ],
Revision history for Perl extension Module::Build.
-0.3607 - Thu Apr 1 11:27:16 EDT 2010
-
- Bug fixes:
-
- - The 'dist' action now always ensures a clean dist directory before
- creating the tarball [David Golden]
-
-0.36_06 - Thu Apr 1 01:23:58 EDT 2010
-
- Other:
-
- - Migrated repository to git and updated META.yml to match
-
- - Removed bugtracker URL (let search.cpan.org use default)
-
- - Disabled SIGNATURE generation
-
-0.3605 - Wed Mar 31 12:05:11 EDT 2010
-
- - No changes from 0.36_04
-
-0.36_04 - Tue Mar 16 21:41:41 EDT 2010
-
- Bug fixes:
-
- - Added missing newline to "Changing sharpbang" messages under verbose
- output (RT#54474) [David Golden]
-
- - Added 'beos' to list of Unix-like os types (RT#53876) [Nigel Horne]
-
- - Sets $ENV{HOME} to a temporary directory during testing [David Golden]
-
- - For VMS: fixed prefix handling plus other test fixes [Craig Berry]
-
- - Support anonymous array of directories for c_source [Alberto Simões]
-
- - Small POD formatting fix [James Keenan]
-
0.3603 - Mon Jan 18 22:28:59 EST 2010
(Oops, I released the last one before I realized this should have been
use vars qw($VERSION @ISA);
@ISA = qw(Module::Build::Base);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
# Okay, this is the brute-force method of finding out what kind of
my %OSTYPES = qw(
aix Unix
bsdos Unix
- beos Unix
dgux Unix
dragonfly Unix
dynixptx Unix
'actions'. In this case the actions run are 'build' (the default
action), 'test', and 'install'. Other actions defined so far include:
- build manpages
- checkchanges pardist
- checkgit patch_blead
- clean ppd
- code ppmdist
- config_data prereq_data
- diff prereq_report
- dist pure_install
- distcheck realclean
- distclean retest
- distdir skipcheck
- distmeta tag_git
- distsign test
- disttest testall
- docs testcover
- fakeinstall testdb
- help testpod
- html testpodcoverage
- install upload
- installdeps versioninstall
- manifest
+<action_list>
You can run the 'help' action for a complete list of actions.
directory will be added to the search path during the compilation and
linking phases of any C or XS files.
-[version 0.3604]
-
-A list of directories can be supplied using an anonymous array
-reference of strings.
-
=item conflicts
[version 0.07]
=over 4
-=item PL_files()
-
-=item allow_mb_mismatch()
-
-=item auto_configure_requires()
-
-=item autosplit()
-
-=item base_dir()
-
-=item bindoc_dirs()
-
-=item blib()
-
-=item build_bat()
-
-=item build_class()
-
-=item build_elements()
-
-=item build_requires()
-
-=item build_script()
-
-=item bundle_inc()
-
-=item bundle_inc_preload()
-
-=item c_source()
-
-=item config_dir()
-
-=item configure_requires()
-
-=item conflicts()
-
-=item cpan_client()
-
-=item create_license()
-
-=item create_makefile_pl()
-
-=item create_packlist()
-
-=item create_readme()
-
-=item debug()
-
-=item debugger()
-
-=item destdir()
-
-=item get_options()
-
-=item html_css()
-
-=item include_dirs()
-
-=item install_base()
-
-=item installdirs()
-
-=item libdoc_dirs()
-
-=item license()
-
-=item magic_number()
-
-=item mb_version()
-
-=item meta_add()
-
-=item meta_merge()
-
-=item metafile()
-
-=item module_name()
-
-=item mymetafile()
-
-=item needs_compiler()
-
-=item orig_dir()
-
-=item perl()
-
-=item pm_files()
-
-=item pod_files()
-
-=item pollute()
-
-=item prefix()
-
-=item prereq_action_types()
-
-=item program_name()
-
-=item quiet()
-
-=item recommends()
-
-=item recurse_into()
-
-=item recursive_test_files()
-
-=item requires()
-
-=item scripts()
-
-=item sign()
-
-=item tap_harness_args()
-
-=item test_file_exts()
-
-=item use_rcfile()
-
-=item use_tap_harness()
-
-=item verbose()
-
-=item xs_files()
+<autogenerated_accessors>
=back
If you would like to add other useful metadata, C<Module::Build>
supports this with the C<meta_add> and C<meta_merge> arguments to
-L</new()>. The authoritative list of supported metadata can be found at
+L</new>. The authoritative list of supported metadata can be found at
L<http://module-build.sourceforge.net/META-spec-current.html>, but for
convenience - here are a few of the more useful ones:
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
BEGIN { require 5.00503 }
my $p = $self->{properties};
return unless $p->{c_source};
- my $files;
- if (ref($p->{c_source}) eq "ARRAY") {
- push @{$p->{include_dirs}}, @{$p->{c_source}};
- for my $path (@{$p->{c_source}}) {
- push @$files, @{ $self->rscan_dir($path, file_qr('\.c(c|p|pp|xx|\+\+)?$')) };
- }
- } else {
- push @{$p->{include_dirs}}, $p->{c_source};
- $files = $self->rscan_dir($p->{c_source}, file_qr('\.c(c|p|pp|xx|\+\+)?$'));
- }
+ push @{$p->{include_dirs}}, $p->{c_source};
+ my $files = $self->rscan_dir($p->{c_source}, file_qr('\.c(c|p|pp|xx|\+\+)?$'));
foreach my $file (@$files) {
- push @{$p->{objects}}, $self->compile_c($file);
+ push @{$p->{objects}}, $self->compile_c($file);
}
}
next unless $cmd =~ /perl/i;
my $interpreter = $self->{properties}{perl};
- $self->log_verbose("Changing sharpbang in $file to $interpreter\n");
+ $self->log_verbose("Changing sharpbang in $file to $interpreter");
my $shb = '';
$shb .= $c->get('sharpbang')."$interpreter $arg\n" if $does_shbang;
sub ACTION_dist {
my ($self) = @_;
- # MUST dispatch() and not depends_ok() so we generate a clean distdir
- $self->dispatch('distdir');
+ $self->depends_on('distdir');
my $dist_dir = $self->dist_dir;
return $self->find_packages_in_files(\@pm_files, \%dist_files);
}
-# XXX Do not document this function; mst wrote it and now says the API is
-# stupid and needs to be fixed and it shouldn't become a public API until then
sub find_packages_in_files {
my ($self, $file_list, $filename_map) = @_;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
use File::Basename ();
use File::Spec;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Config;
--- /dev/null
+package Module::Build::ConfigData;
+use strict;
+my $arrayref = eval do {local $/; <DATA>}
+ or die "Couldn't load ConfigData data: $@";
+close DATA;
+my ($config, $features, $auto_features) = @$arrayref;
+
+sub config { $config->{$_[1]} }
+
+sub set_config { $config->{$_[1]} = $_[2] }
+sub set_feature { $features->{$_[1]} = 0+!!$_[2] } # Constrain to 1 or 0
+
+sub auto_feature_names { grep !exists $features->{$_}, keys %$auto_features }
+
+sub feature_names {
+ my @features = (keys %$features, auto_feature_names());
+ @features;
+}
+
+sub config_names { keys %$config }
+
+sub write {
+ my $me = __FILE__;
+ require IO::File;
+
+ # Can't use Module::Build::Dumper here because M::B is only a
+ # build-time prereq of this module
+ require Data::Dumper;
+
+ my $mode_orig = (stat $me)[2] & 07777;
+ chmod($mode_orig | 0222, $me); # Make it writeable
+ my $fh = IO::File->new($me, 'r+') or die "Can't rewrite $me: $!";
+ seek($fh, 0, 0);
+ while (<$fh>) {
+ last if /^__DATA__$/;
+ }
+ die "Couldn't find __DATA__ token in $me" if eof($fh);
+
+ seek($fh, tell($fh), 0);
+ my $data = [$config, $features, $auto_features];
+ $fh->print( 'do{ my '
+ . Data::Dumper->new([$data],['x'])->Purity(1)->Dump()
+ . '$x; }' );
+ truncate($fh, tell($fh));
+ $fh->close;
+
+ chmod($mode_orig, $me)
+ or warn "Couldn't restore permissions on $me: $!";
+}
+
+sub feature {
+ my ($package, $key) = @_;
+ return $features->{$key} if exists $features->{$key};
+
+ my $info = $auto_features->{$key} or return 0;
+
+ # Under perl 5.005, each(%$foo) isn't working correctly when $foo
+ # was reanimated with Data::Dumper and eval(). Not sure why, but
+ # copying to a new hash seems to solve it.
+ my %info = %$info;
+
+ require Module::Build; # XXX should get rid of this
+ while (my ($type, $prereqs) = each %info) {
+ next if $type eq 'description' || $type eq 'recommends';
+
+ my %p = %$prereqs; # Ditto here.
+ while (my ($modname, $spec) = each %p) {
+ my $status = Module::Build->check_installed_status($modname, $spec);
+ if ((!$status->{ok}) xor ($type =~ /conflicts$/)) { return 0; }
+ if ( ! eval "require $modname; 1" ) { return 0; }
+ }
+ }
+ return 1;
+}
+
+
+=head1 NAME
+
+Module::Build::ConfigData - Configuration for Module::Build
+
+=head1 SYNOPSIS
+
+ use Module::Build::ConfigData;
+ $value = Module::Build::ConfigData->config('foo');
+ $value = Module::Build::ConfigData->feature('bar');
+
+ @names = Module::Build::ConfigData->config_names;
+ @names = Module::Build::ConfigData->feature_names;
+
+ Module::Build::ConfigData->set_config(foo => $new_value);
+ Module::Build::ConfigData->set_feature(bar => $new_value);
+ Module::Build::ConfigData->write; # Save changes
+
+
+=head1 DESCRIPTION
+
+This module holds the configuration data for the C<Module::Build>
+module. It also provides a programmatic interface for getting or
+setting that configuration data. Note that in order to actually make
+changes, you'll have to have write access to the C<Module::Build::ConfigData>
+module, and you should attempt to understand the repercussions of your
+actions.
+
+
+=head1 METHODS
+
+=over 4
+
+=item config($name)
+
+Given a string argument, returns the value of the configuration item
+by that name, or C<undef> if no such item exists.
+
+=item feature($name)
+
+Given a string argument, returns the value of the feature by that
+name, or C<undef> if no such feature exists.
+
+=item set_config($name, $value)
+
+Sets the configuration item with the given name to the given value.
+The value may be any Perl scalar that will serialize correctly using
+C<Data::Dumper>. This includes references, objects (usually), and
+complex data structures. It probably does not include transient
+things like filehandles or sockets.
+
+=item set_feature($name, $value)
+
+Sets the feature with the given name to the given boolean value. The
+value will be converted to 0 or 1 automatically.
+
+=item config_names()
+
+Returns a list of all the names of config items currently defined in
+C<Module::Build::ConfigData>, or in scalar context the number of items.
+
+=item feature_names()
+
+Returns a list of all the names of features currently defined in
+C<Module::Build::ConfigData>, or in scalar context the number of features.
+
+=item auto_feature_names()
+
+Returns a list of all the names of features whose availability is
+dynamically determined, or in scalar context the number of such
+features. Does not include such features that have later been set to
+a fixed value.
+
+=item write()
+
+Commits any changes from C<set_config()> and C<set_feature()> to disk.
+Requires write access to the C<Module::Build::ConfigData> module.
+
+=back
+
+
+=head1 AUTHOR
+
+C<Module::Build::ConfigData> was automatically created using C<Module::Build>.
+C<Module::Build> was written by Ken Williams, but he holds no
+authorship claim or copyright claim to the contents of C<Module::Build::ConfigData>.
+
+=cut
+
+
+__DATA__
+do{ my $x = [
+ {},
+ {},
+ {
+ 'license_creation' => {
+ 'requires' => {
+ 'Software::License' => 0
+ },
+ 'description' => 'Create licenses automatically in distributions'
+ },
+ 'inc_bundling_support' => {
+ 'requires' => {
+ 'ExtUtils::Installed' => '1.999',
+ 'ExtUtils::Install' => '1.54'
+ },
+ 'description' => 'Bundle Module::Build in inc/'
+ },
+ 'YAML_support' => {
+ 'requires' => {
+ 'YAML::Tiny' => '1.38'
+ },
+ 'description' => 'Use YAML::Tiny to write META.yml files'
+ },
+ 'manpage_support' => {
+ 'requires' => {
+ 'Pod::Man' => 0
+ },
+ 'description' => 'Create Unix man pages'
+ },
+ 'PPM_support' => {
+ 'requires' => {
+ 'IO::File' => '1.13'
+ },
+ 'description' => 'Generate PPM files for distributions'
+ },
+ 'dist_authoring' => {
+ 'requires' => {
+ 'Archive::Tar' => '1.09'
+ },
+ 'recommends' => {
+ 'Module::Signature' => '0.21',
+ 'Pod::Readme' => '0.04'
+ },
+ 'description' => 'Create new distributions'
+ },
+ 'HTML_support' => {
+ 'requires' => {
+ 'Pod::Html' => 0
+ },
+ 'description' => 'Create HTML documentation'
+ }
+ }
+ ];
+$x; }
\ No newline at end of file
package Module::Build::Cookbook;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
=head1 NAME
package Module::Build::Dumper;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
# This is just a split-out of a wrapper function to do Data::Dumper
# stuff "the right way". See:
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use File::Spec;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Data::Dumper;
use IO::File;
use vars qw($VERSION);
use IO::File;
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
# This code is mostly borrowed from ExtUtils::MM_Unix 6.10_03, with a
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use vars qw(@ISA);
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use Config;
=cut
# Translated from ExtUtils::MM_VMS::prefixify()
-
-sub _catprefix {
- my($self, $rprefix, $default) = @_;
-
- my($rvol, $rdirs) = File::Spec->splitpath($rprefix);
- if( $rvol ) {
- return File::Spec->catpath($rvol,
- File::Spec->catdir($rdirs, $default),
- ''
- )
- }
- else {
- return File::Spec->catdir($rdirs, $default);
- }
-}
-
-
sub _prefixify {
my($self, $path, $sprefix, $type) = @_;
my $rprefix = $self->prefix;
- return '' unless defined $path;
-
$self->log_verbose(" prefixify $path from $sprefix to $rprefix\n");
# Translate $(PERLPREFIX) to a real path.
$self->log_verbose(" rprefix translated to $rprefix\n".
" sprefix translated to $sprefix\n");
- if( length($path) == 0 ) {
+ if( length $path == 0 ) {
$self->log_verbose(" no path to prefixify.\n")
}
elsif( !File::Spec->file_name_is_absolute($path) ) {
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Base;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Config;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.360301'; # patched in bleadperl
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;
}
# Copied from ExtUtils::MM_Cygwin::maybe_command()
-# If our path begins with F</cygdrive/> then we use C<ExtUtils::MM_Win32>
+# If our path begins with F</cygdrive/> then we use M::B::Platform::Windows
# to determine if it may be a command. Otherwise we use the tests
-# from C<ExtUtils::MM_Unix>.
+# from M::B::Platform::Unix.
sub _maybe_command {
my ($self, $file) = @_;
if ($file =~ m{^/cygdrive/}i) {
- require Module::Build::Platform::Win32;
- return Module::Build::Platform::Win32->_maybe_command($file);
+ require Module::Build::Platform::Windows;
+ return Module::Build::Platform::Windows->_maybe_command($file);
}
return $self->SUPER::_maybe_command($file);
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use vars qw(@ISA);
package inc::latest;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use Carp;
package inc::latest::private;
use strict;
use vars qw($VERSION);
-$VERSION = '0.3607';
+$VERSION = '0.3603';
$VERSION = eval $VERSION;
use File::Spec;
-#!/usr/bin/perl
+#!/opt/perl/5.10.1/bin/perl
+
+eval 'exec /opt/perl/5.10.1/bin/perl -S $0 ${1+"$@"}'
+ if 0; # not running under some shell
use strict;
use Module::Build 0.25;
#
# Author: Christopher J. Madsen <cjm@pobox.com>
# Created: 08 Nov 1997
-# $Revision$ $Date$
+# $Revision: 5841 $ $Date: 2006-03-21 08:27:29 -0500 (Tue, 21 Mar 2006) $
#
# This program is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself.
(my $libdir2 = $libdir) =~ s/libdir/lbiidr/;
my $libarch2 = File::Spec->catdir($libdir2, 'arch');
- my $check_base = $libdir2;
- $check_base =~ s/\]\z// if $^O eq 'VMS'; # trim trailing ] for appending other dirs
SKIP: {
my @cases = (
{
label => "INSTALLDIRS=vendor",
args => [ 'INSTALLDIRS=vendor', "INSTALLVENDORLIB=$libdir2", "INSTALLVENDORARCH=$libarch2"],
- check => qr/\Q$check_base\E .* Simple\.pm/ix,
+ check => qr/\Q$libdir2\E .* Simple\.pm/ix,
},
{
label => "PREFIX=\$libdir2",
args => [ "PREFIX=$libdir2"],
- check => qr/\Q$check_base\E .* Simple\.pm/ix,
+ check => qr/\Q$libdir2\E .* Simple\.pm/ix,
},
{
label => "PREFIX=\$libdir2 LIB=mylib",
args => [ "PREFIX=$libdir2", "LIB=mylib" ],
- check => qr{\Q$check_base\E[/\\\.]mylib[/\\\]]Simple\.pm}ix,
+ check => qr{\Q$libdir2\E[/\\]mylib[/\\]Simple\.pm}ix,
},
);
skip "Needs ExtUtils::Install 1.32 or later", 2 * @cases
if ExtUtils::Install->VERSION < 1.32;
+ skip "Needs upstream patch at http://rt.cpan.org/Public/Bug/Display.html?id=55288", 2 * @cases
+ if $^O eq 'VMS';
+
for my $c (@cases) {
my @make_args = @{$c->{args}};
+ if ($is_vms_mms) { # VMS MMK/MMS macros use different syntax.
+ $make_args[0] = '/macro=("' . join('","',@make_args) . '")';
+ pop @make_args while scalar(@make_args) > 1;
+ }
($output) = stdout_stderr_of(
sub {
$result = $mb->run_perl_script('Makefile.PL', [], \@make_args);
BEGIN {
# Environment variables which might effect our testing
my @delete_env_keys = qw(
- HOME
DEVEL_COVER_OPTIONS
MODULEBUILDRC
PERL_MB_OPT
return File::Temp::tempdir('MB-XXXXXXXX', CLEANUP => 1, DIR => $dir, @args);
}
-BEGIN {
- $ENV{HOME} = tmpdir; # don't want .modulebuildrc or other things interfering
-}
-
sub save_handle {
my ($handle, $subr) = @_;
my $outfile = File::Spec->catfile(File::Spec->tmpdir, temp_file_name());