From 683f6060d8304d6d4e83bd76e5ac624a35b43442 Mon Sep 17 00:00:00 2001 From: Modestas Vainius Date: Tue, 14 Apr 2009 15:12:14 +0300 Subject: Modular object-orientied buildsystem implementation (try 2). Major changess: * Dh_Buildsystem_Option dropped and Dh_Buildsystem_Chdir functionality partitially merged into Dh_Buildsystem_Basic. Dh_Buildsystem_Bases.pm renamed to Dh_Buildsystem_Basic.pm to match classname. * *_impl() ditched completely. Previous {configure,build,test,install,clean}_impl() renamed to just configure(), build(), test(), install(), clean() instead. Added pre_action($action) and post_action($action) hooks instead which are called by Dh_Buildsystems::buildsystems_do(). * Builddir is handled via mkdir_builddir(), doit_in_buildddir(), clean_builddir() methods which buildsystems should call directly. Removed get_top* method, added get_rel2builddir_path(). * is_buildable() method renamed to is_auto_buildable() to reflect its purpose more. * ::perl_makefile renamed to ::perl_makemaker and which is based on ::makefile now. MakeMaker hack moved from ::makefile to ::perl_makemaker where it belongs (thanks for the tip). * Dh_Buildsystems refactored into a simple perl module rather than OO class and simplified a bit. * @BUILDSYSTEMS and is_auto_buildable() modified to 100% match historical order. TODO: user documentation (e.g. DH_AUTO_BUILDDIRECTORY and DH_AUTO_BUILDSYSTEM environment variables and common dh_auto_* options (--buildsystem and --builddirectory)). Current plugin inheritance hierarchy is like this: Buildsystem::perl_build -> Dh_Buildsystem_Basic <- Buildsystem::python_distutils ^ | Buildsystem::makefile <- Buildsystem::perl_makemaker ^ ^ ^ / | \ Buildsystem::autotools Buildsystem::cmake Buildsystem::python_distutils Signed-off-by: Modestas Vainius --- Debian/Debhelper/Buildsystem/perl_build.pm | 37 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'Debian/Debhelper/Buildsystem/perl_build.pm') diff --git a/Debian/Debhelper/Buildsystem/perl_build.pm b/Debian/Debhelper/Buildsystem/perl_build.pm index a43d65da..9be71a27 100644 --- a/Debian/Debhelper/Buildsystem/perl_build.pm +++ b/Debian/Debhelper/Buildsystem/perl_build.pm @@ -8,26 +8,27 @@ package Debian::Debhelper::Buildsystem::perl_build; use strict; use Debian::Debhelper::Dh_Lib; -use Debian::Debhelper::Dh_Buildsystem_Bases; use base 'Debian::Debhelper::Dh_Buildsystem_Basic'; sub DESCRIPTION { "support for building Perl Build.PL based packages (in-source only)" } -sub is_buildable { +sub is_auto_buildable { my ($self, $action) = @_; - my $ret = (-e "Build.PL"); + + # Handles everything + my $ret = -e "Build.PL"; if ($action ne "configure") { - $ret &= (-e "Build"); + $ret &&= -e "Build"; } return $ret; } -sub invoke_impl { +sub do_perl { my $self=shift; $ENV{MODULEBUILDRC} = "/dev/null"; - return $self->SUPER::invoke_impl(@_); + doit("perl", @_); } sub new { @@ -37,33 +38,31 @@ sub new { return $self; } -sub configure_impl { +sub configure { my $self=shift; - # XXX JEH I think the below comment is inherited from elsewhere; - # doesn't really make sense now. - $ENV{PERL_MM_USE_DEFAULT}=1; # Module::Build can also use this. - doit("perl", "Build.PL", "installdirs=vendor", @_); + $ENV{PERL_MM_USE_DEFAULT}=1; + $self->do_perl("Build.PL", "installdirs=vendor", @_); } -sub build_impl { +sub build { my $self=shift; - doit("perl", "Build", @_); + $self->do_perl("Build", @_); } -sub test_impl { +sub test { my $self=shift; - doit(qw/perl Build test/, @_); + $self->do_perl("Build", "test", @_); } -sub install_impl { +sub install { my $self=shift; my $destdir=shift; - doit("perl", "Build", "install", "destdir=$destdir", "create_packlist=0", @_); + $self->do_perl("Build", "install", "destdir=$destdir", "create_packlist=0", @_); } -sub clean_impl { +sub clean { my $self=shift; - doit("perl", "Build", "--allow_mb_mismatch", 1, "distclean", @_); + $self->do_perl("Build", "--allow_mb_mismatch", 1, "distclean", @_); } 1; -- cgit v1.2.3