X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debian%2FDebhelper%2FBuildsystem%2Fperl_makemaker.pm;h=342e0eb8e1e0026b3d6307e0181824b54169fd74;hb=798e7eb1659e8a1fab0e171a8f77d097f0d18694;hp=2957016668c27764a564228e2110adc1fc1c1b16;hpb=14d936391e07454c7936a28c512e8b42b26cd05e;p=debhelper.git diff --git a/Debian/Debhelper/Buildsystem/perl_makemaker.pm b/Debian/Debhelper/Buildsystem/perl_makemaker.pm index 2957016..342e0eb 100644 --- a/Debian/Debhelper/Buildsystem/perl_makemaker.pm +++ b/Debian/Debhelper/Buildsystem/perl_makemaker.pm @@ -1,4 +1,4 @@ -# A buildsystem plugin for handling Perl MakeMaker based projects. +# A debhelper build system class for handling Perl MakeMaker based projects. # # Copyright: © 2008-2009 Joey Hess # © 2008-2009 Modestas Vainius @@ -7,53 +7,74 @@ package Debian::Debhelper::Buildsystem::perl_makemaker; use strict; -use Debian::Debhelper::Dh_Lib; +use Debian::Debhelper::Dh_Lib qw(compat); use base 'Debian::Debhelper::Buildsystem::makefile'; +use Config; sub DESCRIPTION { - "support for building Perl MakeMaker based packages (in-source only)" + "Perl ExtUtils::MakeMaker (Makefile.PL)" } sub check_auto_buildable { - my $self=shift; - my ($action)=@_; + my $this=shift; + my ($step)=@_; - # Handles configure, install; the rest - next class - if ($action eq "install") { - return -e "Makefile.PL"; - } - # XXX JEH why test for configure here? If building or cleaning, and - # a Makefile.PL exists, we know this class can handle those - # actions -- it does so by inheriting from the makefile class. - # XXX MDX Yes. But that's again different behaviour from current - # (see comment in autotools.mk). Your call. - elsif ($action eq "configure") { - return -e "Makefile.PL"; - } - else { - return 0; + # Handles everything if Makefile.PL exists. Otherwise - next class. + if (-e $this->get_sourcepath("Makefile.PL")) { + if ($step eq "configure") { + return 1; + } + else { + return $this->SUPER::check_auto_buildable(@_); + } } + return 0; } sub new { - my $cls=shift; - my $self=$cls->SUPER::new(@_); - $self->enforce_in_source_building(); - return $self; + my $class=shift; + my $this=$class->SUPER::new(@_); + $this->enforce_in_source_building(); + return $this; } sub configure { - my $self=shift; + my $this=shift; + my @flags; # If set to a true value then MakeMaker's prompt function will # # always return the default without waiting for user input. $ENV{PERL_MM_USE_DEFAULT}=1; - doit("perl", "Makefile.PL", "INSTALLDIRS=vendor", @_); + # This prevents Module::Install from interactive behavior. + $ENV{PERL_AUTOINSTALL}="--skipdeps"; + + if ($ENV{CFLAGS} && ! compat(8)) { + push @flags, "OPTIMIZE=$ENV{CFLAGS} $ENV{CPPFLAGS}"; + } + if ($ENV{LDFLAGS} && ! compat(8)) { + push @flags, "LD=$Config{ld} $ENV{LDFLAGS}"; + } + + $this->doit_in_sourcedir("perl", "Makefile.PL", "INSTALLDIRS=vendor", + # if perl_build is not tested first, need to pass packlist + # option to handle fallthrough case + (compat(7) ? "create_packlist=0" : ()), + @flags, @_); } sub install { - my $self=shift; + my $this=shift; my $destdir=shift; - $self->SUPER::install($destdir, "PREFIX=/usr", @_); + + # Special case for Makefile.PL that uses + # Module::Build::Compat. PREFIX should not be passed + # for those; it already installs into /usr by default. + my $makefile=$this->get_sourcepath("Makefile"); + if (system(qq{grep -q "generated automatically by MakeMaker" $makefile}) != 0) { + $this->SUPER::install($destdir, @_); + } + else { + $this->SUPER::install($destdir, "PREFIX=/usr", @_); + } } -1; +1