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 )