| use strict; |
| use warnings; |
| use ExtUtils::MakeMaker; |
| use Getopt::Long; |
| use File::Find; |
| |
| # Don't forget to update the perl/Makefile, too. |
| # Don't forget to test with NO_PERL_MAKEMAKER=YesPlease |
| |
| # Sanity: die at first unknown option |
| Getopt::Long::Configure qw/ pass_through /; |
| |
| my $localedir = ''; |
| GetOptions("localedir=s" => \$localedir); |
| |
| sub MY::postamble { |
| return <<'MAKE_FRAG'; |
| instlibdir: |
| @echo '$(INSTALLSITELIB)' |
| |
| ifneq (,$(DESTDIR)) |
| ifeq (0,$(shell expr '$(MM_VERSION)' '>' 6.10)) |
| $(error ExtUtils::MakeMaker version "$(MM_VERSION)" is older than 6.11 and so \ |
| is likely incompatible with the DESTDIR mechanism. Try setting \ |
| NO_PERL_MAKEMAKER=1 instead) |
| endif |
| endif |
| |
| MAKE_FRAG |
| } |
| |
| # Find all the .pm files in "Git/" and Git.pm |
| my %pm; |
| find sub { |
| return unless /\.pm$/; |
| |
| # sometimes File::Find prepends a ./ Strip it. |
| my $pm_path = $File::Find::name; |
| $pm_path =~ s{^\./}{}; |
| |
| $pm{$pm_path} = '$(INST_LIBDIR)/'.$pm_path; |
| }, "Git", "Git.pm"; |
| |
| |
| # We come with our own bundled Error.pm. It's not in the set of default |
| # Perl modules so install it if it's not available on the system yet. |
| if ( !eval { require Error } || $Error::VERSION < 0.15009) { |
| $pm{'private-Error.pm'} = '$(INST_LIBDIR)/Error.pm'; |
| } |
| |
| # redirect stdout, otherwise the message "Writing perl.mak for Git" |
| # disrupts the output for the target 'instlibdir' |
| open STDOUT, ">&STDERR"; |
| |
| WriteMakefile( |
| NAME => 'Git', |
| VERSION_FROM => 'Git.pm', |
| PM => \%pm, |
| PM_FILTER => qq[\$(PERL) -pe "s<\\Q++LOCALEDIR++\\E><$localedir>"], |
| MAKEFILE => 'perl.mak', |
| INSTALLSITEMAN3DIR => '$(SITEPREFIX)/share/man/man3' |
| ); |