App-perlbrew
view release on metacpan or search on metacpan
lib/App/perlbrew.pm view on Meta::CPAN
package App::perlbrew;
use strict;
use warnings;
use 5.008;
our $VERSION = "1.02";
use Config qw( %Config );
BEGIN {
# Special treat for Cwd to prevent it to be loaded from somewhere binary-incompatible with system perl.
my @oldinc = @INC;
@INC = (
$Config{sitelibexp} . "/" . $Config{archname},
$Config{sitelibexp}, @Config{qw<vendorlibexp vendorarchexp archlibexp privlibexp>},
);
require Cwd;
@INC = @oldinc;
}
use Getopt::Long ();
use CPAN::Perl::Releases ();
use JSON::PP qw( decode_json );
use File::Copy qw( copy move );
use Capture::Tiny ();
use App::Perlbrew::Util qw( files_are_the_same uniq find_similar_tokens looks_like_url_of_skaji_relocatable_perl looks_like_sys_would_be_compatible_with_skaji_relocatable_perl make_skaji_relocatable_perl_url );
use App::Perlbrew::Path ();
use App::Perlbrew::Path::Root ();
use App::Perlbrew::HTTP qw( http_download http_get );
use App::Perlbrew::Patchperl qw( maybe_patchperl );
use App::Perlbrew::Sys;
### global variables
# set $ENV{SHELL} to executable path of parent process (= shell) if it's missing
# (e.g. if this script was executed by a daemon started with "service xxx start")
# ref: https://github.com/gugod/App-perlbrew/pull/404
$ENV{SHELL} ||= App::Perlbrew::Path->new( "/proc", getppid, "exe" )->readlink if -d "/proc";
local $SIG{__DIE__} = sub {
my $message = shift;
warn $message;
exit(1);
};
our $CONFIG;
our $PERLBREW_ROOT;
our $PERLBREW_HOME;
my @flavors = (
{
d_option => 'usethreads',
implies => 'multi',
common => 1,
opt => 'thread|threads'
}, # threads is for backward compatibility
{
d_option => 'usemultiplicity',
opt => 'multi'
},
{
d_option => 'uselongdouble',
common => 1,
opt => 'ld'
},
{
d_option => 'use64bitint',
common => 1,
opt => '64int'
},
{
d_option => 'use64bitall',
implies => '64int',
opt => '64all'
},
{
d_option => 'DEBUGGING',
opt => 'debug'
},
{
d_option => 'cc=clang',
opt => 'clang'
},
);
my %flavor;
my $flavor_ix = 0;
for (@flavors) {
my ($name) = $_->{opt} =~ /([^|]+)/;
$_->{name} = $name;
$_->{ix} = ++$flavor_ix;
( run in 1.059 second using v1.01-cache-2.11-cpan-39bf76dae61 )