App-Bootstrap-Perl
view release on metacpan or search on metacpan
bin/bootstrap-perl view on Meta::CPAN
my $timestamp = ~~localtime();
my $HOME = $ENV{HOME} || '/opt';
my $hostname = hostname();
our $build_path = "$HOME/.bootstrapperl/bootstrap-perl-build";
my $build_path_perl = "$build_path/perl";
my $logfile = "$build_path/bootstrap-perl.log";
my $logcommand = "$build_path/command.log";
my $giturl = "git://github.com/Perl/perl5.git";
my $cpucount = `cat /proc/cpuinfo | grep bogomips | wc -l`; chomp $cpucount;
my $threadcount = $cpucount + 1;
# getopt
my $dry;
my $prefix;
my $prefixbase = "$HOME/.bootstrapperl/$hostname";
my $version = "blead";
our $VERSION;
my $installdeps;
my $sourcetgz = "/var/tmp/perl.tar.gz";
my $blead = 0;
my $usethreads = 1;
my $bit64 = 1;
my $taintsupport = 1;
my $silentnotaint = 0;
my $help = 0;
my $test = 0;
my $cpan = 1;
my $cleancpansources = 0;
my $forcecpancfg = 0;
my $forcebuildperl = 0;
my $forcemoduleinstall = 0;
my $perlformance = 0;
my $perlformance_local = 0;
my $perlformance_report = 0;
my $jobs = $threadcount;
my @mirrors;
my @modules;
my @runscripts = ();
my @runargs = ();
my @confargs = ();
my @exesuffixes = ();
my $OLDSTDOUT;
my $OLDSTDERR;
my $LOGFILE;
my $COMMAND;
my $USER;
use constant {
NO_REINSTALL => 0,
REINSTALL => 1,
NO_FORCE => 0,
FORCE => 1,
};
sub caller_line {
my $i = 0;
my ($rc, $rc_prev, $func);
while (1) {
my @v = caller($i);
defined($v[0]) or last;
$rc_prev = $rc;
($rc, $func) = @v[2..3];
$i++;
};
$func ne "(eval)"? $rc: $rc_prev;
}
sub setup_user {
open($USER, ">&", \*STDOUT) || die;
}
sub setup_log {
open($OLDSTDOUT, ">&", \*STDOUT) || die;
open($OLDSTDERR, ">&", \*STDERR) || die;
open($LOGFILE, ">>" , $logfile) || die;
open($COMMAND, ">>", $logcommand) || die;
}
# Execute a command via system(). Output goes to log file.
sub print_and_system {
my ($cmd) = @_;
my $exitcode;
my $line = caller_line();
my @cmd = split / +/, $cmd;
my $bin = $cmd[0];
my $is_cpan = $bin eq bin_cpan();
open(STDOUT, ">>&", $LOGFILE) || die;
open(STDERR, ">>&", $LOGFILE) || die;
print $COMMAND $cmd, "\n";
print $LOGFILE $cmd, "\n";
$exitcode = system ($cmd);
open(STDOUT, ">&", $OLDSTDOUT) || die;
open(STDERR, ">&", $OLDSTDERR) || die;
$exitcode == 0 || warn "$0($line): $cmd ($exitcode>>".($exitcode>>8).")";
}
# Execute a command via system(). Output goes to normal stdout/stderr.
sub print_and_system_out {
my ($cmd) = @_;
my $line = caller_line();
print $COMMAND $cmd, "\n";
print $LOGFILE $cmd, "\n";
print $USER $cmd, "\n";
system ($cmd) == 0 || warn "$0($line): $cmd ($?>>".($?>>8).")";
}
# Execute a command via qx(). Output goes to log file.
sub print_and_qx {
my ($cmd) = @_;
my $line = caller_line();
my $exitcode;
my $out;
( run in 0.953 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )