add --sudo flag

This adds --sudo flag to Build.PL. This flag is passed to cpanm,
so it is possible to build Slicer on linux without beeing root (build files
are owned by user)
This commit is contained in:
Petr Ledvina 2014-04-10 15:43:31 +02:00
parent 26bdbf0210
commit c81d26b960

View File

@ -27,6 +27,7 @@ my %recommends = qw(
XML::SAX::ExpatXS 0 XML::SAX::ExpatXS 0
); );
my $sudo = grep { $_ eq '--sudo' } @ARGV;
my $gui = grep { $_ eq '--gui' } @ARGV; my $gui = grep { $_ eq '--gui' } @ARGV;
my $xs_only = grep { $_ eq '--xs' } @ARGV; my $xs_only = grep { $_ eq '--xs' } @ARGV;
if ($gui) { if ($gui) {
@ -89,19 +90,21 @@ If it is installed in a non-standard location you can do:
EOF EOF
if !$cpanm; if !$cpanm;
my @cpanm_args = ();
push @cpanm_args, "--sudo" if $sudo;
# make sure our cpanm is updated (old ones don't support the ~ syntax) # make sure our cpanm is updated (old ones don't support the ~ syntax)
system $cpanm, 'App::cpanminus'; system $cpanm, @cpanm_args, 'App::cpanminus';
# install the Windows-compatible Math::Libm # install the Windows-compatible Math::Libm
if ($^O eq 'MSWin32' && !eval "use Math::Libm; 1") { if ($^O eq 'MSWin32' && !eval "use Math::Libm; 1") {
system $cpanm, 'https://github.com/alexrj/Math-Libm/tarball/master'; system $cpanm, @cpanm_args, 'https://github.com/alexrj/Math-Libm/tarball/master';
} }
my %modules = (%prereqs, %recommends); my %modules = (%prereqs, %recommends);
foreach my $module (sort keys %modules) { foreach my $module (sort keys %modules) {
my $version = $modules{$module}; my $version = $modules{$module};
my @cmd = ($cpanm, "$module~$version"); my @cmd = ($cpanm, @cpanm_args, "$module~$version");
if ($module eq 'XML::SAX::ExpatXS' && $^O eq 'MSWin32') { if ($module eq 'XML::SAX::ExpatXS' && $^O eq 'MSWin32') {
my $mingw = 'C:\dev\CitrusPerl\mingw64'; my $mingw = 'C:\dev\CitrusPerl\mingw64';
$mingw = 'C:\dev\CitrusPerl\mingw32' if !-d $mingw; $mingw = 'C:\dev\CitrusPerl\mingw32' if !-d $mingw;
@ -131,7 +134,7 @@ EOF
system './xs/Build', 'distclean'; system './xs/Build', 'distclean';
} }
} }
my $res = system $cpanm, '--reinstall', './xs'; my $res = system $cpanm, @cpanm_args, '--reinstall', './xs';
if ($res != 0) { if ($res != 0) {
die "The XS/C++ code failed to compile, aborting\n"; die "The XS/C++ code failed to compile, aborting\n";
} }