use strict;
use vars qw($VERSION @ISA);
-$VERSION = 0.07;
+$VERSION = 0.09;
@ISA = qw(File::Spec);
use Config;
=head1 NAME
-ExtUtils::MM_Any - Platform agnostic MM methods
+ExtUtils::MM_Any - Platform-agnostic MM methods
=head1 SYNOPSIS
return (grep { $flavors{$_} } @_) ? 1 : 0;
}
+=item blibdirs_target (o)
+
+ my $make_frag = $mm->blibdirs_target;
+
+Creates the blibdirs target which creates all the directories we use in
+blib/.
+
+=cut
+
+sub blibdirs_target {
+ my $self = shift;
+
+ my @dirs = map { uc "\$(INST_$_)" } qw(libdir
+ autodir archautodir
+ bin script
+ man1dir man3dir
+ );
+ my @mkpath = $self->split_command('$(NOECHO) $(MKPATH)', @dirs);
+ my @chmod = $self->split_command('$(NOECHO) $(CHMOD) 755', @dirs);
+
+ my $make = "\nblibdirs :: \n";
+ $make .= join "", map { "\t$_\n" } @mkpath, @chmod;
+ $make .= "\t\$(NOECHO) \$(TOUCH) blibdirs\n\n";
+
+ return $make;
+}
+
+
=back
=head2 File::Spec wrappers
}
chop $arg_str;
- push @cmds, $self->escape_newlines("$cmd\n$arg_str");
+ push @cmds, $self->escape_newlines("$cmd \n$arg_str");
} while @args;
return @cmds;
my $ver = $self->{PREREQ_PM}{$mod};
$prereq_pm .= sprintf " %-30s %s\n", "$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#
generated_by: ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION
YAML
- my @write_meta = $self->echo($meta, 'META.yml');
- return sprintf <<'MAKE_FRAG', join "\n\t", @write_meta;
+ my @write_meta = $self->echo($meta, 'META_new.yml');
+ my $move = $self->oneliner(<<'CODE', ['-MExtUtils::Command', '-MFile::Compare']);
+compare(@ARGV) != 0 ? (mv or warn "Cannot move @ARGV: $$!\n") : unlink(shift);
+CODE
+
+ return sprintf <<'MAKE_FRAG', join("\n\t", @write_meta), $move;
metafile :
+ $(NOECHO) $(ECHO) Generating META.yml
%s
+ -$(NOECHO) %s META_new.yml META.yml
+MAKE_FRAG
+
+}
+
+
+=item signature_target
+
+ my $target = $mm->signature_target;
+
+Generate the signature target.
+
+Writes the file SIGNATURE with "cpansign -s".
+
+=cut
+
+sub signature_target {
+ my $self = shift;
+
+ return <<'MAKE_FRAG' if !$self->{SIGN};
+signature :
+ $(NOECHO) $(NOOP)
+MAKE_FRAG
+
+ return <<'MAKE_FRAG';
+signature : signature_addtomanifest
+ cpansign -s
MAKE_FRAG
}
return sprintf <<'MAKE_FRAG', $add_meta;
metafile_addtomanifest:
+ $(NOECHO) $(ECHO) Adding META.yml to MANIFEST
+ $(NOECHO) %s
+MAKE_FRAG
+
+}
+
+
+=item signature_addtomanifest_target
+
+ my $target = $mm->signature_addtomanifest_target
+
+Adds the META.yml file to the MANIFEST.
+
+=cut
+
+sub signature_addtomanifest_target {
+ my $self = shift;
+
+ return <<'MAKE_FRAG' if !$self->{SIGN};
+signature_addtomanifest :
+ $(NOECHO) $(NOOP)
+MAKE_FRAG
+
+ my $add_sign = $self->oneliner(<<'CODE', ['-MExtUtils::Manifest=maniadd']);
+eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }
+ or print "Could not add SIGNATURE to MANIFEST: $${'@'}\n"
+CODE
+
+ return sprintf <<'MAKE_FRAG', $add_sign;
+signature_addtomanifest :
+ $(NOECHO) $(ECHO) Adding SIGNATURE to MANIFEST
$(NOECHO) %s
MAKE_FRAG