#!/usr/bin/perl use 5.008; use strict; use warnings; use inc::latest 'Module::Build'; use lib 'inc'; use Alien::ROOT::Builder; use Env '@PATH'; use Getopt::Long qw/GetOptions/; Getopt::Long::Configure('pass_through', 'permute', 'no_require_order'); our $USER_CONFIG = { archive => 'root_v5.34.03.source.tar.gz', parallel_processes => 1, force_recompile => 0, }; GetOptions( 'j|parallel=i' => \($USER_CONFIG->{parallel_processes}), 'archive=s' => \($USER_CONFIG->{archive}), 'recompile' => \($USER_CONFIG->{force_recompile}), ); my $builder = Alien::ROOT::Builder->new( module_name => 'Alien::ROOT', license => 'gpl', dist_author => 'Steffen Mueller ', dist_version_from => 'lib/Alien/ROOT.pm', dynamic_config => 1, create_readme => 1, # Maintain compatibility with ExtUtils::MakeMaker installations create_makefile_pl => 'passthrough', requires => { 'perl' => 5.008, 'ExtUtils::MakeMaker' => 0, # core 'File::Spec' => 0, # core 'File::Path' => 0, # core 'IPC::Open3' => 0, # core }, build_requires => { 'Test::More' => 0, # core 'ExtUtils::CBuilder' => 0, # core, but might need newer one? 'File::Fetch' => 0, 'Archive::Extract' => 0, }, add_to_cleanup => [ 'Alien-ROOT-*' ], script_files => [], meta_merge => { resources => { Ratings => 'http://cpanratings.perl.org/d/Alien-ROOT', repository => 'git://github.com/tsee/SOOT.git', bugtracker => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=Alien-ROOT', license => 'http://www.opensource.org/licenses/gpl-2.0.php', }, no_index => { directory => [ qw(buildtools t xt inc examples) ], }, }, ); my $build_data = {%$USER_CONFIG}; $build_data->{url} = 'ftp://root.cern.ch/root/' . $build_data->{archive}; $build_data->{directory} = 'root'; # this is pretty retarded :( $builder->notes('build_data' => $build_data); # Use Alien::ROOT to see if it's already installed use lib 'lib'; use Alien::ROOT; my $aroot = Alien::ROOT->new(); $builder->notes(build_ROOT => 0); if (not $aroot->installed or $USER_CONFIG->{force_recompile}) { if ($ENV{AUTOMATED_TESTING}) { exit(0); # Do not create pain for CPAN testers... } # Ask the user if they'd like to install this; if not, then exit $builder->y_n('ROOT was not found on your system or you forced a recompile. Build and install it now?', 'y') or exit; $builder->notes(build_ROOT => 1); # Ask the user what 'make' program to invoke my $make; if (exists($ENV{MAKE}) && length($ENV{MAKE})) { $make = $ENV{MAKE}; } else { use Config '%Config'; $make = $Config{make}; # Probe for GNU Make (useful on BSD/Unix variants) if ($make eq 'make' && grep { -x $_ . '/gmake' } @PATH) { $make = 'gmake'; if ($^O =~ /bsd$/) { print {*STDERR} "warning: your system is a BSD variant but " . "gmake wasn't found.\n"; } } } if (not defined $make or not $aroot->_can_run($make)) { # FIXME hack $make = $builder->prompt('What is your system "make" command?', $make); } $builder->notes(make => $make); # # Figure out if we should do a full install # my $extra = $builder->y_n('ROOT includes other files. Install them too?', 'n'); # $builder->notes(extra => $extra); } $builder->create_build_script();