Hello community,
here is the log from the commit of package perl-App-perlbrew for openSUSE:Factory checked in at 2016-06-25 02:24:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-App-perlbrew (Old)
and /work/SRC/openSUSE:Factory/.perl-App-perlbrew.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-App-perlbrew"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-App-perlbrew/perl-App-perlbrew.changes 2016-04-12 19:33:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perl-App-perlbrew.new/perl-App-perlbrew.changes 2016-06-25 02:24:08.000000000 +0200
@@ -1,0 +2,11 @@
+Thu Jun 23 05:51:51 UTC 2016 - coolo@suse.com
+
+- updated to 0.76
+ see /usr/share/doc/packages/perl-App-perlbrew/Changes
+
+ 0.76: # 2016-06-21T23:02:44+0200
+ - Start supporting cperl installation.
+ - cperl releases are sourced from: https://github.com/perl11/cperl/releases
+ - Deal with a regex warning when testing perlbrew with perl-5.25. See RT: https://rt.cpan.org/Ticket/Display.html?id=114871
+
+-------------------------------------------------------------------
Old:
----
App-perlbrew-0.75.tar.gz
New:
----
App-perlbrew-0.76.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-App-perlbrew.spec ++++++
--- /var/tmp/diff_new_pack.x5x2la/_old 2016-06-25 02:24:09.000000000 +0200
+++ /var/tmp/diff_new_pack.x5x2la/_new 2016-06-25 02:24:09.000000000 +0200
@@ -17,7 +17,7 @@
Name: perl-App-perlbrew
-Version: 0.75
+Version: 0.76
Release: 0
%define cpan_name App-perlbrew
Summary: Manage perl installations in your C<$HOME>
@@ -30,14 +30,14 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
-BuildRequires: perl(CPAN::Perl::Releases) >= 1.94
-BuildRequires: perl(Capture::Tiny) >= 0.25
-BuildRequires: perl(Devel::PatchPerl) >= 1.28
+BuildRequires: perl(CPAN::Perl::Releases) >= 2.60
+BuildRequires: perl(Capture::Tiny) >= 0.36
+BuildRequires: perl(Devel::PatchPerl) >= 1.40
BuildRequires: perl(File::Temp) >= 0.2304
BuildRequires: perl(IO::All) >= 0.51
BuildRequires: perl(Path::Class) >= 0.33
-BuildRequires: perl(Pod::Parser) >= 1.62
-BuildRequires: perl(Pod::Usage) >= 1.64
+BuildRequires: perl(Pod::Parser) >= 1.63
+BuildRequires: perl(Pod::Usage) >= 1.68
BuildRequires: perl(Test::Exception) >= 0.320000
BuildRequires: perl(Test::More) >= 1.001002
BuildRequires: perl(Test::NoWarnings) >= 1.04
@@ -45,11 +45,11 @@
BuildRequires: perl(Test::Simple) >= 1.001002
BuildRequires: perl(Test::Spec) >= 0.47
BuildRequires: perl(local::lib) >= 2.000014
-Requires: perl(CPAN::Perl::Releases) >= 1.94
-Requires: perl(Capture::Tiny) >= 0.25
-Requires: perl(Devel::PatchPerl) >= 1.28
-Requires: perl(Pod::Parser) >= 1.62
-Requires: perl(Pod::Usage) >= 1.64
+Requires: perl(CPAN::Perl::Releases) >= 2.60
+Requires: perl(Capture::Tiny) >= 0.36
+Requires: perl(Devel::PatchPerl) >= 1.40
+Requires: perl(Pod::Parser) >= 1.63
+Requires: perl(Pod::Usage) >= 1.68
Requires: perl(local::lib) >= 2.000014
%{perl_requires}
# MANUAL BEGIN
++++++ App-perlbrew-0.75.tar.gz -> App-perlbrew-0.76.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.75/Changes new/App-perlbrew-0.76/Changes
--- old/App-perlbrew-0.75/Changes 2016-03-16 23:51:16.000000000 +0100
+++ new/App-perlbrew-0.76/Changes 2016-06-21 23:05:27.000000000 +0200
@@ -1,3 +1,8 @@
+0.76: # 2016-06-21T23:02:44+0200
+- Start supporting cperl installation.
+- cperl releases are sourced from: https://github.com/perl11/cperl/releases
+- Deal with a regex warning when testing perlbrew with perl-5.25. See RT: https://rt.cpan.org/Ticket/Display.html?id=114871
+
0.75: # 2016-03-16T23:41:41+0100
- Thanks to our contributors: Dave Cross, Dean Hamstead, Mark J. Reed, Mohammed El-Afifi,
- Add '--no-patchperl' install option for skip running patchperl.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.75/MANIFEST new/App-perlbrew-0.76/MANIFEST
--- old/App-perlbrew-0.75/MANIFEST 2016-03-16 23:50:28.000000000 +0100
+++ new/App-perlbrew-0.76/MANIFEST 2016-06-21 23:04:48.000000000 +0200
@@ -42,6 +42,11 @@
t/13.perl_release.t
t/14.perl_version_parsing.t
t/15.no-reuse-build-dir.t
+t/16.release-detail.t
+t/17.release-detail-cperl-local.t
+t/17.release-detail-cperl-remote.t
+t/18.release-detail-perl-local.t
+t/18.release-detail-perl-remote.t
t/command-alias.t
t/command-available.t
t/command-compgen.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.75/META.yml new/App-perlbrew-0.76/META.yml
--- old/App-perlbrew-0.75/META.yml 2016-03-16 23:52:14.000000000 +0100
+++ new/App-perlbrew-0.76/META.yml 2016-06-21 23:06:00.000000000 +0200
@@ -29,14 +29,14 @@
- inc
- t
requires:
- CPAN::Perl::Releases: '1.94'
- Capture::Tiny: '0.25'
- Devel::PatchPerl: '1.28'
- Pod::Parser: '1.62'
- Pod::Usage: '1.64'
+ CPAN::Perl::Releases: '2.60'
+ Capture::Tiny: '0.36'
+ Devel::PatchPerl: '1.40'
+ Pod::Parser: '1.63'
+ Pod::Usage: '1.68'
local::lib: '2.000014'
perl: 5.8.0
resources:
license: http://opensource.org/licenses/mit-license.php
repository: git://github.com/gugod/App-perlbrew.git
-version: '0.75'
+version: '0.76'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.75/Makefile.PL new/App-perlbrew-0.76/Makefile.PL
--- old/App-perlbrew-0.75/Makefile.PL 2016-03-16 23:51:06.000000000 +0100
+++ new/App-perlbrew-0.76/Makefile.PL 2016-06-21 23:05:21.000000000 +0200
@@ -9,11 +9,11 @@
repository 'git://github.com/gugod/App-perlbrew.git';
requires
- 'CPAN::Perl::Releases' => '1.94',
- 'Capture::Tiny' => '0.25',
- 'Devel::PatchPerl' => '1.28',
- 'Pod::Parser' => '1.62',
- 'Pod::Usage' => '1.64',
+ 'CPAN::Perl::Releases' => '2.60',
+ 'Capture::Tiny' => '0.36',
+ 'Devel::PatchPerl' => '1.40',
+ 'Pod::Parser' => '1.63',
+ 'Pod::Usage' => '1.68',
'local::lib' => '2.000014';
test_requires
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.75/README new/App-perlbrew-0.76/README
--- old/App-perlbrew-0.75/README 2016-03-16 23:51:06.000000000 +0100
+++ new/App-perlbrew-0.76/README 2016-06-21 23:05:21.000000000 +0200
@@ -5,7 +5,7 @@
## SYNOPSIS
# Installation
- curl -L http://install.perlbrew.pl | bash
+ curl -L https://install.perlbrew.pl | bash
# Initialize
perlbrew init
@@ -51,7 +51,7 @@
For the documentation of perlbrew usage see [perlbrew](https://metacpan.org/pod/perlbrew) command
on [MetaCPAN](https://metacpan.org/), or by running `perlbrew help`,
-or by visiting [perlbrew's official website](http://perlbrew.pl/). The following documentation
+or by visiting [perlbrew's official website](https://perlbrew.pl/). The following documentation
features the API of `App::perlbrew` module, and may not be remotely
close to what your want to read.
@@ -60,11 +60,11 @@
It is the simplest to use the perlbrew installer, just paste this statement to
your terminal:
- curl -L http://install.perlbrew.pl | bash
+ curl -L https://install.perlbrew.pl | bash
Or this one, if you have `fetch` (default on FreeBSD):
- fetch -o- http://install.perlbrew.pl | sh
+ fetch -o- https://install.perlbrew.pl | sh
After that, `perlbrew` installs itself to `~/perl5/perlbrew/bin`, and you
should follow the instruction on screen to modify your shell rc file to put it
@@ -84,7 +84,7 @@
environment variable before running the installer:
export PERLBREW_ROOT=/opt/perl5
- curl -L http://install.perlbrew.pl | bash
+ curl -L https://install.perlbrew.pl | bash
As a result, different users on the same machine can all share the same perlbrew
root directory (although only original user that made the installation would
@@ -126,8 +126,8 @@
## PROJECT DEVELOPMENT
-[perlbrew project](http://perlbrew.pl/) uses github
-[http://github.com/gugod/App-perlbrew/issues](http://github.com/gugod/App-perlbrew/issues) and RT
+[perlbrew project](https://perlbrew.pl/) uses github
+[https://github.com/gugod/App-perlbrew/issues](https://github.com/gugod/App-perlbrew/issues) and RT
https://rt.cpan.org/Dist/Display.html?Queue=App-perlbrew for issue
tracking. Issues sent to these two systems will eventually be reviewed
and handled.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.75/README.md new/App-perlbrew-0.76/README.md
--- old/App-perlbrew-0.75/README.md 2016-03-16 23:51:06.000000000 +0100
+++ new/App-perlbrew-0.76/README.md 2016-06-21 23:05:21.000000000 +0200
@@ -5,7 +5,7 @@
## SYNOPSIS
# Installation
- curl -L http://install.perlbrew.pl | bash
+ curl -L https://install.perlbrew.pl | bash
# Initialize
perlbrew init
@@ -51,7 +51,7 @@
For the documentation of perlbrew usage see [perlbrew](https://metacpan.org/pod/perlbrew) command
on [MetaCPAN](https://metacpan.org/), or by running `perlbrew help`,
-or by visiting [perlbrew's official website](http://perlbrew.pl/). The following documentation
+or by visiting [perlbrew's official website](https://perlbrew.pl/). The following documentation
features the API of `App::perlbrew` module, and may not be remotely
close to what your want to read.
@@ -60,11 +60,11 @@
It is the simplest to use the perlbrew installer, just paste this statement to
your terminal:
- curl -L http://install.perlbrew.pl | bash
+ curl -L https://install.perlbrew.pl | bash
Or this one, if you have `fetch` (default on FreeBSD):
- fetch -o- http://install.perlbrew.pl | sh
+ fetch -o- https://install.perlbrew.pl | sh
After that, `perlbrew` installs itself to `~/perl5/perlbrew/bin`, and you
should follow the instruction on screen to modify your shell rc file to put it
@@ -84,7 +84,7 @@
environment variable before running the installer:
export PERLBREW_ROOT=/opt/perl5
- curl -L http://install.perlbrew.pl | bash
+ curl -L https://install.perlbrew.pl | bash
As a result, different users on the same machine can all share the same perlbrew
root directory (although only original user that made the installation would
@@ -126,8 +126,8 @@
## PROJECT DEVELOPMENT
-[perlbrew project](http://perlbrew.pl/) uses github
-[http://github.com/gugod/App-perlbrew/issues](http://github.com/gugod/App-perlbrew/issues) and RT
+[perlbrew project](https://perlbrew.pl/) uses github
+[https://github.com/gugod/App-perlbrew/issues](https://github.com/gugod/App-perlbrew/issues) and RT
https://rt.cpan.org/Dist/Display.html?Queue=App-perlbrew for issue
tracking. Issues sent to these two systems will eventually be reviewed
and handled.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.75/bin/perlbrew new/App-perlbrew-0.76/bin/perlbrew
--- old/App-perlbrew-0.75/bin/perlbrew 2016-03-16 23:51:06.000000000 +0100
+++ new/App-perlbrew-0.76/bin/perlbrew 2016-06-21 23:05:21.000000000 +0200
@@ -34,7 +34,7 @@
off Turn off perlbrew in current shell
switch Permanently use the specified perl as default
switch-off Permanently turn off perlbrew (revert to system perl)
- exec exec programs with specified perl enviroments.
+ exec exec programs with specified perl environments.
self-install Install perlbrew itself under PERLBREW_ROOT/bin
self-upgrade Upgrade perlbrew itself.
@@ -173,6 +173,14 @@
Add '--mirror $URL' to specify the URL of mirror site.
+=item B<install> [options] cperl-<version>
+
+Install the cperl distribution released from:
+
+ https://github.com/perl11/cperl/releases
+
+See http://perl11.org/cperl/ for mor information about cperl distribution.
+
=item B<install> [options] perl-stable
=item B<install> [options] stable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.75/lib/App/perlbrew.pm new/App-perlbrew-0.76/lib/App/perlbrew.pm
--- old/App-perlbrew-0.75/lib/App/perlbrew.pm 2016-03-16 23:51:16.000000000 +0100
+++ new/App-perlbrew-0.76/lib/App/perlbrew.pm 2016-06-21 23:05:27.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
use 5.008;
-our $VERSION = "0.75";
+our $VERSION = "0.76";
use Config;
BEGIN {
@@ -21,6 +21,7 @@
use File::Glob 'bsd_glob';
use Getopt::Long ();
+use CPAN::Perl::Releases;
sub min(@) {
my $m = $_[0];
@@ -190,10 +191,18 @@
die "ERROR: The download target < $path > already exists.\n";
}
+ my $partial = 0;
+ local $SIG{TERM} = local $SIG{INT} = sub { $partial++ };
+
my $download_command = http_user_agent_command( download => { url => $url, output => $path } );
my $status = system($download_command);
+ if ($partial) {
+ unlink($path) if -f $path;
+ return "ERROR: Interrupted.";
+ }
unless ($status == 0) {
+ unlink($path) if -f $path;
return "ERROR: Failed to execute the command\n\n\t$download_command\n\nReason:\n\n\t$?";
}
return 0;
@@ -508,12 +517,9 @@
my @commands = sort {
$a->[1] <=> $b->[1]
- } grep {
- defined
} map {
my $d = editdist($_, $command);
-
- ($d < $SIMILAR_DISTANCE) ? [ $_, $d ] : undef
+ (($d < $SIMILAR_DISTANCE) ? [ $_, $d ] : ())
} $self->commands;
if(@commands) {
@@ -716,9 +722,18 @@
sub perl_release {
my ($self, $version) = @_;
-
my $mirror = $self->cpan_mirror();
+ # try CPAN::Perl::Releases
+ my $tarballs = CPAN::Perl::Releases::perl_tarballs($version);
+
+ my $x = (values %$tarballs)[0];
+ if ($x) {
+ my $dist_tarball = (split("/", $x))[-1];
+ my $dist_tarball_url = "$mirror/authors/id/$x";
+ return ($dist_tarball, $dist_tarball_url);
+ }
+
# try src/5.0 symlinks, either perl-5.X or perl5.X; favor .tar.bz2 over .tar.gz
my $index = http_get("http://www.cpan.org/src/5.0/");
if ($index) {
@@ -732,16 +747,79 @@
}
}
- # try CPAN::Perl::Releases
- require CPAN::Perl::Releases;
- my $tarballs = CPAN::Perl::Releases::perl_tarballs($version);
+ my $html = http_get("http://search.cpan.org/dist/perl-${version}", { 'Cookie' => "cpan=$mirror" });
- my $x = (values %$tarballs)[0];
+ unless ($html) {
+ die "ERROR: Failed to locate perl-${version} tarball.";
+ }
- if ($x) {
- my $dist_tarball = (split("/", $x))[-1];
- my $dist_tarball_url = "$mirror/authors/id/$x";
- return ($dist_tarball, $dist_tarball_url);
+ my ($dist_path, $dist_tarball) =
+ $html =~ m[<a href="(/CPAN/authors/id/.+/(perl-${version}.tar.(gz|bz2)))">Download</a>];
+ die "ERROR: Cannot find the tarball for perl-$version\n"
+ if !$dist_path and !$dist_tarball;
+ my $dist_tarball_url = "http://search.cpan.org${dist_path}";
+ return ($dist_tarball, $dist_tarball_url);
+}
+
+sub cperl_release {
+ my ($self, $version) = @_;
+ my %url = (
+ "5.22.3" => "https://github.com/perl11/cperl/releases/download/cperl-5.22.3/cperl-5.22.3....",
+ "5.22.2" => "https://github.com/perl11/cperl/releases/download/cperl-5.22.2/cperl-5.22.2....",
+ "5.24.0-RC1" => "https://github.com/perl11/cperl/releases/download/cperl-5.24.0-RC1/cperl-5.2...",
+ );
+ # my %digest => {
+ # "5.22.3" => "bcf494a6b12643fa5e803f8e0d9cef26312b88fc",
+ # "5.22.2" => "8615964b0a519cf70d69a155b497de98e6a500d0",
+ # };
+
+ my $dist_tarball_url = $url{$version}or die "ERROR: Cannot find the tarball for cperl-$version\n";
+ my $dist_tarball = "cperl-${version}.tar.gz";
+ return ($dist_tarball, $dist_tarball_url);
+}
+
+sub release_detail_perl_local {
+ my ($self, $dist, $rd) = @_;
+ $rd ||= {};
+ my $error = 1;
+ my $mirror = $self->cpan_mirror();
+ my $tarballs = CPAN::Perl::Releases::perl_tarballs($rd->{version});
+ if (keys %$tarballs) {
+ for ("tar.bz2", "tar.gz") {
+ if (my $x = $tarballs->{$_}) {
+ $rd->{tarball_name} = (split("/", $x))[-1];
+ $rd->{tarball_url} = "$mirror/authors/id/$x";
+ $error = 0;
+ last;
+ }
+ }
+ }
+ return ($error, $rd);
+}
+
+sub release_detail_perl_remote {
+ my ($self, $dist, $rd) = @_;
+ $rd ||= {};
+ my $error = 1;
+ my $mirror = $self->cpan_mirror();
+
+ my $version = $rd->{version};
+
+ # try src/5.0 symlinks, either perl-5.X or perl5.X; favor .tar.bz2 over .tar.gz
+ my $index = http_get("http://www.cpan.org/src/5.0/");
+ if ($index) {
+ for my $prefix ( "perl-", "perl" ){
+ for my $suffix ( ".tar.bz2", ".tar.gz" ) {
+ my $dist_tarball = "$prefix$version$suffix";
+ my $dist_tarball_url = "$mirror/src/5.0/$dist_tarball";
+ if ( $index =~ /href\s*=\s*"\Q$dist_tarball\E"/ms ) {
+ $rd->{tarball_url} = $dist_tarball_url;
+ $rd->{tarball_name} = $dist_tarball;
+ $error = 0;
+ return ($error, $rd);
+ }
+ }
+ }
}
my $html = http_get("http://search.cpan.org/dist/perl-${version}", { 'Cookie' => "cpan=$mirror" });
@@ -755,7 +833,72 @@
die "ERROR: Cannot find the tarball for perl-$version\n"
if !$dist_path and !$dist_tarball;
my $dist_tarball_url = "http://search.cpan.org${dist_path}";
- return ($dist_tarball, $dist_tarball_url);
+
+ $rd->{tarball_name} = $dist_tarball;
+ $rd->{tarball_url} = $dist_tarball_url;
+ $error = 0;
+
+ return ($error, $rd);
+}
+
+sub release_detail_cperl_local {
+ my ($self, $dist, $rd) = @_;
+ $rd ||= {};
+ my %url = (
+ "cperl-5.22.3" => "https://github.com/perl11/cperl/releases/download/cperl-5.22.3/cperl-5.22.3....",
+ "cperl-5.22.2" => "https://github.com/perl11/cperl/releases/download/cperl-5.22.2/cperl-5.22.2....",
+ "cperl-5.24.0-RC1" => "https://github.com/perl11/cperl/releases/download/cperl-5.24.0-RC1/cperl-5.2...",
+ );
+
+ my $error = 1;
+ if ( my $u = $url{$dist} ) {
+ $rd->{tarball_name} = "${dist}.tar.gz";
+ $rd->{tarball_url} = $u;
+ $error = 0;
+ }
+ return ($error, $rd);
+}
+
+sub release_detail_cperl_remote {
+ my ($self, $dist, $rd) = @_;
+ $rd ||= {};
+ my $expect_href = "/perl11/cperl/releases/download/${dist}/${dist}.tar.gz";
+ my $expect_url = "https://github.com/perl11/cperl/releases/download/${dist}/${dist}.tar.gz";
+ my $html = http_get('https://github.com/perl11/cperl/releases');
+ my $error = 1;
+ if ($html =~ m{ {tarball_name} = "${dist}.tar.gz";
+ $rd->{tarball_url} = $expect_url;
+ $error = 0;
+ }
+ return ($error, $rd);
+}
+
+sub release_detail {
+ my ($self, $dist) = @_;
+ my ($dist_type, $dist_version, $tarball_name, $tarball_url);
+
+ ($dist_type, $dist_version) = $dist =~ /^ (?: (c?perl) -? )? ( [\d._]+ (?:-RC\d+)? |git|stable|blead)$/x;
+ $dist_type = "perl" if $dist_version && !$dist_type;
+
+ my $rd = {
+ type => $dist_type,
+ version => $dist_version,
+ tarball_url => undef,
+ tarball_name => undef,
+ };
+
+ my $m_local = "release_detail_${dist_type}_local";
+ my $m_remote = "release_detail_${dist_type}_remote";
+
+ my ($error) = $self->$m_local($dist, $rd);
+ ($error) = $self->$m_remote($dist, $rd) if $error;
+
+ if ($error) {
+ die "ERROR: Fail to get the tarball URL for dist: $dist\n";
+ }
+
+ return $rd;
}
sub run_command_init {
@@ -952,6 +1095,11 @@
# Note that this is incorrect for blead.
my $extracted_dir = "@{[ $self->root ]}/build/$dist_tarball_basename";
+ # cperl tarball contains a dir name like: cperl-cperl-5.22.1
+ if ($dist_tarball_basename =~ /^cperl-/) {
+ $extracted_dir = "@{[ $self->root ]}/build/${dist_tarball_basename}";
+ }
+
# Was broken on Solaris, where GNU tar is probably
# installed as 'gtar' - RT #61042
my $tarx =
@@ -1028,7 +1176,13 @@
sub do_install_release {
my ($self, $dist, $dist_version) = @_;
- my ($dist_tarball, $dist_tarball_url) = $self->perl_release($dist_version);
+ my $rd = $self->release_detail($dist);
+ my $dist_type = $rd->{type};
+
+ die "\"$dist\" does not look like a perl distribution name. " unless $dist_type && $dist_version =~ /^\d\./;
+
+ my $dist_tarball = $rd->{tarball_name};
+ my $dist_tarball_url = $rd->{tarball_url};
my $dist_tarball_path = joinpath($self->root, "dists", $dist_tarball);
if (-f $dist_tarball_path) {
@@ -1056,20 +1210,23 @@
$self->{dist_name} = $dist; # for help msg generation, set to non
# normalized name
- if ($dist =~ /^(?:perl-?)?([\d._]+(?:-RC\d+)?|git|stable|blead)$/) {
- my $version = ($1 eq 'stable' ? $self->resolve_stable_version : $1);
- $dist = "perl-$version"; # normalize dist name
+ my ($dist_type, $dist_version);
+ if ( ($dist_type, $dist_version) = $dist =~ /^(?:(c?perl)-?)?([\d._]+(?:-RC\d+)?|git|stable|blead)$/ ) {
+ my $dist_version = ($dist_version eq 'stable' ? $self->resolve_stable_version : $2);
+ $dist_version = $self->resolve_stable_version if $dist_version eq 'stable';
+ $dist_type ||= "perl";
+ $dist = "${dist_type}-${dist_version}"; # normalize dist name
my $installation_name = ($self->{as} || $dist) . $self->{variation} . $self->{append};
if (not $self->{force} and $self->is_installed( $installation_name )) {
die "\nABORT: $installation_name is already installed.\n\n";
}
- if ($version eq 'blead') {
+ if ( $dist_type eq 'perl' && $dist_version eq 'blead') {
$self->do_install_blead($dist);
}
else {
- $self->do_install_release( $dist, $version );
+ $self->do_install_release( $dist, $dist_version );
}
}
@@ -1203,11 +1360,10 @@
$dist = $self->resolve_stable_version
if $dist && $dist eq 'stable';
- my ($dist_version) = $dist =~ /^ (?:perl-?)? (.*) $/xs;
-
- die "\"$dist\" does not look like a perl distribution name. " unless $dist_version =~ /^\d\./;
+ my $rd = $self->release_detail($dist);
- my ($dist_tarball, $dist_tarball_url) = $self->perl_release($dist_version);
+ my $dist_tarball = $rd->{tarball_name};
+ my $dist_tarball_url = $rd->{tarball_url};
my $dist_tarball_path = joinpath($self->root, "dists", $dist_tarball);
if (-f $dist_tarball_path && !$self->{force}) {
@@ -1278,9 +1434,10 @@
my $dist_version;
my $installation_name;
- if (File::Basename::basename($dist_tarball_path) =~ m{perl-?(5.+)\.tar\.(gz|bz2)\Z}) {
- $dist_version = $1;
- $installation_name = "perl-${dist_version}";
+ if (File::Basename::basename($dist_tarball_path) =~ m{(c?perl)-?(5.+)\.tar\.(gz|bz2)\Z}) {
+ my $perl_variant = $1;
+ $dist_version = $2;
+ $installation_name = "${perl_variant}-${dist_version}";
}
unless ($dist_version && $installation_name) {
@@ -1297,6 +1454,7 @@
my $variation = $self->{variation};
my $append = $self->{append};
+ my $looks_like_we_are_installing_cperl = $dist_extracted_dir =~ /\/ cperl- /x;
$self->{dist_extracted_dir} = $dist_extracted_dir;
$self->{log_file} = joinpath($self->root, "build.${installation_name}${variation}${append}.log");
@@ -1335,14 +1493,16 @@
unshift @d_options, qq(prefix=$perlpath);
push @d_options, "usedevel" if $dist_version =~ /5\.\d[13579]|git|blead/;
- unless (grep { /eval:scriptdir=/} @a_options) {
- push @a_options, "'eval:scriptdir=${perlpath}/bin'";
- }
+ push @d_options, "usecperl" if $looks_like_we_are_installing_cperl;
my $version = perl_version_to_integer($dist_version);
if (defined $version and $version < perl_version_to_integer( '5.6.0' ) ) {
# ancient perls do not support -A for Configure
@a_options = ();
+ } else {
+ unless (grep { /eval:scriptdir=/} @a_options) {
+ push @a_options, "'eval:scriptdir=${perlpath}/bin'";
+ }
}
print "Installing $dist_extracted_dir into " . $self->path_with_tilde("@{[ $self->root ]}/perls/$installation_name") . "\n\n";
@@ -1357,7 +1517,7 @@
"cd $dist_extracted_dir",
"rm -f config.sh Policy.sh",
);
- push @preconfigure_commands, $patchperl unless $self->{"no-patchperl"};
+ push @preconfigure_commands, $patchperl unless $self->{"no-patchperl"} || $looks_like_we_are_installing_cperl;
my $configure_flags = $self->env("PERLBREW_CONFIGURE_FLAGS") || '-de';
@@ -1424,12 +1584,9 @@
if ( $sitecustomize ) {
my $capture = $self->do_capture("$newperl -V:sitelib");
my ($sitelib) = $capture =~ m/sitelib='([^']*)';/;
- # This should probably all use File::Path
- if ($destdir) {
- $sitelib = $destdir . $sitelib
- }
+ $sitelib = $destdir . $sitelib if $destdir;
mkpath($sitelib) unless -d $sitelib;
- my $target = "$sitelib/sitecustomize.pl";
+ my $target = joinpath($sitelib, "sitecustomize.pl");
open my $dst, ">", $target
or die "Could not open '$target' for writing: $!\n";
open my $src, "<", $sitecustomize
@@ -1881,7 +2038,9 @@
for my $perl (@perls) {
for my $executable (<$root/perls/$perl/bin/*>) {
my ($name, $version) = $executable =~ m/bin\/(.+?)(5\.\d.*)?$/;
- system("ln -fs $executable $root/perls/$perl/bin/$name") if $version;
+ next unless $version;
+ system("ln -fs $executable $root/perls/$perl/bin/$name");
+ system("ln -fs $executable $root/perls/$perl/bin/perl") if $name eq "cperl";
}
}
}
@@ -2843,7 +3002,7 @@
=head2 SYNOPSIS
# Installation
- curl -L http://install.perlbrew.pl | bash
+ curl -L https://install.perlbrew.pl | bash
# Initialize
perlbrew init
@@ -2889,7 +3048,7 @@
For the documentation of perlbrew usage see L<perlbrew> command
on L