Hello community, here is the log from the commit of package perl-App-perlbrew for openSUSE:Factory checked in at 2015-12-03 13:30:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2015-04-21 10:51:40.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-App-perlbrew.new/perl-App-perlbrew.changes 2015-12-03 13:31:00.000000000 +0100 @@ -1,0 +2,17 @@ +Sat Nov 28 09:23:26 UTC 2015 - co...@suse.com + +- updated to 0.74 + see /usr/share/doc/packages/perl-App-perlbrew/Changes + + 0.74: # 2015-11-24T20:55:02+0100 + - A big thanks for our contributers: Aristotle Pagaltzis, Dave Jacoby, Dylan Cali, John Krull, Kevin Johnson, Nathan Day, Paul Cochrane, Tudor Constantin, Yanick Champoux, tm604 + - support PERLBREW_LIB_PREFIX. https://github.com/gugod/App-perlbrew/commit/c29813cd4633683bd049964178a9ac96647986bc + - prefer https and remove insecure download cli flags. https://github.com/gugod/App-perlbrew/commit/f49a908c1702942006de4654107edf77a48ead52 + - perlbrew now dies when switching to/use a lib that does not exist. https://github.com/gugod/App-perlbrew/issues/432 + - RHEL vendorlib fix https://github.com/gugod/App-perlbrew/issues/409 + - improvements with fish integration. + - unbreak when running with perl 5.14 or earlier: "list" command now correctly display lib names. + - retaining flags in upgrade-perl. https://github.com/gugod/App-perlbrew/commit/b8d466670bbfc8e214a9d3ff2e889a4860060d84 + - variour document clean up and improvements. + +------------------------------------------------------------------- Old: ---- App-perlbrew-0.73.tar.gz New: ---- App-perlbrew-0.74.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-App-perlbrew.spec ++++++ --- /var/tmp/diff_new_pack.1K7F8b/_old 2015-12-03 13:31:01.000000000 +0100 +++ /var/tmp/diff_new_pack.1K7F8b/_new 2015-12-03 13:31:01.000000000 +0100 @@ -17,10 +17,10 @@ Name: perl-App-perlbrew -Version: 0.73 +Version: 0.74 Release: 0 %define cpan_name App-perlbrew -Summary: Manage perl installations in your $HOME +Summary: Manage perl installations in your C<$HOME> License: MIT Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/App-perlbrew/ @@ -38,7 +38,7 @@ BuildRequires: perl(Path::Class) >= 0.33 BuildRequires: perl(Pod::Parser) >= 1.62 BuildRequires: perl(Pod::Usage) >= 1.64 -BuildRequires: perl(Test::Exception) >= 0.32 +BuildRequires: perl(Test::Exception) >= 0.320000 BuildRequires: perl(Test::More) >= 1.001002 BuildRequires: perl(Test::NoWarnings) >= 1.04 BuildRequires: perl(Test::Output) >= 1.03 @@ -90,6 +90,6 @@ %files -f %{name}.files %defattr(-,root,root,755) -%doc Changes doc LICENSE README +%doc Changes doc LICENSE README README.md %changelog ++++++ App-perlbrew-0.73.tar.gz -> App-perlbrew-0.74.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/Changes new/App-perlbrew-0.74/Changes --- old/App-perlbrew-0.73/Changes 2015-02-01 10:08:01.000000000 +0100 +++ new/App-perlbrew-0.74/Changes 2015-11-24 21:17:25.000000000 +0100 @@ -1,3 +1,14 @@ +0.74: # 2015-11-24T20:55:02+0100 +- A big thanks for our contributers: Aristotle Pagaltzis, Dave Jacoby, Dylan Cali, John Krull, Kevin Johnson, Nathan Day, Paul Cochrane, Tudor Constantin, Yanick Champoux, tm604 +- support PERLBREW_LIB_PREFIX. https://github.com/gugod/App-perlbrew/commit/c29813cd4633683bd049964178a9ac96647986bc +- prefer https and remove insecure download cli flags. https://github.com/gugod/App-perlbrew/commit/f49a908c1702942006de4654107edf77a48ead52 +- perlbrew now dies when switching to/use a lib that does not exist. https://github.com/gugod/App-perlbrew/issues/432 +- RHEL vendorlib fix https://github.com/gugod/App-perlbrew/issues/409 +- improvements with fish integration. +- unbreak when running with perl 5.14 or earlier: "list" command now correctly display lib names. +- retaining flags in upgrade-perl. https://github.com/gugod/App-perlbrew/commit/b8d466670bbfc8e214a9d3ff2e889a4860060d84 +- variour document clean up and improvements. + 0.73: # 2015-02-01T09:59:45+0100 - fixes and improvements from Manuel Streuhofer, Aristotle Pagaltzis, Sebastian Willert, David Hand, Eric Enns, Peter Roberts, Thomas Sibley, Ivan Baidakou, thanks! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/MANIFEST new/App-perlbrew-0.74/MANIFEST --- old/App-perlbrew-0.73/MANIFEST 2014-09-02 13:42:20.000000000 +0200 +++ new/App-perlbrew-0.74/MANIFEST 2015-11-24 21:16:07.000000000 +0100 @@ -4,6 +4,7 @@ doc/notes.org doc/PERL-LICENSE inc/Module/Install.pm +inc/Module/Install/AuthorRequires.pm inc/Module/Install/Base.pm inc/Module/Install/Can.pm inc/Module/Install/Fetch.pm @@ -18,6 +19,7 @@ MANIFEST This list of files META.yml README +README.md t/00.load.t t/01.options.t t/02.format_perl_version.t @@ -31,7 +33,6 @@ t/08.error_install.t t/08.error_install_blead.t t/08.error_install_cpanm.t -t/08.error_mirror.t t/09.exit_status.t t/10.resolve.t t/11.editdist.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/META.yml new/App-perlbrew-0.74/META.yml --- old/App-perlbrew-0.73/META.yml 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/META.yml 2015-11-24 21:19:01.000000000 +0100 @@ -1,5 +1,5 @@ --- -abstract: 'Manage perl installations in your $HOME' +abstract: ~ author: - 'Kang-min Liu C<< <gu...@gugod.org> >>' build_requires: @@ -17,7 +17,7 @@ ExtUtils::MakeMaker: 6.59 distribution_type: module dynamic_config: 1 -generated_by: 'Module::Install version 1.12' +generated_by: 'Module::Install version 1.16' license: mit meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -39,4 +39,4 @@ resources: license: http://opensource.org/licenses/mit-license.php repository: git://github.com/gugod/App-perlbrew.git -version: '0.73' +version: '0.74' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/Makefile.PL new/App-perlbrew-0.74/Makefile.PL --- old/App-perlbrew-0.73/Makefile.PL 2015-01-14 08:53:55.000000000 +0100 +++ new/App-perlbrew-0.74/Makefile.PL 2015-11-24 21:17:25.000000000 +0100 @@ -26,6 +26,9 @@ 'Test::Simple' => '1.001002', 'Test::Spec' => '0.47'; +author_requires + 'Pod::Markdown' => '2.002'; + install_script 'bin/perlbrew'; tests 't/*.t'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/README new/App-perlbrew-0.74/README --- old/App-perlbrew-0.73/README 2015-01-14 08:53:55.000000000 +0100 +++ new/App-perlbrew-0.74/README 2015-11-24 21:17:25.000000000 +0100 @@ -1,26 +1,65 @@ Name: App::perlbrew - Manage perl installations in your $HOME -Description: + Synopsis: + # Installation + curl -L http://install.perlbrew.pl | bash + + # Initialize + perlbrew init + + # Pick a preferred CPAN mirror + perlbrew mirror + + # See what is available + perlbrew available + + # Install some Perls + perlbrew install 5.18.2 + perlbrew install perl-5.8.1 + perlbrew install perl-5.19.9 + + # See what were installed + perlbrew list + + # Swith to an installation and set it as default + perlbrew switch perl-5.18.2 + + # Temporarily use another version only in current shell. + perlbrew use perl-5.8.1 + perl -v + + # Or turn it off completely. Useful when you messed up too deep. + # Or want to go back to the system Perl. + perlbrew off + + # Use 'switch' command to turn it back on. + perlbrew switch perl-5.12.2 + + # Exec something with all perlbrew-ed perls + perlbrew exec -- perl -E 'say $]' + + Description: perlbrew is a program to automate the building and installation of perl in an easy way. It provides multiple isolated perl environments, and a mechanism for you to switch between them. Everything are installed unter "~/perl5/perlbrew". You then need to include a bashrc/cshrc provided by perlbrew to tweak the PATH for you. - You then can benefit from not having to run 'sudo' commands to install - cpan modules because those are installed inside your HOME too. + You then can benefit from not having to run "sudo" commands to install + cpan modules because those are installed inside your "HOME" too. - For the documentation of perlbrew usage see perlbrew command on CPAN, or - by running "perlbrew help". The following documentation features the API - of "App::perlbrew" module, and may not be remotely close to what your - want to read. + For the documentation of perlbrew usage see 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 features the API of "App::perlbrew" module, and may not be + remotely close to what your want to read. -Installation: + Installation: It is the simplest to use the perlbrew installer, just paste this statement to your terminal: - curl -kL http://install.perlbrew.pl | bash + curl -L http://install.perlbrew.pl | bash Or this one, if you have "fetch" (default on FreeBSD): @@ -34,18 +73,18 @@ run with system perl. The minimum system perl version requirement is 5.8.0, which should be good enough for most of the OSes these days. - A fat-packed version of "patchperl" is also installed to + A fat-packed version of patchperl is also installed to "~/perl5/perlbrew/bin", which is required to build old perls. The directory "~/perl5/perlbrew" will contain all install perl executables, libraries, documentations, lib, site_libs. In the documentation, that directory is referred as "perlbrew root". If you - need to set it to somewhere else because, say, your HOME has limited + need to set it to somewhere else because, say, your "HOME" has limited quota, you can do that by setting "PERLBREW_ROOT" environment variable before running the installer: export PERLBREW_ROOT=/opt/perl5 - curl -kL http://install.perlbrew.pl | bash + curl -L http://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 @@ -71,8 +110,26 @@ "/usr/bin", which is not affected by perlbrew "switch" or "use" command. The "self-upgrade" command will not upgrade the perlbrew installed by - cpan command, but it is also easy to upgrade perlbrew by running `cpan - App::perlbrew` again. + cpan command, but it is also easy to upgrade perlbrew by running "cpan + App::perlbrew" again. + + Methods: + (Str) current_perl + Return the "current perl" object attribute string, or, if absent, + the value of "PERLBREW_PERL" environment variable. + + (Str) current_perl (Str) + Set the "current_perl" object attribute to the given value. + + Project Development: + perlbrew project <http://perlbrew.pl/> uses github + <http://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. + + See <https://github.com/gugod/App-perlbrew/contributors> for a list of + project contributors. Configuration: PERLBREW_ROOT @@ -145,23 +202,17 @@ PERLBREW_CPAN_MIRROR The CPAN mirror url of your choice. -Project Development: - perlbrew project uses github - <http://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. - - See <https://github.com/gugod/App-perlbrew/contributors> for a list of - project contributors. - Author: Kang-min Liu "<gu...@gugod.org>" Copyright: - Copyright (c) 2010,2011,2012,2013,2014 Kang-min Liu "<gu...@gugod.org>". + Copyright (c) 2010,2011,2012,2013,2014,2015 Kang-min Liu + "<gu...@gugod.org>". + + Licence: + The MIT License -Disclaimer of Warranty: + Disclaimer of Warranty: BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/README.md new/App-perlbrew-0.74/README.md --- old/App-perlbrew-0.73/README.md 1970-01-01 01:00:00.000000000 +0100 +++ new/App-perlbrew-0.74/README.md 2015-11-24 21:17:25.000000000 +0100 @@ -0,0 +1,174 @@ +# NAME + +[App::perlbrew](https://metacpan.org/pod/App::perlbrew) - Manage perl installations in your `$HOME` + +## SYNOPSIS + + # Installation + curl -L http://install.perlbrew.pl | bash + + # Initialize + perlbrew init + + # Pick a preferred CPAN mirror + perlbrew mirror + + # See what is available + perlbrew available + + # Install some Perls + perlbrew install 5.18.2 + perlbrew install perl-5.8.1 + perlbrew install perl-5.19.9 + + # See what were installed + perlbrew list + + # Swith to an installation and set it as default + perlbrew switch perl-5.18.2 + + # Temporarily use another version only in current shell. + perlbrew use perl-5.8.1 + perl -v + + # Or turn it off completely. Useful when you messed up too deep. + # Or want to go back to the system Perl. + perlbrew off + + # Use 'switch' command to turn it back on. + perlbrew switch perl-5.12.2 + + # Exec something with all perlbrew-ed perls + perlbrew exec -- perl -E 'say $]' + +## DESCRIPTION + +[perlbrew](https://metacpan.org/pod/perlbrew) is a program to automate the building and installation of perl in an +easy way. It provides multiple isolated perl environments, and a mechanism +for you to switch between them. + +Everything are installed unter `~/perl5/perlbrew`. You then need to include a +bashrc/cshrc provided by perlbrew to tweak the PATH for you. You then can +benefit from not having to run `sudo` commands to install +cpan modules because those are installed inside your `HOME` too. + +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 +features the API of `App::perlbrew` module, and may not be remotely +close to what your want to read. + +## INSTALLATION + +It is the simplest to use the perlbrew installer, just paste this statement to +your terminal: + + curl -L http://install.perlbrew.pl | bash + +Or this one, if you have `fetch` (default on FreeBSD): + + fetch -o- http://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 +in your PATH. + +The installed perlbrew command is a standalone executable that can be run with +system perl. The minimum system perl version requirement is 5.8.0, which should +be good enough for most of the OSes these days. + +A fat-packed version of [patchperl](https://metacpan.org/pod/patchperl) is also installed to +`~/perl5/perlbrew/bin`, which is required to build old perls. + +The directory `~/perl5/perlbrew` will contain all install perl executables, +libraries, documentations, lib, site\_libs. In the documentation, that directory +is referred as `perlbrew root`. If you need to set it to somewhere else because, +say, your `HOME` has limited quota, you can do that by setting `PERLBREW_ROOT` +environment variable before running the installer: + + export PERLBREW_ROOT=/opt/perl5 + curl -L http://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 +have the permission to perform perl installations.) + +You may also install perlbrew from CPAN: + + cpan App::perlbrew + +In this case, the perlbrew command is installed as `/usr/bin/perlbrew` or +`/usr/local/bin/perlbrew` or others, depending on the location of your system +perl installation. + +Please make sure not to run this with one of the perls brewed with +perlbrew. It's the best to turn perlbrew off before you run that, if you're +upgrading. + + perlbrew off + cpan App::perlbrew + +You should always use system cpan (like /usr/bin/cpan) to install +`App::perlbrew` because it will be installed under a system PATH like +`/usr/bin`, which is not affected by perlbrew `switch` or `use` command. + +The `self-upgrade` command will not upgrade the perlbrew installed by cpan +command, but it is also easy to upgrade perlbrew by running `cpan App::perlbrew` +again. + +## METHODS + +- (Str) current\_perl + + Return the "current perl" object attribute string, or, if absent, the value of + `PERLBREW_PERL` environment variable. + +- (Str) current\_perl (Str) + + Set the `current_perl` object attribute to the given value. + +## 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 +<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. + +See [https://github.com/gugod/App-perlbrew/contributors](https://github.com/gugod/App-perlbrew/contributors) for a list +of project contributors. + +# AUTHOR + +Kang-min Liu `<gu...@gugod.org>` + +# COPYRIGHT + +Copyright (c) 2010,2011,2012,2013,2014,2015 Kang-min Liu `<gu...@gugod.org>`. + +### LICENCE + +The MIT License + +## DISCLAIMER OF WARRANTY + +BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE +ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH +YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR, OR CORRECTION. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE +LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, +OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE +THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/bin/perlbrew new/App-perlbrew-0.74/bin/perlbrew --- old/App-perlbrew-0.73/bin/perlbrew 2015-02-01 10:07:22.000000000 +0100 +++ new/App-perlbrew-0.74/bin/perlbrew 2015-11-24 21:17:25.000000000 +0100 @@ -44,7 +44,6 @@ install-multiple Install multiple versions and flavors of perl download Download the specified perl distribution tarball. - mirror Pick a preferred mirror site clean Purge tarballs and build directories version Display version help Read more detailed instructions @@ -172,7 +171,7 @@ The specified perl is downloaded from the official CPAN website or from the mirror site configured before. -To configure mirror site, invoke `mirror` command. +Add '--mirror $URL' to specify the URL of mirror site. =item B<install> [options] perl-stable @@ -368,14 +367,6 @@ Delete the given alias. -=head1 COMMAND: MIRROR - -Usage: perlbrew mirror - -Run this if you want to choose a specific CPAN mirror to install the -perls from. It will display a list of mirrors for you to pick -from. Hit 'q' to cancel the selection. - =head1 COMMAND: EXEC Usage: perlbrew exec [--with perl-name[,perl-name...]] <command> <args...> @@ -612,21 +603,6 @@ Note that this installs the I<latest> versions of the Perl modules on the new perl, which are not necessarily the I<same> module versions you had installed previously. -=head1 UPGRADE NOTES - -If you are upgrading C<perlbrew> from 0.16 or earlier versions to a recent -one (0.40-ish), you should do these steps to adjust your perl installations -afterwards (you might need to change the value of PERLBREW_ROOT): - - export PERLBREW_ROOT=${HOME}/perl5/perlbrew - rm -f $PERLBREW_ROOT/perls/current - rm -f `find $PERLBREW_ROOT/perls/bin -type l` - perlbrew symlink-executables - perlbrew init - -Following the instructions on screen to tweak your shell a bit. Then it -should be good. - =head1 SEE ALSO L<App::perlbrew>, L<App::cpanminus>, L<Devel::PatchPerl> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/AuthorRequires.pm new/App-perlbrew-0.74/inc/Module/Install/AuthorRequires.pm --- old/App-perlbrew-0.73/inc/Module/Install/AuthorRequires.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/AuthorRequires.pm 2015-11-24 21:19:01.000000000 +0100 @@ -0,0 +1,38 @@ +#line 1 +use strict; +use warnings; + +package Module::Install::AuthorRequires; + +use base 'Module::Install::Base'; + +# cargo cult +BEGIN { + our $VERSION = '0.02'; + our $ISCORE = 1; +} + +sub author_requires { + my $self = shift; + + return $self->{values}->{author_requires} + unless @_; + + my @added; + while (@_) { + my $mod = shift or last; + my $version = shift || 0; + push @added, [$mod => $version]; + } + + push @{ $self->{values}->{author_requires} }, @added; + $self->admin->author_requires(@added); + + return map { @$_ } @added; +} + +1; + +__END__ + +#line 92 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/Base.pm new/App-perlbrew-0.74/inc/Module/Install/Base.pm --- old/App-perlbrew-0.73/inc/Module/Install/Base.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/Base.pm 2015-11-24 21:19:01.000000000 +0100 @@ -4,7 +4,7 @@ use strict 'vars'; use vars qw{$VERSION}; BEGIN { - $VERSION = '1.12'; + $VERSION = '1.16'; } # Suspend handler for "redefined" warnings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/Can.pm new/App-perlbrew-0.74/inc/Module/Install/Can.pm --- old/App-perlbrew-0.73/inc/Module/Install/Can.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/Can.pm 2015-11-24 21:19:01.000000000 +0100 @@ -8,7 +8,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.12'; + $VERSION = '1.16'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/Fetch.pm new/App-perlbrew-0.74/inc/Module/Install/Fetch.pm --- old/App-perlbrew-0.73/inc/Module/Install/Fetch.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/Fetch.pm 2015-11-24 21:19:01.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.12'; + $VERSION = '1.16'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/Makefile.pm new/App-perlbrew-0.74/inc/Module/Install/Makefile.pm --- old/App-perlbrew-0.73/inc/Module/Install/Makefile.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/Makefile.pm 2015-11-24 21:19:01.000000000 +0100 @@ -8,7 +8,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.12'; + $VERSION = '1.16'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/Metadata.pm new/App-perlbrew-0.74/inc/Module/Install/Metadata.pm --- old/App-perlbrew-0.73/inc/Module/Install/Metadata.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/Metadata.pm 2015-11-24 21:19:01.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.12'; + $VERSION = '1.16'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/Scripts.pm new/App-perlbrew-0.74/inc/Module/Install/Scripts.pm --- old/App-perlbrew-0.73/inc/Module/Install/Scripts.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/Scripts.pm 2015-11-24 21:19:01.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.12'; + $VERSION = '1.16'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/Win32.pm new/App-perlbrew-0.74/inc/Module/Install/Win32.pm --- old/App-perlbrew-0.73/inc/Module/Install/Win32.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/Win32.pm 2015-11-24 21:19:01.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.12'; + $VERSION = '1.16'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install/WriteAll.pm new/App-perlbrew-0.74/inc/Module/Install/WriteAll.pm --- old/App-perlbrew-0.73/inc/Module/Install/WriteAll.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install/WriteAll.pm 2015-11-24 21:19:01.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.12'; + $VERSION = '1.16'; @ISA = qw{Module::Install::Base}; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/inc/Module/Install.pm new/App-perlbrew-0.74/inc/Module/Install.pm --- old/App-perlbrew-0.73/inc/Module/Install.pm 2015-02-01 10:08:35.000000000 +0100 +++ new/App-perlbrew-0.74/inc/Module/Install.pm 2015-11-24 21:19:01.000000000 +0100 @@ -31,7 +31,7 @@ # This is not enforced yet, but will be some time in the next few # releases once we can make sure it won't clash with custom # Module::Install extensions. - $VERSION = '1.12'; + $VERSION = '1.16'; # Storage for the pseudo-singleton $MAIN = undef; @@ -378,6 +378,7 @@ sub _read { local *FH; open( FH, '<', $_[0] ) or die "open($_[0]): $!"; + binmode FH; my $string = do { local $/; <FH> }; close FH or die "close($_[0]): $!"; return $string; @@ -386,6 +387,7 @@ sub _read { local *FH; open( FH, "< $_[0]" ) or die "open($_[0]): $!"; + binmode FH; my $string = do { local $/; <FH> }; close FH or die "close($_[0]): $!"; return $string; @@ -416,6 +418,7 @@ sub _write { local *FH; open( FH, '>', $_[0] ) or die "open($_[0]): $!"; + binmode FH; foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!"; } @@ -425,6 +428,7 @@ sub _write { local *FH; open( FH, "> $_[0]" ) or die "open($_[0]): $!"; + binmode FH; foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/lib/App/perlbrew.pm new/App-perlbrew-0.74/lib/App/perlbrew.pm --- old/App-perlbrew-0.73/lib/App/perlbrew.pm 2015-02-01 10:08:01.000000000 +0100 +++ new/App-perlbrew-0.74/lib/App/perlbrew.pm 2015-11-24 21:17:25.000000000 +0100 @@ -2,7 +2,7 @@ use strict; use warnings; use 5.008; -our $VERSION = "0.73"; +our $VERSION = "0.74"; use Config; BEGIN { @@ -19,6 +19,7 @@ @INC = @oldinc; } +use File::Glob ':glob'; use Getopt::Long (); sub min(@) { @@ -128,20 +129,20 @@ my %commands = ( curl => { test => '--version >/dev/null 2>&1', - get => '--insecure --silent --location --fail -o - {url}', - download => '--insecure --silent --location --fail -o {output} {url}', + get => '--silent --location --fail -o - {url}', + download => '--silent --location --fail -o {output} {url}', order => 1, }, wget => { test => '--version >/dev/null 2>&1', - get => '--no-check-certificate --quiet -O - {url}', - download => '--no-check-certificate --quiet -O {output} {url}', + get => '--quiet -O - {url}', + download => '--quiet -O {output} {url}', order => 2, }, fetch => { test => '--version >/dev/null 2>&1', - get => '--no-verify-peer -o - {url}', - download => '--no-verify-peer {url}', + get => '-o - {url}', + download => '{url}', order => 3, } ); @@ -1402,6 +1403,9 @@ unless (-e $newperl) { $self->run_command_symlink_executables($installation_name); } + + eval { $self->append_log('##### Brew Finished #####') }; + if ( $sitecustomize ) { my $capture = $self->do_capture("$newperl -V:sitelib"); my ($sitelib) = $capture =~ /sitelib='(.*)';/; @@ -1425,6 +1429,7 @@ print "$installation_name is successfully installed.\n"; } else { + eval { $self->append_log('##### Brew Failed #####') }; die $self->INSTALLATION_FAILURE_MESSAGE; } return; @@ -1548,7 +1553,7 @@ sub local_libs { my ($self, $perl_name) = @_; - my @libs = map { substr($_, length($PERLBREW_HOME) + 6) } <$PERLBREW_HOME/libs/*>; + my @libs = map { substr($_, length($PERLBREW_HOME) + 6) } bsd_glob("$PERLBREW_HOME/libs/*"); if ($perl_name) { @libs = grep { /^$perl_name\@/ } @libs; @@ -1592,6 +1597,10 @@ unless ($perl_name) { die "\nERROR: The installation \"$name\" is unknown.\n\n"; } + + unless (!$lib_name || grep { $_->{lib_name} eq $lib_name } $self->local_libs($perl_name)) { + die "\nERROR: The lib name \"$lib_name\" is unknown.\n\n"; + } } my %env = ( @@ -1623,6 +1632,13 @@ if (-d $base) { $current_local_lib_context = $current_local_lib_context->activate($base); + + if ( $self->env('PERLBREW_LIB_PREFIX') ) { + unshift + @{$current_local_lib_context->libs}, + $self->env('PERLBREW_LIB_PREFIX'); + } + $env{PERLBREW_PATH} = joinpath($base, "bin") . ":" . $env{PERLBREW_PATH}; $env{PERLBREW_MANPATH} = joinpath($base, "man") . ":" . $env{PERLBREW_MANPATH}; $env{PERLBREW_LIB} = $lib_name; @@ -1796,69 +1812,6 @@ print "To immediately make it effective, run this line in this terminal:\n\n exec @{[ $self->env('SHELL') ]}\n\n"; } -sub run_command_mirror { - my($self) = @_; - print "Fetching mirror list\n"; - my $raw = http_get("http://search.cpan.org/mirror"); - - unless ($raw) { - die "\nERROR: Failed to retrieve the mirror list.\n\n"; - } - - my $found; - my @mirrors; - foreach my $line ( split m{\n}, $raw ) { - $found = 1 if $line =~ m{<select name="mirror">}; - next if ! $found; - last if $line =~ m{</select>}; - if ( $line =~ m{<option value="(.+?)">(.+?)</option>} ) { - my $url = $1; - my $name = $2; - $name =~ s/&#(\d+);/chr $1/seg; - $url =~ s/&#(\d+);/chr $1/seg; - push @mirrors, { url => $url, name => $name }; - } - } - - require ExtUtils::MakeMaker; - my $select; - my $max = @mirrors; - my $id = 0; - while ( @mirrors ) { - my @page = splice(@mirrors,0,20); - my $base = $id; - printf "[% 3d] %s\n", ++$id, $_->{name} for @page; - my $remaining = $max - $id; - my $ask = "Select a mirror by number or press enter to see the rest " - . "($remaining more) [q to quit, m for manual entry]"; - my $val = ExtUtils::MakeMaker::prompt( $ask ); - if ( ! length $val ) { next } - elsif ( $val eq 'q' ) { last } - elsif ( $val eq 'm' ) { - my $url = ExtUtils::MakeMaker::prompt("Enter the URL of your CPAN mirror:"); - my $name = ExtUtils::MakeMaker::prompt("Enter a Name: [default: My CPAN Mirror]") || "My CPAN Mirror"; - $select = { name => $name, url => $url }; - last; - } - elsif ( not $val =~ /\s*(\d+)\s*/ ) { - die "Invalid answer: must be 'q', 'm' or a number\n"; - } - elsif (1 <= $val and $val <= $max) { - $select = $page[ $val - 1 - $base ]; - last; - } - else { - die "Invalid ID: must be between 1 and $max\n"; - } - } - die "You didn't select a mirror!\n" if ! $select; - print "Selected $select->{name} ($select->{url}) as the mirror\n"; - my $conf = $self->config; - $conf->{mirror} = $select; - $self->_save_config; - return; -} - sub run_command_env { my($self, $name) = @_; @@ -2004,7 +1957,7 @@ if ($opts{with}) { my %installed = map { $_->{name} => $_ } map { ($_, @{$_->{libs}}) } $self->installed_perls; - my $d = ($opts{with} =~ / /) ? qr( +) : qr(,+); + my $d = ($opts{with} =~ m/ /) ? qr( +) : qr(,+); my @with = grep { $_ } map { my ($p,$l) = $self->resolve_installation_name($_); $p .= "\@$l" if $l; @@ -2285,6 +2238,16 @@ print "Upgrading $current->{name} to $dist_version\n" unless $self->{quiet}; local $self->{as} = $current->{name}; local $self->{dist_name} = $dist; + + require Config ; + my @d_options = map { '-D' . $flavor{$_}->{d_option}} keys %flavor ; + my %sub_config = map { $_ => $Config{$_}} grep { /^config_arg\d/} keys %Config ; + for my $value ( values %sub_config ) { + my $value_wo_D = $value; + $value_wo_D =~ s/^-D//; + push @{$self->{D}} , $value_wo_D if grep {/$value/} @d_options; + } + $self->do_install_release($dist, $dist_version); } @@ -2478,12 +2441,8 @@ [ -n "$PERLBREW_LIB" ] && echo -n "@$PERLBREW_LIB" echo else - __perlbrew_set_env "$2" + __perlbrew_set_env "$2" && { __perlbrew_set_path ; true ; } exit_status="$?" - if [[ $exit_status -eq 0 ]] - then - __perlbrew_set_path - fi fi ;; @@ -2491,11 +2450,8 @@ if [[ -z "$2" ]] ; then command perlbrew switch else - perlbrew use $2 + perlbrew use $2 && { __perlbrew_reinit $2 ; true ; } exit_status=$? - if [[ ${exit_status} -eq 0 ]]; then - __perlbrew_reinit $2 - fi fi ;; @@ -2583,16 +2539,17 @@ set -l PATH_WITHOUT_PERLBREW (eval $perlbrew_command display-pristine-path | perl -pe'y/:/ /') + # silencing stderr in case there's a non-existent path in $PATH (see GH#446) if test -n "$PERLBREW_PATH" set -x PERLBREW_PATH (echo $PERLBREW_PATH | perl -pe 'y/:/ /' ) - eval set -x PATH $PERLBREW_PATH $PATH_WITHOUT_PERLBREW + eval set -x PATH $PERLBREW_PATH $PATH_WITHOUT_PERLBREW 2> /dev/null else - eval set -x PATH $PERLBREW_ROOT/bin $PATH_WITHOUT_PERLBREW + eval set -x PATH $PERLBREW_ROOT/bin $PATH_WITHOUT_PERLBREW 2> /dev/null end end function __perlbrew_set_env - set -l code (eval $perlbrew_command env $argv | perl -pe 's/^(export|setenv)/set -xg/; s/^unset[env]*/set -eug/; s/$/;/; y/:/ /') + set -l code (eval $perlbrew_command env $argv | perl -pe 's/^(export|setenv)/set -xg/; s/=/ /; s/^unset[env]*/set -eug/; s/$/;/; y/:/ /') if test -z "$code" return 0; @@ -2670,7 +2627,7 @@ end function __source_init - perl -pe's/^\(export|setenv\)/set -xg/; s/=/ /; s/$/;/;' "$PERLBREW_HOME/init" | . - + perl -pe's/^(export|setenv)/set -xg/; s/=/ /; s/$/;/;' "$PERLBREW_HOME/init" | source end if test -z "$PERLBREW_ROOT" @@ -2858,6 +2815,15 @@ } +sub append_log { + my ($self, $message) = @_; + my $log_handler; + open($log_handler, '>>', $self->{log_file}) + or die "Cannot open log file for appending: $!"; + print $log_handler "$message\n"; + close($log_handler); +} + sub INSTALLATION_FAILURE_MESSAGE { my ($self) = @_; return <<FAIL; @@ -2865,7 +2831,7 @@ $self->{log_file} -If some perl tests failed and you still want install this distribution anyway, +If some perl tests failed and you still want to install this distribution anyway, do: (cd $self->{dist_extracted_dir}; make install) @@ -2892,12 +2858,12 @@ =head1 NAME -App::perlbrew - Manage perl installations in your $HOME +L<App::perlbrew> - Manage perl installations in your C<$HOME> -=head1 SYNOPSIS +=head2 SYNOPSIS # Installation - curl -kL http://install.perlbrew.pl | bash + curl -L http://install.perlbrew.pl | bash # Initialize perlbrew init @@ -2933,28 +2899,29 @@ # Exec something with all perlbrew-ed perls perlbrew exec -- perl -E 'say $]' -=head1 DESCRIPTION +=head2 DESCRIPTION -perlbrew is a program to automate the building and installation of perl in an +L<perlbrew> is a program to automate the building and installation of perl in an easy way. It provides multiple isolated perl environments, and a mechanism for you to switch between them. Everything are installed unter C<~/perl5/perlbrew>. You then need to include a bashrc/cshrc provided by perlbrew to tweak the PATH for you. You then can -benefit from not having to run 'sudo' commands to install -cpan modules because those are installed inside your HOME too. +benefit from not having to run C<sudo> commands to install +cpan modules because those are installed inside your C<HOME> too. For the documentation of perlbrew usage see L<perlbrew> command -on CPAN, or by running C<perlbrew help>. The following documentation +on L<MetaCPAN|https://metacpan.org/>, or by running C<perlbrew help>, +or by visiting L<perlbrew's official website|http://perlbrew.pl/>. The following documentation features the API of C<App::perlbrew> module, and may not be remotely close to what your want to read. -=head1 INSTALLATION +=head2 INSTALLATION It is the simplest to use the perlbrew installer, just paste this statement to your terminal: - curl -kL http://install.perlbrew.pl | bash + curl -L http://install.perlbrew.pl | bash Or this one, if you have C<fetch> (default on FreeBSD): @@ -2968,17 +2935,17 @@ system perl. The minimum system perl version requirement is 5.8.0, which should be good enough for most of the OSes these days. -A fat-packed version of C<patchperl> is also installed to +A fat-packed version of L<patchperl> is also installed to C<~/perl5/perlbrew/bin>, which is required to build old perls. The directory C<~/perl5/perlbrew> will contain all install perl executables, libraries, documentations, lib, site_libs. In the documentation, that directory -is referred as "perlbrew root". If you need to set it to somewhere else because, -say, your HOME has limited quota, you can do that by setting C<PERLBREW_ROOT> +is referred as C<perlbrew root>. If you need to set it to somewhere else because, +say, your C<HOME> has limited quota, you can do that by setting C<PERLBREW_ROOT> environment variable before running the installer: export PERLBREW_ROOT=/opt/perl5 - curl -kL http://install.perlbrew.pl | bash + curl -L http://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 @@ -3004,27 +2971,27 @@ C</usr/bin>, which is not affected by perlbrew C<switch> or C<use> command. The C<self-upgrade> command will not upgrade the perlbrew installed by cpan -command, but it is also easy to upgrade perlbrew by running `cpan App::perlbrew` +command, but it is also easy to upgrade perlbrew by running C<cpan App::perlbrew> again. -=head1 METHODS +=head2 METHODS =over 4 =item (Str) current_perl Return the "current perl" object attribute string, or, if absent, the value of -PERLBREW_PERL environment variable. +C<PERLBREW_PERL> environment variable. =item (Str) current_perl (Str) -Set the "current_perl" object attribute to the given value. +Set the C<current_perl> object attribute to the given value. =back -=head1 PROJECT DEVELOPMENT +=head2 PROJECT DEVELOPMENT -perlbrew project uses github +L<perlbrew project|http://perlbrew.pl/> uses github L<http://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 @@ -3041,11 +3008,11 @@ Copyright (c) 2010,2011,2012,2013,2014,2015 Kang-min Liu C<< <gu...@gugod.org> >>. -=head1 LICENCE +=head3 LICENCE The MIT License -=head1 DISCLAIMER OF WARRANTY +=head2 DISCLAIMER OF WARRANTY BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/t/08.error_mirror.t new/App-perlbrew-0.74/t/08.error_mirror.t --- old/App-perlbrew-0.73/t/08.error_mirror.t 2015-01-14 08:53:55.000000000 +0100 +++ new/App-perlbrew-0.74/t/08.error_mirror.t 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; -use lib qw(lib); -use App::perlbrew; -use Test::More; -use Test::Exception; - -no warnings 'redefine'; -sub App::perlbrew::http_get { "" } - -throws_ok( - sub { - my $app = App::perlbrew->new("mirror"); - $app->run; - }, - qr"ERROR: Failed to retrieve the mirror list." -); - -done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/t/command-env.t new/App-perlbrew-0.74/t/command-env.t --- old/App-perlbrew-0.73/t/command-env.t 2015-01-14 08:53:55.000000000 +0100 +++ new/App-perlbrew-0.74/t/command-env.t 2015-11-24 21:17:25.000000000 +0100 @@ -25,6 +25,7 @@ delete $ENV{PERL_LOCAL_LIB_ROOT}; delete $ENV{PERLBREW_LIB}; delete $ENV{PERL5LIB}; + delete $ENV{PERLBREW_LIB_PREFIX}; }; describe "when invoked with a perl installation name,", sub { @@ -58,6 +59,33 @@ export PERLBREW_LIB="nobita" export PERLBREW_MANPATH="$lib_dir/man:$App::perlbrew::PERLBREW_ROOT/perls/perl-5.14.1/man" export PERLBREW_PATH="$lib_dir/bin:$App::perlbrew::PERLBREW_ROOT/bin:$App::perlbrew::PERLBREW_ROOT/perls/perl-5.14.1/bin" +export PERLBREW_PERL="perl-5.14.1" +export PERLBREW_ROOT="$App::perlbrew::PERLBREW_ROOT" +export PERLBREW_VERSION="$App::perlbrew::VERSION" +export PERL_LOCAL_LIB_ROOT="$lib_dir" +export PERL_MB_OPT="--install_base "$lib_dir"" +export PERL_MM_OPT="INSTALL_BASE=$lib_dir" +OUT + } + }; + + describe "when invoked with a perl installation name with lib name and PERLBREW_LIB_PREFIX set,", sub { + it "displays PERL5LIB with PERLBREW_LIB_PREFIX value first." => sub { + note 'perlbrew env perl-5.14.1@nobita'; + + $ENV{PERLBREW_LIB_PREFIX} = 'perlbrew_lib_prefix'; + + my $PERL5LIB_maybe = $ENV{PERL5LIB} ? ":\$PERL5LIB" : ""; + my $app = App::perlbrew->new("env", 'perl-5.14.1@nobita'); + + my $lib_dir = "$App::perlbrew::PERLBREW_HOME/libs/perl-5.14.1\@nobita"; + stdout_is { + $app->run; + } <<"OUT"; +export PERL5LIB="$ENV{PERLBREW_LIB_PREFIX}:$lib_dir/lib/perl5${PERL5LIB_maybe}" +export PERLBREW_LIB="nobita" +export PERLBREW_MANPATH="$lib_dir/man:$App::perlbrew::PERLBREW_ROOT/perls/perl-5.14.1/man" +export PERLBREW_PATH="$lib_dir/bin:$App::perlbrew::PERLBREW_ROOT/bin:$App::perlbrew::PERLBREW_ROOT/perls/perl-5.14.1/bin" export PERLBREW_PERL="perl-5.14.1" export PERLBREW_ROOT="$App::perlbrew::PERLBREW_ROOT" export PERLBREW_VERSION="$App::perlbrew::VERSION" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/App-perlbrew-0.73/t/installation2.t new/App-perlbrew-0.74/t/installation2.t --- old/App-perlbrew-0.73/t/installation2.t 2015-01-14 08:53:55.000000000 +0100 +++ new/App-perlbrew-0.74/t/installation2.t 2015-11-24 21:17:25.000000000 +0100 @@ -5,6 +5,7 @@ use FindBin; use lib $FindBin::Bin; use App::perlbrew; +use Test::Exception; require 'test_helpers.pl'; use Test::Spec; @@ -48,6 +49,44 @@ pass; } }; + + describe "->do_install_this method" => sub { + it "should log successful brews to the log_file." => sub { + my $app = App::perlbrew->new; + $app->{dist_extracted_dir} = ''; + $app->{dist_name} = ''; + + my %expectations = ( + 'do_system' => $app->expects("do_system")->returns(1), + ); + + $app->do_install_this('', '5.12.3', 'perl-5.12.3'); + open(my $log_handle, '<', $app->{log_file}); + like(<$log_handle>, qr/##### Brew Finished #####/, 'Success message shows in log'); + + foreach my $sub_name (keys %expectations) { + ok $expectations{$sub_name}->verify, "$sub_name is called"; + } + }; + + it "should log brew failure to the log_file if system call fails." => sub { + my $app = App::perlbrew->new; + $app->{dist_extracted_dir} = ''; + $app->{dist_name} = ''; + + my %expectations = ( + 'do_system' => $app->expects("do_system")->returns(0), + ); + + throws_ok( sub {$app->do_install_this('', '5.12.3', 'perl-5.12.3')}, qr/Installation process failed/); + open(my $log_handle, '<', $app->{log_file}); + like(<$log_handle>, qr/##### Brew Failed #####/, 'Failure message shows in log'); + + foreach my $sub_name (keys %expectations) { + ok $expectations{$sub_name}->verify, "$sub_name is called"; + } + }; + } };