perl / Makefile.PLon commit Post 2.3 cycle (batch #3) (f3f4077)
   1use strict;
   2use warnings;
   3use ExtUtils::MakeMaker;
   4use Getopt::Long;
   5use File::Find;
   6
   7# Don't forget to update the perl/Makefile, too.
   8# Don't forget to test with NO_PERL_MAKEMAKER=YesPlease
   9
  10# Sanity: die at first unknown option
  11Getopt::Long::Configure qw/ pass_through /;
  12
  13my $localedir = '';
  14GetOptions("localedir=s" => \$localedir);
  15
  16sub MY::postamble {
  17        return <<'MAKE_FRAG';
  18instlibdir:
  19        @echo '$(INSTALLSITELIB)'
  20
  21ifneq (,$(DESTDIR))
  22ifeq (0,$(shell expr '$(MM_VERSION)' '>' 6.10))
  23$(error ExtUtils::MakeMaker version "$(MM_VERSION)" is older than 6.11 and so \
  24        is likely incompatible with the DESTDIR mechanism.  Try setting \
  25        NO_PERL_MAKEMAKER=1 instead)
  26endif
  27endif
  28
  29MAKE_FRAG
  30}
  31
  32# Find all the .pm files in "Git/" and Git.pm
  33my %pm;
  34find sub {
  35        return unless /\.pm$/;
  36
  37        # sometimes File::Find prepends a ./  Strip it.
  38        my $pm_path = $File::Find::name;
  39        $pm_path =~ s{^\./}{};
  40
  41        $pm{$pm_path} = '$(INST_LIBDIR)/'.$pm_path;
  42}, "Git", "Git.pm";
  43
  44
  45# We come with our own bundled Error.pm. It's not in the set of default
  46# Perl modules so install it if it's not available on the system yet.
  47if ( !eval { require Error } || $Error::VERSION < 0.15009) {
  48        $pm{'private-Error.pm'} = '$(INST_LIBDIR)/Error.pm';
  49}
  50
  51# redirect stdout, otherwise the message "Writing perl.mak for Git"
  52# disrupts the output for the target 'instlibdir'
  53open STDOUT, ">&STDERR";
  54
  55WriteMakefile(
  56        NAME            => 'Git',
  57        VERSION_FROM    => 'Git.pm',
  58        PM              => \%pm,
  59        PM_FILTER       => qq[\$(PERL) -pe "s<\\Q++LOCALEDIR++\\E><$localedir>"],
  60        MAKEFILE        => 'perl.mak',
  61        INSTALLSITEMAN3DIR => '$(SITEPREFIX)/share/man/man3'
  62);