use strict;
use vars qw($VERSION @ISA);
-$VERSION = '0.13_01';
+$VERSION = '0.15';
+use Carp;
use File::Spec;
BEGIN { @ISA = qw(File::Spec); }
$self->{_MAX_EXEC_LEN} is set by this method, but only for testing purposes.
+=head3 make
+ my $make = $MM->make;
+
+Returns the make variant we're generating the Makefile for. This attempts
+to do some normalization on the information from %Config or the user.
+
+=cut
+
+sub make {
+ my $self = shift;
+
+ my $make = lc $self->{MAKE};
+
+ # Truncate anything like foomake6 to just foomake.
+ $make =~ s/^(\w+make).*/$1/;
+
+ # Turn gnumake into gmake.
+ $make =~ s/^gnu/g/;
+
+ return $make;
+}
=head2 Targets
$dependencies .= " \\\n\t$name";
}
- foreach my $name (keys %{$self->{MAN3PODS}}) {
- $dependencies .= " \\\n\t$name"
- }
-
my $manify = <<END;
manifypods : pure_all $dependencies
END
Writes the file META.yml YAML encoded meta-data about the module in
the distdir. The format follows Module::Build's as closely as
-possible. Additionally, we include:
-
- version_from
- installdirs
+possible.
=cut
my $prereq_pm = '';
foreach my $mod ( sort { lc $a cmp lc $b } keys %{$self->{PREREQ_PM}} ) {
my $ver = $self->{PREREQ_PM}{$mod};
- $prereq_pm .= sprintf " %-30s %s\n", "$mod:", $ver;
+ $prereq_pm .= sprintf "\n %-30s %s", "$mod:", $ver;
}
- my $meta = <<YAML;
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
-name: $self->{DISTNAME}
-version: $self->{VERSION}
-version_from: $self->{VERSION_FROM}
-installdirs: $self->{INSTALLDIRS}
-requires:
-$prereq_pm
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION
+ # Use a list to preserve order.
+ my @meta_to_mm = (
+ name => $self->{DISTNAME},
+ version => $self->{VERSION},
+ abstract => $self->{ABSTRACT},
+ license => $self->{LICENSE},
+ generated_by =>
+ "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
+ distribution_type => $self->{PM} ? 'module' : 'script',
+ );
+
+ my $meta = "--- #YAML:1.0\n";
+
+ while( @meta_to_mm ) {
+ my($key, $val) = splice @meta_to_mm, 0, 2;
+
+ $val = '~' unless defined $val;
+
+ $meta .= sprintf "%-20s %s\n", "$key:", $val;
+ };
+
+ $meta .= <<"YAML";
+requires: $prereq_pm
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.2.html
+ version: 1.2
YAML
+ $meta .= <<"YAML" if defined $self->{AUTHOR};
+author:
+ - $self->{AUTHOR}
+YAML
+
+ $meta .= $self->{EXTRA_META} if $self->{EXTRA_META};
+
my @write_meta = $self->echo($meta, 'META_new.yml');
return sprintf <<'MAKE_FRAG', join("\n\t", @write_meta);
Methods which help initialize the MakeMaker object and macros.
+=head3 init_ABSTRACT
+
+ $mm->init_ABSTRACT
+
+=cut
+
+sub init_ABSTRACT {
+ my $self = shift;
+
+ if( $self->{ABSTRACT_FROM} and $self->{ABSTRACT} ) {
+ warn "Both ABSTRACT_FROM and ABSTRACT are set. ".
+ "Ignoring ABSTRACT_FROM.\n";
+ return;
+ }
+
+ if ($self->{ABSTRACT_FROM}){
+ $self->{ABSTRACT} = $self->parse_abstract($self->{ABSTRACT_FROM}) or
+ carp "WARNING: Setting ABSTRACT via file ".
+ "'$self->{ABSTRACT_FROM}' failed\n";
+ }
+}
+
=head3 init_INST
$mm->init_INST;
sub init_INSTALL {
my($self) = shift;
- if( $self->{ARGS}{INSTALLBASE} and $self->{ARGS}{PREFIX} ) {
- die "Only one of PREFIX or INSTALLBASE can be given. Not both.\n";
+ if( $self->{ARGS}{INSTALL_BASE} and $self->{ARGS}{PREFIX} ) {
+ die "Only one of PREFIX or INSTALL_BASE can be given. Not both.\n";
}
- if( $self->{ARGS}{INSTALLBASE} ) {
- $self->init_INSTALL_from_INSTALLBASE;
+ if( $self->{ARGS}{INSTALL_BASE} ) {
+ $self->init_INSTALL_from_INSTALL_BASE;
}
else {
$self->init_INSTALL_from_PREFIX;
}
-=head3 init_from_INSTALLBASE
+=head3 init_from_INSTALL_BASE
- $mm->init_from_INSTALLBASE
+ $mm->init_from_INSTALL_BASE
=cut
);
$map{script} = $map{bin};
-sub init_INSTALL_from_INSTALLBASE {
+sub init_INSTALL_from_INSTALL_BASE {
my $self = shift;
@{$self}{qw(PREFIX VENDORPREFIX SITEPREFIX PERLPREFIX)} =
- '$(INSTALLBASE)';
+ '$(INSTALL_BASE)';
my %install;
foreach my $thing (keys %map) {
my $key = "INSTALL".$dir.$uc_thing;
$install{$key} ||=
- $self->catdir('$(INSTALLBASE)', @{$map{$thing}});
+ $self->catdir('$(INSTALL_BASE)', @{$map{$thing}});
}
}
if ($self->{VERSION_FROM}){
$self->{VERSION} = $self->parse_version($self->{VERSION_FROM});
if( $self->{VERSION} eq 'undef' ) {
- require Carp;
- Carp::carp("WARNING: Setting VERSION via file ".
- "'$self->{VERSION_FROM}' failed\n");
+ carp("WARNING: Setting VERSION via file ".
+ "'$self->{VERSION_FROM}' failed\n");
}
}
MAKEFILE_OLD
MAKE_APERL_FILE File used by MAKE_APERL
- SHELL Program used to run
- shell commands
+ SHELL Program used to run shell commands
ECHO Print text adding a newline on the end
RM_F Remove a file
}
+=head3 init_MAKE
+
+ $mm->init_MAKE
+
+Initialize MAKE from either a MAKE environment variable or $Config{make}.
+=cut
+
+sub init_MAKE {
+ my $self = shift;
+
+ $self->{MAKE} ||= $ENV{MAKE} || $Config{make};
+}
=head2 Tools