Hello community, here is the log from the commit of package perl-local-lib for openSUSE:Factory checked in at 2013-06-13 17:46:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-local-lib (Old) and /work/SRC/openSUSE:Factory/.perl-local-lib.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-local-lib" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-local-lib/perl-local-lib.changes 2011-12-21 17:31:08.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.perl-local-lib.new/perl-local-lib.changes 2013-06-13 17:46:36.000000000 +0200 @@ -1,0 +2,14 @@ +Tue Jun 11 18:38:33 UTC 2013 - [email protected] + +- updated to 1.008010 + - Fix a split on undefined value warning (David Golden -- see + https://github.com/gugod/App-perlbrew/issues/305) + - Remove Carp::Always dep + - Fix putting arch path in PERL5LIB + - Refactor Win32 path handling out of ensure_dir_structure_for() + - Fix activate_paths when PERL_LOCAL_LIB_ROOT starts with : + - Fix ~/perl5/bin missing in $PATH + - Back to 1.008004 with Carp fix since subsequent releases were botched + - Avoid issue where PERL5LIB Carp is older than local::lib one + +------------------------------------------------------------------- Old: ---- local-lib-1.008004.tar.gz New: ---- local-lib-1.008010.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-local-lib.spec ++++++ --- /var/tmp/diff_new_pack.hkBrZM/_old 2013-06-13 17:46:37.000000000 +0200 +++ /var/tmp/diff_new_pack.hkBrZM/_new 2013-06-13 17:46:37.000000000 +0200 @@ -2,7 +2,7 @@ # # spec file for package perl-local-lib # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,54 +16,62 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + Name: perl-local-lib -Version: 1.008004 +Version: 1.008010 Release: 0 Summary: Create and Use a local Library Directory for Perl Modules License: Artistic-1.0 or GPL-1.0+ Group: Development/Libraries/Perl -Source: http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-%{version}.tar.gz +%define cpan_name local-lib +Source: http://www.cpan.org/authors/id/E/ET/ETHER/%{cpan_name}-%{version}.tar.gz Source1: perl-homedir.sh Source2: perl-homedir.csh Url: http://search.cpan.org/dist/local-lib/ BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: make BuildRequires: perl BuildRequires: perl-macros -BuildRequires: perl(CPAN) >= 1.80 -BuildRequires: perl(ExtUtils::CBuilder) +BuildRequires: perl(CPAN) >= 1.82 BuildRequires: perl(ExtUtils::Install) >= 1.43 -BuildRequires: perl(ExtUtils::MakeMaker) >= 6.42 -BuildRequires: perl(ExtUtils::ParseXS) -BuildRequires: perl(Module::Build) >= 0.28 -BuildRequires: perl(Test::More) -%if 0%{?suse_version} >= 1030 -Requires: perl-base = %{perl_version} -%else -Requires: perl -%endif -Requires: perl(CPAN) >= 1.80 -Requires: perl(ExtUtils::CBuilder) +BuildRequires: perl(ExtUtils::MakeMaker) >= 6.31 +BuildRequires: perl(Module::Build) >= 0.3600 +#BuildRequires: perl(Capture::Tiny) +#BuildRequires: perl(CPAN::HandleConfig) +#BuildRequires: perl(CPANPLUS::Backend) +#BuildRequires: perl(File::HomeDir) +#BuildRequires: perl(inc::Module::Install) +#BuildRequires: perl(JSON) +#BuildRequires: perl(lib::core::only) +#BuildRequires: perl(local::lib) +#BuildRequires: perl(LWP::Simple) +#BuildRequires: perl(Module::AutoInstall) +#BuildRequires: perl(Module::Install::Base) +#BuildRequires: perl(Parse::CPAN::Meta) +#BuildRequires: perl(YAML::Tiny) +Requires: perl(CPAN) >= 1.82 Requires: perl(ExtUtils::Install) >= 1.43 Requires: perl(ExtUtils::MakeMaker) >= 6.31 -Requires: perl(ExtUtils::ParseXS) -Requires: perl(Module::Build) >= 0.28 +Requires: perl(Module::Build) >= 0.3600 +%{perl_requires} %description -This module provides a quick, convenient way of bootstrapping a user-local Perl -module library located within the user's home directory. It also constructs and -prints out for the user the list of environment variables using the syntax -appropriate for the user's current shell (as specified by the SHELL environment -variable), suitable for directly adding to one's shell configuration file. +This module provides a quick, convenient way of bootstrapping a user-local +Perl module library located within the user's home directory. It also +constructs and prints out for the user the list of environment variables +using the syntax appropriate for the user's current shell (as specified by +the 'SHELL' environment variable), suitable for directly adding to one's +shell configuration file. More generally, local::lib allows for the bootstrapping and usage of a -directory containing Perl modules outside of Perl's @INC. This makes it easier -to ship an application with an app-specific copy of a Perl module, or -collection of modules. Useful in cases like when an upstream maintainer hasn't -applied a patch to a module of theirs that you need for your application. +directory containing Perl modules outside of Perl's '@INC'. This makes it +easier to ship an application with an app-specific copy of a Perl module, +or collection of modules. Useful in cases like when an upstream maintainer +hasn't applied a patch to a module of theirs that you need for your +application. %package -n perl-homedir Summary: Per-user Perl local::lib setup +Group: Development/Libraries/Perl Requires: %{name} = %{version}-%{release} Requires: /usr/bin/cpan ++++++ local-lib-1.008004.tar.gz -> local-lib-1.008010.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/Changes new/local-lib-1.008010/Changes --- old/local-lib-1.008004/Changes 2011-02-24 22:49:10.000000000 +0100 +++ new/local-lib-1.008010/Changes 2013-05-27 03:01:30.000000000 +0200 @@ -1,4 +1,22 @@ Revision history for local::lib + +1.008010 2013-05-26 + - Fix a split on undefined value warning (David Golden -- see + https://github.com/gugod/App-perlbrew/issues/305) + +1.008009 2013-02-24 + - Remove Carp::Always dep + +1.008008 2013-02-24 + - Fix putting arch path in PERL5LIB + - Refactor Win32 path handling out of ensure_dir_structure_for() + - Fix activate_paths when PERL_LOCAL_LIB_ROOT starts with : + - Fix ~/perl5/bin missing in $PATH + +1.008007 2013-02-17 + - Back to 1.008004 with Carp fix since subsequent releases were botched + - Avoid issue where PERL5LIB Carp is older than local::lib one + 1.008004 2011-02-24 - Fix stackable tests on win32 by canonicalizing the path ahead of time diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/MANIFEST new/local-lib-1.008010/MANIFEST --- old/local-lib-1.008004/MANIFEST 2011-02-23 23:14:49.000000000 +0100 +++ new/local-lib-1.008010/MANIFEST 2013-05-27 03:05:05.000000000 +0200 @@ -28,3 +28,4 @@ t/lib-core-only.t t/pipeline.t t/stackable.t +t/subroutine-in-inc.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/META.yml new/local-lib-1.008010/META.yml --- old/local-lib-1.008004/META.yml 2011-02-24 22:50:01.000000000 +0100 +++ new/local-lib-1.008010/META.yml 2013-05-27 03:05:03.000000000 +0200 @@ -3,11 +3,12 @@ author: - 'Matt S Trout <[email protected]> http://www.shadowcat.co.uk/' build_requires: - ExtUtils::MakeMaker: 6.42 + ExtUtils::MakeMaker: 6.59 configure_requires: - ExtUtils::MakeMaker: 6.42 + ExtUtils::MakeMaker: 6.59 distribution_type: module -generated_by: 'Module::Install version 1.00' +dynamic_config: 1 +generated_by: 'Module::Install version 1.06' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -17,7 +18,6 @@ directory: - inc - t - - xt requires: CPAN: 1.82 ExtUtils::Install: 1.43 @@ -29,4 +29,4 @@ homepage: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit/local-lib.git license: http://dev.perl.org/licenses/ repository: git://git.shadowcat.co.uk/p5sagit/local-lib.git -version: 1.008004 +version: 1.008010 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/Makefile.PL new/local-lib-1.008010/Makefile.PL --- old/local-lib-1.008004/Makefile.PL 2011-02-18 04:54:09.000000000 +0100 +++ new/local-lib-1.008010/Makefile.PL 2013-02-17 17:36:01.000000000 +0100 @@ -252,6 +252,7 @@ } chdir($cwd); resources( + # r/w: [email protected]:local-lib.git repository => 'git://git.shadowcat.co.uk/p5sagit/local-lib.git', homepage => 'http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit/local-lib.git', bugtracker => 'http://rt.cpan.org/Public/Dist/Display.html?Name=local-lib', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/AutoInstall.pm new/local-lib-1.008010/inc/Module/AutoInstall.pm --- old/local-lib-1.008004/inc/Module/AutoInstall.pm 2011-02-24 22:50:00.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/AutoInstall.pm 2013-05-27 03:05:02.000000000 +0200 @@ -3,11 +3,12 @@ use strict; use Cwd (); +use File::Spec (); use ExtUtils::MakeMaker (); use vars qw{$VERSION}; BEGIN { - $VERSION = '1.03'; + $VERSION = '1.06'; } # special map on pre-defined feature sets @@ -17,11 +18,14 @@ ); # various lexical flags -my ( @Missing, @Existing, %DisabledTests, $UnderCPAN, $HasCPANPLUS ); +my ( @Missing, @Existing, %DisabledTests, $UnderCPAN, $InstallDepsTarget, $HasCPANPLUS ); my ( - $Config, $CheckOnly, $SkipInstall, $AcceptDefault, $TestOnly, $AllDeps + $Config, $CheckOnly, $SkipInstall, $AcceptDefault, $TestOnly, $AllDeps, + $UpgradeDeps ); -my ( $PostambleActions, $PostambleUsed ); +my ( $PostambleActions, $PostambleActionsNoTest, $PostambleActionsUpgradeDeps, + $PostambleActionsUpgradeDepsNoTest, $PostambleActionsListDeps, + $PostambleActionsListAllDeps, $PostambleUsed, $NoTest); # See if it's a testing or non-interactive session _accept_default( $ENV{AUTOMATED_TESTING} or ! -t STDIN ); @@ -31,6 +35,10 @@ $AcceptDefault = shift; } +sub _installdeps_target { + $InstallDepsTarget = shift; +} + sub missing_modules { return @Missing; } @@ -63,6 +71,11 @@ __PACKAGE__->install( $Config, @Missing = split( /,/, $1 ) ); exit 0; } + elsif ( $arg =~ /^--upgradedeps=(.*)$/ ) { + $UpgradeDeps = 1; + __PACKAGE__->install( $Config, @Missing = split( /,/, $1 ) ); + exit 0; + } elsif ( $arg =~ /^--default(?:deps)?$/ ) { $AcceptDefault = 1; } @@ -125,7 +138,7 @@ # check entirely since we don't want to have to load (and configure) # an old CPAN just for a cosmetic message - $UnderCPAN = _check_lock(1) unless $SkipInstall; + $UnderCPAN = _check_lock(1) unless $SkipInstall || $InstallDepsTarget; while ( my ( $feature, $modules ) = splice( @args, 0, 2 ) ) { my ( @required, @tests, @skiptests ); @@ -175,7 +188,7 @@ } # XXX: check for conflicts and uninstalls(!) them. - my $cur = _load($mod); + my $cur = _version_of($mod); if (_version_cmp ($cur, $arg) >= 0) { print "loaded. ($cur" . ( $arg ? " >= $arg" : '' ) . ")\n"; @@ -207,6 +220,7 @@ $CheckOnly or ($mandatory and $UnderCPAN) or $AllDeps + or $InstallDepsTarget or _prompt( qq{==> Auto-install the } . ( @required / 2 ) @@ -237,10 +251,17 @@ } } - if ( @Missing and not( $CheckOnly or $UnderCPAN ) ) { + if ( @Missing and not( $CheckOnly or $UnderCPAN) ) { require Config; - print -"*** Dependencies will be installed the next time you type '$Config::Config{make}'.\n"; + my $make = $Config::Config{make}; + if ($InstallDepsTarget) { + print +"*** To install dependencies type '$make installdeps' or '$make installdeps_notest'.\n"; + } + else { + print +"*** Dependencies will be installed the next time you type '$make'.\n"; + } # make an educated guess of whether we'll need root permission. print " (You may need to do that as the 'root' user.)\n" @@ -271,6 +292,10 @@ sub _check_lock { return unless @Missing or @_; + if ($ENV{PERL5_CPANM_IS_RUNNING}) { + return _running_under('cpanminus'); + } + my $cpan_env = $ENV{PERL5_CPAN_IS_RUNNING}; if ($ENV{PERL5_CPANPLUS_IS_RUNNING}) { @@ -324,7 +349,7 @@ while ( my ( $pkg, $ver ) = splice( @_, 0, 2 ) ) { # grep out those already installed - if ( _version_cmp( _load($pkg), $ver ) >= 0 ) { + if ( _version_cmp( _version_of($pkg), $ver ) >= 0 ) { push @installed, $pkg; } else { @@ -332,6 +357,11 @@ } } + if ($UpgradeDeps) { + push @modules, @installed; + @installed = (); + } + return @installed unless @modules; # nothing to do return @installed if _check_lock(); # defer to the CPAN shell @@ -363,7 +393,7 @@ # see if we have successfully installed them while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) { - if ( _version_cmp( _load($pkg), $ver ) >= 0 ) { + if ( _version_cmp( _version_of($pkg), $ver ) >= 0 ) { push @installed, $pkg; } elsif ( $args{do_once} and open( FAILED, '>> .#autoinstall.failed' ) ) { @@ -463,6 +493,11 @@ } else { die "*** Cannot convert option $key = '$value' to CPANPLUS version.\n"; } + push @config, 'prereqs', $value; + } elsif ( $key eq 'force' ) { + push @config, $key, $value; + } elsif ( $key eq 'notest' ) { + push @config, 'skiptest', $value; } else { die "*** Cannot convert option $key to CPANPLUS version.\n"; } @@ -497,10 +532,14 @@ # set additional options while ( my ( $opt, $arg ) = splice( @config, 0, 2 ) ) { ( $args{$opt} = $arg, next ) - if $opt =~ /^force$/; # pseudo-option + if $opt =~ /^(?:force|notest)$/; # pseudo-option $CPAN::Config->{$opt} = $arg; } + if ($args{notest} && (not CPAN::Shell->can('notest'))) { + die "Your version of CPAN is too old to support the 'notest' pragma"; + } + local $CPAN::Config->{prerequisites_policy} = 'follow'; while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) { @@ -519,8 +558,16 @@ delete $INC{$inc}; } - my $rv = $args{force} ? CPAN::Shell->force( install => $pkg ) - : CPAN::Shell->install($pkg); + my $rv = do { + if ($args{force}) { + CPAN::Shell->force( install => $pkg ) + } elsif ($args{notest}) { + CPAN::Shell->notest( install => $pkg ) + } else { + CPAN::Shell->install($pkg) + } + }; + $rv ||= eval { $CPAN::META->instance( 'CPAN::Distribution', $obj->cpan_file, ) ->{install} @@ -575,7 +622,7 @@ my $ver = shift; return - if _version_cmp( _load($class), $ver ) >= 0; # no need to upgrade + if _version_cmp( _version_of($class), $ver ) >= 0; # no need to upgrade if ( _prompt( "==> A newer version of $class ($ver) is required. Install?", @@ -660,16 +707,30 @@ # load a module and return the version it reports sub _load { - my $mod = pop; # class/instance doesn't matter + my $mod = pop; # method/function doesn't matter my $file = $mod; - $file =~ s|::|/|g; $file .= '.pm'; - local $@; return eval { require $file; $mod->VERSION } || ( $@ ? undef: 0 ); } +# report version without loading a module +sub _version_of { + my $mod = pop; # method/function doesn't matter + my $file = $mod; + $file =~ s|::|/|g; + $file .= '.pm'; + foreach my $dir ( @INC ) { + next if ref $dir; + my $path = File::Spec->catfile($dir, $file); + next unless -e $path; + require ExtUtils::MM_Unix; + return ExtUtils::MM_Unix->parse_version($path); + } + return undef; +} + # Load CPAN.pm and it's configuration sub _load_cpan { return if $CPAN::VERSION and $CPAN::Config and not @_; @@ -763,6 +824,35 @@ : "\$(NOECHO) \$(NOOP)" ); + my $deps_list = join( ',', @Missing, @Existing ); + + $PostambleActionsUpgradeDeps = + "\$(PERL) $0 --config=$config --upgradedeps=$deps_list"; + + my $config_notest = + join( ',', (UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config}), + 'notest', 1 ) + if $Config; + + $PostambleActionsNoTest = ( + ($missing and not $UnderCPAN) + ? "\$(PERL) $0 --config=$config_notest --installdeps=$missing" + : "\$(NOECHO) \$(NOOP)" + ); + + $PostambleActionsUpgradeDepsNoTest = + "\$(PERL) $0 --config=$config_notest --upgradedeps=$deps_list"; + + $PostambleActionsListDeps = + '@$(PERL) -le "print for @ARGV" ' + . join(' ', map $Missing[$_], grep $_ % 2 == 0, 0..$#Missing); + + my @all = (@Missing, @Existing); + + $PostambleActionsListAllDeps = + '@$(PERL) -le "print for @ARGV" ' + . join(' ', map $all[$_], grep $_ % 2 == 0, 0..$#all); + return %args; } @@ -797,11 +887,15 @@ sub postamble { $PostambleUsed = 1; + my $fragment; - return <<"END_MAKE"; + $fragment .= <<"AUTO_INSTALL" if !$InstallDepsTarget; config :: installdeps \t\$(NOECHO) \$(NOOP) +AUTO_INSTALL + + $fragment .= <<"END_MAKE"; checkdeps :: \t\$(PERL) $0 --checkdeps @@ -809,12 +903,28 @@ installdeps :: \t$PostambleActions +installdeps_notest :: +\t$PostambleActionsNoTest + +upgradedeps :: +\t$PostambleActionsUpgradeDeps + +upgradedeps_notest :: +\t$PostambleActionsUpgradeDepsNoTest + +listdeps :: +\t$PostambleActionsListDeps + +listalldeps :: +\t$PostambleActionsListAllDeps + END_MAKE + return $fragment; } 1; __END__ -#line 1071 +#line 1193 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/AutoInstall.pm new/local-lib-1.008010/inc/Module/Install/AutoInstall.pm --- old/local-lib-1.008004/inc/Module/Install/AutoInstall.pm 2011-02-24 22:50:00.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/AutoInstall.pm 2013-05-27 03:05:02.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } @@ -73,6 +73,17 @@ ); } +sub installdeps_target { + my ($self, @args) = @_; + + $self->include('Module::AutoInstall'); + require Module::AutoInstall; + + Module::AutoInstall::_installdeps_target(1); + + $self->auto_install(@args); +} + sub auto_install_now { my $self = shift; $self->auto_install(@_); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/Base.pm new/local-lib-1.008010/inc/Module/Install/Base.pm --- old/local-lib-1.008004/inc/Module/Install/Base.pm 2011-02-24 22:49:59.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/Base.pm 2013-05-27 03:05:01.000000000 +0200 @@ -4,7 +4,7 @@ use strict 'vars'; use vars qw{$VERSION}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; } # Suspend handler for "redefined" warnings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/Can.pm new/local-lib-1.008010/inc/Module/Install/Can.pm --- old/local-lib-1.008004/inc/Module/Install/Can.pm 2011-02-24 22:50:01.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/Can.pm 2013-05-27 03:05:02.000000000 +0200 @@ -3,13 +3,12 @@ use strict; use Config (); -use File::Spec (); use ExtUtils::MakeMaker (); use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } @@ -29,7 +28,7 @@ eval { require $mod; $pkg->VERSION($ver || 0); 1 }; } -# check if we can run some command +# Check if we can run some command sub can_run { my ($self, $cmd) = @_; @@ -38,14 +37,88 @@ for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { next if $dir eq ''; - my $abs = File::Spec->catfile($dir, $_[1]); + require File::Spec; + my $abs = File::Spec->catfile($dir, $cmd); return $abs if (-x $abs or $abs = MM->maybe_command($abs)); } return; } -# can we locate a (the) C compiler +# Can our C compiler environment build XS files +sub can_xs { + my $self = shift; + + # Ensure we have the CBuilder module + $self->configure_requires( 'ExtUtils::CBuilder' => 0.27 ); + + # Do we have the configure_requires checker? + local $@; + eval "require ExtUtils::CBuilder;"; + if ( $@ ) { + # They don't obey configure_requires, so it is + # someone old and delicate. Try to avoid hurting + # them by falling back to an older simpler test. + return $self->can_cc(); + } + + # Do we have a working C compiler + my $builder = ExtUtils::CBuilder->new( + quiet => 1, + ); + unless ( $builder->have_compiler ) { + # No working C compiler + return 0; + } + + # Write a C file representative of what XS becomes + require File::Temp; + my ( $FH, $tmpfile ) = File::Temp::tempfile( + "compilexs-XXXXX", + SUFFIX => '.c', + ); + binmode $FH; + print $FH <<'END_C'; +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +int main(int argc, char **argv) { + return 0; +} + +int boot_sanexs() { + return 1; +} + +END_C + close $FH; + + # Can the C compiler access the same headers XS does + my @libs = (); + my $object = undef; + eval { + local $^W = 0; + $object = $builder->compile( + source => $tmpfile, + ); + @libs = $builder->link( + objects => $object, + module_name => 'sanexs', + ); + }; + my $result = $@ ? 0 : 1; + + # Clean up all the build files + foreach ( $tmpfile, $object, @libs ) { + next unless defined $_; + 1 while unlink; + } + + return $result; +} + +# Can we locate a (the) C compiler sub can_cc { my $self = shift; my @chunks = split(/ /, $Config::Config{cc}) or return; @@ -78,4 +151,4 @@ __END__ -#line 156 +#line 236 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/Fetch.pm new/local-lib-1.008010/inc/Module/Install/Fetch.pm --- old/local-lib-1.008004/inc/Module/Install/Fetch.pm 2011-02-24 22:50:01.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/Fetch.pm 2013-05-27 03:05:02.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/Include.pm new/local-lib-1.008010/inc/Module/Install/Include.pm --- old/local-lib-1.008004/inc/Module/Install/Include.pm 2011-02-24 22:50:00.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/Include.pm 2013-05-27 03:05:02.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/Makefile.pm new/local-lib-1.008010/inc/Module/Install/Makefile.pm --- old/local-lib-1.008004/inc/Module/Install/Makefile.pm 2011-02-24 22:49:59.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/Makefile.pm 2013-05-27 03:05:02.000000000 +0200 @@ -8,7 +8,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } @@ -215,18 +215,22 @@ require ExtUtils::MakeMaker; if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) { - # MakeMaker can complain about module versions that include - # an underscore, even though its own version may contain one! - # Hence the funny regexp to get rid of it. See RT #35800 - # for details. - my $v = $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/; - $self->build_requires( 'ExtUtils::MakeMaker' => $v ); - $self->configure_requires( 'ExtUtils::MakeMaker' => $v ); + # This previous attempted to inherit the version of + # ExtUtils::MakeMaker in use by the module author, but this + # was found to be untenable as some authors build releases + # using future dev versions of EU:MM that nobody else has. + # Instead, #toolchain suggests we use 6.59 which is the most + # stable version on CPAN at time of writing and is, to quote + # ribasushi, "not terminally fucked, > and tested enough". + # TODO: We will now need to maintain this over time to push + # the version up as new versions are released. + $self->build_requires( 'ExtUtils::MakeMaker' => 6.59 ); + $self->configure_requires( 'ExtUtils::MakeMaker' => 6.59 ); } else { # Allow legacy-compatibility with 5.005 by depending on the # most recent EU:MM that supported 5.005. - $self->build_requires( 'ExtUtils::MakeMaker' => 6.42 ); - $self->configure_requires( 'ExtUtils::MakeMaker' => 6.42 ); + $self->build_requires( 'ExtUtils::MakeMaker' => 6.36 ); + $self->configure_requires( 'ExtUtils::MakeMaker' => 6.36 ); } # Generate the MakeMaker params @@ -241,7 +245,6 @@ 'all_from' if you prefer) in Makefile.PL. EOT - $DB::single = 1; if ( $self->tests ) { my @tests = split ' ', $self->tests; my %seen; @@ -412,4 +415,4 @@ __END__ -#line 541 +#line 544 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/Metadata.pm new/local-lib-1.008010/inc/Module/Install/Metadata.pm --- old/local-lib-1.008004/inc/Module/Install/Metadata.pm 2011-02-24 22:49:59.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/Metadata.pm 2013-05-27 03:05:01.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } @@ -151,15 +151,21 @@ sub install_as_vendor { $_[0]->installdirs('vendor') } sub dynamic_config { - my $self = shift; - unless ( @_ ) { - warn "You MUST provide an explicit true/false value to dynamic_config\n"; - return $self; + my $self = shift; + my $value = @_ ? shift : 1; + if ( $self->{values}->{dynamic_config} ) { + # Once dynamic we never change to static, for safety + return 0; } - $self->{values}->{dynamic_config} = $_[0] ? 1 : 0; + $self->{values}->{dynamic_config} = $value ? 1 : 0; return 1; } +# Convenience command +sub static_config { + shift->dynamic_config(0); +} + sub perl_version { my $self = shift; return $self->{values}->{perl_version} unless @_; @@ -170,7 +176,7 @@ # Normalize the version $version = $self->_perl_version($version); - # We don't support the reall old versions + # We don't support the really old versions unless ( $version >= 5.005 ) { die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n"; } @@ -515,6 +521,7 @@ 'GNU Free Documentation license' => 'unrestricted', 1, 'GNU Affero General Public License' => 'open_source', 1, '(?:Free)?BSD license' => 'bsd', 1, + 'Artistic license 2\.0' => 'artistic_2', 1, 'Artistic license' => 'artistic', 1, 'Apache (?:Software )?license' => 'apache', 1, 'GPL' => 'gpl', 1, @@ -550,9 +557,9 @@ sub _extract_bugtracker { my @links = $_[0] =~ m#L<( - \Qhttp://rt.cpan.org/\E[^>]+| - \Qhttp://github.com/\E[\w_]+/[\w_]+/issues| - \Qhttp://code.google.com/p/\E[\w_\-]+/issues/list + https?\Q://rt.cpan.org/\E[^>]+| + https?\Q://github.com/\E[\w_]+/[\w_]+/issues| + https?\Q://code.google.com/p/\E[\w_\-]+/issues/list )>#gx; my %links; @links{@links}=(); @@ -581,7 +588,7 @@ sub requires_from { my $self = shift; my $content = Module::Install::_readperl($_[0]); - my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg; + my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+(v?[\d\.]+)/mg; while ( @requires ) { my $module = shift @requires; my $version = shift @requires; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/Win32.pm new/local-lib-1.008010/inc/Module/Install/Win32.pm --- old/local-lib-1.008004/inc/Module/Install/Win32.pm 2011-02-24 22:50:01.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/Win32.pm 2013-05-27 03:05:02.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install/WriteAll.pm new/local-lib-1.008010/inc/Module/Install/WriteAll.pm --- old/local-lib-1.008004/inc/Module/Install/WriteAll.pm 2011-02-24 22:50:01.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install/WriteAll.pm 2013-05-27 03:05:02.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.06'; @ISA = qw{Module::Install::Base}; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/inc/Module/Install.pm new/local-lib-1.008010/inc/Module/Install.pm --- old/local-lib-1.008004/inc/Module/Install.pm 2011-02-24 22:49:58.000000000 +0100 +++ new/local-lib-1.008010/inc/Module/Install.pm 2013-05-27 03:05:01.000000000 +0200 @@ -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.00'; + $VERSION = '1.06'; # Storage for the pseudo-singleton $MAIN = undef; @@ -451,7 +451,7 @@ } sub _cmp ($$) { - _version($_[0]) <=> _version($_[1]); + _version($_[1]) <=> _version($_[2]); } # Cloned from Params::Util::_CLASS @@ -467,4 +467,4 @@ 1; -# Copyright 2008 - 2010 Adam Kennedy. +# Copyright 2008 - 2012 Adam Kennedy. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/lib/local/lib.pm new/local-lib-1.008010/lib/local/lib.pm --- old/local-lib-1.008004/lib/local/lib.pm 2011-02-24 22:49:19.000000000 +0100 +++ new/local-lib-1.008010/lib/local/lib.pm 2013-05-27 03:01:30.000000000 +0200 @@ -8,10 +8,9 @@ use File::Spec (); use File::Path (); -use Carp (); use Config; -our $VERSION = '1.008004'; # 1.8.4 +our $VERSION = '1.008010'; # 1.8.10 our @KNOWN_FLAGS = qw(--self-contained --deactivate --deactivate-all); @@ -175,6 +174,7 @@ } }; unless (defined $homedir) { + require Carp; Carp::croak( "Couldn't resolve homedir for " .(defined $user ? $user : 'current user') @@ -207,7 +207,13 @@ my $interpolate = LITERAL_ENV; my @active_lls = $class->active_paths; - $path = $class->ensure_dir_structure_for($path); + $class->ensure_dir_structure_for($path); + + # On Win32 directories often contain spaces. But some parts of the CPAN + # toolchain don't like that. To avoid this, GetShortPathName() gives us + # an alternate representation that has none. + # This only works if the directory already exists. + $path = Win32::GetShortPathName($path) if $^O eq 'MSWin32'; if (! $deactivating) { if (@active_lls && $active_lls[-1] eq $path) { @@ -228,7 +234,15 @@ exit 0; } else { $class->setup_env_hash_for($path, $deactivating); - @INC = _uniq(split($Config{path_sep}, $ENV{PERL5LIB}), @INC); + my $arch_dir = $Config{archname}; + @INC = _uniq( + ( + # Inject $path/$archname for each path in PERL5LIB + map { ( File::Spec->catdir($_, $arch_dir), $_ ) } + split($Config{path_sep}, $ENV{PERL5LIB}) + ), + @INC + ); } } @@ -253,11 +267,7 @@ warn "Attempting to create directory ${path}\n"; } File::Path::mkpath($path); - # Need to have the path exist to make a short name for it, so - # converting to a short name here. - $path = Win32::GetShortPathName($path) if $^O eq 'MSWin32'; - - return $path; + return } sub guess_shelltype { @@ -360,35 +370,71 @@ } } +# Build an environment value for a variable like PATH from a list of paths. +# References to existing variables are given as references to the variable name. +# Duplicates are removed. +# +# options: +# - interpolate: INTERPOLATE_ENV/LITERAL_ENV +# - exists: paths are included only if they exist (default: interpolate == INTERPOLATE_ENV) +# - filter: function to apply to each path do decide if it must be included +# - empty: the value to return in the case of empty value +my %ENV_LIST_VALUE_DEFAULTS = ( + interpolate => INTERPOLATE_ENV, + exists => undef, + filter => sub { 1 }, + empty => undef, +); +sub _env_list_value { + my $options = shift; + die(sprintf "unknown option '$_' at %s line %u\n", (caller)[1..2]) + for grep { !exists $ENV_LIST_VALUE_DEFAULTS{$_} } keys %$options; + my %options = (%ENV_LIST_VALUE_DEFAULTS, %{ $options }); + $options{exists} = $options{interpolate} == INTERPOLATE_ENV + unless defined $options{exists}; + + my %seen; + + my $value = join($Config{path_sep}, map { + ref $_ ? ($^O eq 'MSWin32' ? "%${$_}%" : "\$${$_}") : $_ + } grep { + ref $_ || (defined $_ + && length($_) > 0 + && !$seen{$_}++ + && $options{filter}->($_) + && (!$options{exists} || -e $_)) + } map { + if (ref $_ eq 'SCALAR' && $options{interpolate} == INTERPOLATE_ENV) { + defined $ENV{${$_}} ? (split /\Q$Config{path_sep}/, $ENV{${$_}}) : () + } else { + $_ + } + } @_); + return length($value) ? $value : $options{empty}; +} + sub build_activate_environment_vars_for { my ($class, $path, $interpolate) = @_; return ( - PERL_LOCAL_LIB_ROOT => join($Config{path_sep}, - (($ENV{PERL_LOCAL_LIB_ROOT}||()) ? - ($interpolate == INTERPOLATE_ENV - ? ($ENV{PERL_LOCAL_LIB_ROOT}||()) - : (($^O ne 'MSWin32') ? '$PERL_LOCAL_LIB_ROOT' - : '%PERL_LOCAL_LIB_ROOT%' )) - : ()), - $path + PERL_LOCAL_LIB_ROOT => + _env_list_value( + { interpolate => $interpolate, exists => 0, empty => '' }, + \'PERL_LOCAL_LIB_ROOT', + $path, ), PERL_MB_OPT => "--install_base ${path}", PERL_MM_OPT => "INSTALL_BASE=${path}", - PERL5LIB => join($Config{path_sep}, - $class->install_base_arch_path($path), - $class->install_base_perl_path($path), - (($ENV{PERL5LIB}||()) ? - ($interpolate == INTERPOLATE_ENV - ? ($ENV{PERL5LIB}) - : (($^O ne 'MSWin32') ? '$PERL5LIB' : '%PERL5LIB%' )) - : ()) - ), - PATH => join($Config{path_sep}, - $class->install_base_bin_path($path), - ($interpolate == INTERPOLATE_ENV - ? ($ENV{PATH}||()) - : (($^O ne 'MSWin32') ? '$PATH' : '%PATH%' )) - ), + PERL5LIB => + _env_list_value( + { interpolate => $interpolate, exists => 0, empty => '' }, + $class->install_base_perl_path($path), + \'PERL5LIB', + ), + PATH => _env_list_value( + { interpolate => $interpolate, exists => 0, empty => '' }, + $class->install_base_bin_path($path), + \'PATH', + ), ) } @@ -396,7 +442,7 @@ my ($class) = @_; return () unless defined $ENV{PERL_LOCAL_LIB_ROOT}; - return split /\Q$Config{path_sep}/, $ENV{PERL_LOCAL_LIB_ROOT}; + return grep { $_ ne '' } split /\Q$Config{path_sep}/, $ENV{PERL_LOCAL_LIB_ROOT}; } sub build_deactivate_environment_vars_for { @@ -409,40 +455,42 @@ return (); } - my @new_ll_root = grep { $_ ne $path } @active_lls; - my @new_perl5lib = grep { - $_ ne $class->install_base_arch_path($path) && - $_ ne $class->install_base_perl_path($path) - } split /\Q$Config{path_sep}/, $ENV{PERL5LIB}; + my $perl_path = $class->install_base_perl_path($path); + my $arch_path = $class->install_base_arch_path($path); + my $bin_path = $class->install_base_bin_path($path); + my %env = ( - PERL_LOCAL_LIB_ROOT => (@new_ll_root ? - join($Config{path_sep}, @new_ll_root) : undef + PERL_LOCAL_LIB_ROOT => _env_list_value( + { + exists => 0, + }, + grep { $_ ne $path } @active_lls ), - PERL5LIB => (@new_perl5lib ? - join($Config{path_sep}, @new_perl5lib) : undef + PERL5LIB => _env_list_value( + { + exists => 0, + filter => sub { + $_ ne $perl_path && $_ ne $arch_path + }, + }, + \'PERL5LIB', ), - PATH => join($Config{path_sep}, - grep { $_ ne $class->install_base_bin_path($path) } - split /\Q$Config{path_sep}/, $ENV{PATH} + PATH => _env_list_value( + { + exists => 0, + filter => sub { $_ ne $bin_path }, + }, + \'PATH', ), ); # If removing ourselves from the "top of the stack", set install paths to # correspond with the new top of stack. if ($active_lls[-1] eq $path) { - if (@active_lls > 1) { - my $new_top = $active_lls[-2]; - %env = (%env, - PERL_MB_OPT => "--install_base ${new_top}", - PERL_MM_OPT => "INSTALL_BASE=${new_top}", - ); - } else { - %env = (%env, - PERL_MB_OPT => undef, - PERL_MM_OPT => undef, - ); - } + my $new_top = $active_lls[-2]; + $env{PERL_MB_OPT} = defined($new_top) ? "--install_base ${new_top}" : undef; + $env{PERL_MM_OPT} = defined($new_top) ? "INSTALL_BASE=${new_top}" : undef; } return %env; @@ -453,28 +501,36 @@ my @active_lls = $class->active_paths; - my @new_perl5lib = split /\Q$Config{path_sep}/, $ENV{PERL5LIB}; - my @new_path = split /\Q$Config{path_sep}/, $ENV{PATH}; - - for my $path (@active_lls) { - @new_perl5lib = grep { - $_ ne $class->install_base_arch_path($path) && - $_ ne $class->install_base_perl_path($path) - } @new_perl5lib; - - @new_path = grep { - $_ ne $class->install_base_bin_path($path) - } @new_path; - } + my %perl_paths = map { ( + $class->install_base_perl_path($_) => 1, + $class->install_base_arch_path($_) => 1 + ) } @active_lls; + my %bin_paths = map { ( + $class->install_base_bin_path($_) => 1, + ) } @active_lls; my %env = ( PERL_LOCAL_LIB_ROOT => undef, PERL_MM_OPT => undef, PERL_MB_OPT => undef, - PERL5LIB => (@new_perl5lib ? - join($Config{path_sep}, @new_perl5lib) : undef + PERL5LIB => _env_list_value( + { + exists => 0, + filter => sub { + ! scalar grep { exists $perl_paths{$_} } $_[0] + }, + }, + \'PERL5LIB' + ), + PATH => _env_list_value( + { + exists => 0, + filter => sub { + ! scalar grep { exists $bin_paths{$_} } $_[0] + }, + }, + \'PATH' ), - PATH => join($Config{path_sep}, @new_path), ); return %env; @@ -645,7 +701,7 @@ set PATH=C:\DOCUME~1\ADMINI~1\perl5\bin;%PATH% ### To set the environment for this shell alone - C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\temp.bat + C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\tmp.bat ### instead of $(perl -Mlocal::lib=./) If you want the environment entries to persist, you'll need to add then to the @@ -1015,6 +1071,8 @@ Improvements to stacking multiple local::lib dirs and removing them from the environment later on contributed by Andrew Rodland <[email protected]>. +Patch for Carp version mismatch contributed by Hakim Cassimally <[email protected]>. + =head1 COPYRIGHT Copyright (c) 2007 - 2010 the local::lib L</AUTHOR> and L</CONTRIBUTORS> as diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/t/classmethod.t new/local-lib-1.008010/t/classmethod.t --- old/local-lib-1.008004/t/classmethod.t 2011-02-18 04:54:09.000000000 +0100 +++ new/local-lib-1.008010/t/classmethod.t 2013-05-27 03:04:29.000000000 +0200 @@ -17,6 +17,7 @@ { +no warnings 'once'; local *File::Spec::rel2abs = sub { shift; 'FOO'.shift; }; is($c->resolve_relative_path('bar'),'FOObar'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/t/stackable.t new/local-lib-1.008010/t/stackable.t --- old/local-lib-1.008004/t/stackable.t 2011-02-24 22:48:45.000000000 +0100 +++ new/local-lib-1.008010/t/stackable.t 2013-02-25 19:36:28.000000000 +0100 @@ -2,17 +2,36 @@ use warnings; use Test::More; use File::Temp qw(tempdir); +use File::Spec; use Cwd; +use Config; -plan tests => 19; +plan tests => 24; use local::lib (); -my $dir1 = tempdir('test_local_lib-XXXXX', DIR => Cwd::abs_path('t'), CLEANUP => 1); -$dir1 = local::lib->ensure_dir_structure_for($dir1); +sub mk_temp_dir +{ + my $name_template = shift; + + my $path = tempdir($name_template, DIR => Cwd::abs_path('t'), CLEANUP => 1); + local::lib->ensure_dir_structure_for($path); + # On Win32 the path where the distribution is built usually contains + # spaces. This is a problem for some parts of the CPAN toolchain, so + # local::lib uses the GetShortPathName trick do get an alternate + # representation of the path that doesn't constain spaces. + return ($^O eq 'MSWin32') + ? Win32::GetShortPathName($path) + : $path +} + +my $dir1 = mk_temp_dir('test_local_lib-XXXXX'); +my $dir2 = mk_temp_dir('test_local_lib-XXXXX'); + +my ($dir1_arch, $dir2_arch) = map { File::Spec->catfile($_, qw'lib perl5', $Config{archname}) } $dir1, $dir2; +note $dir1_arch; +note $dir2_arch; -my $dir2 = tempdir('test_local_lib-XXXXX', DIR => Cwd::abs_path('t'), CLEANUP => 1); -$dir2 = local::lib->ensure_dir_structure_for($dir2); my $prev_active = () = local::lib->active_paths; @@ -20,6 +39,8 @@ is +() = local::lib->active_paths, $prev_active + 1, 'one active path'; like $ENV{PERL_LOCAL_LIB_ROOT}, qr/\Q$dir1/, 'added one dir in root'; like $ENV{PERL5LIB}, qr/\Q$dir1/, 'added one dir in lib'; +note $ENV{PERL5LIB}; +unlike $ENV{PERL5LIB}, qr/\Q$dir1_arch/, 'no arch in PERL5LIB'; like $ENV{PERL_MM_OPT}, qr/\Q$dir1/, 'first path is installation target'; local::lib->import($dir1); @@ -29,8 +50,10 @@ is +() = local::lib->active_paths, $prev_active + 2, 'two active paths'; like $ENV{PERL_LOCAL_LIB_ROOT}, qr/\Q$dir2/, 'added another dir in root'; like $ENV{PERL5LIB}, qr/\Q$dir2/, 'added another dir in lib'; +unlike $ENV{PERL5LIB}, qr/\Q$dir2_arch/, 'no arch in PERL5LIB'; like $ENV{PERL_LOCAL_LIB_ROOT}, qr/\Q$dir1/, 'first dir is still in root'; like $ENV{PERL5LIB}, qr/\Q$dir1/, 'first dir is still in lib'; +unlike $ENV{PERL5LIB}, qr/\Q$dir1_arch/, 'no arch in PERL5LIB'; like $ENV{PERL_MM_OPT}, qr/\Q$dir2/, 'second path is installation target'; local::lib->import($dir1); @@ -42,6 +65,8 @@ local::lib->import('--deactivate', $dir2); unlike $ENV{PERL_LOCAL_LIB_ROOT}, qr/\Q$dir2/, 'second dir was removed from root'; unlike $ENV{PERL5LIB}, qr/\Q$dir2/, 'second dir was removed from lib'; +unlike $ENV{PERL5LIB}, qr/\Q$dir2_arch/, 'no arch in PERL5LIB'; like $ENV{PERL_LOCAL_LIB_ROOT}, qr/\Q$dir1/, q{first dir didn't go away from root}; like $ENV{PERL5LIB}, qr/\Q$dir1/, q{first dir didn't go away from lib}; +unlike $ENV{PERL5LIB}, qr/\Q$dir1_arch/, 'no arch in PERL5LIB'; like $ENV{PERL_MM_OPT}, qr/\Q$dir1/, 'first dir stays installation target'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/local-lib-1.008004/t/subroutine-in-inc.t new/local-lib-1.008010/t/subroutine-in-inc.t --- old/local-lib-1.008004/t/subroutine-in-inc.t 1970-01-01 01:00:00.000000000 +0100 +++ new/local-lib-1.008010/t/subroutine-in-inc.t 2013-02-25 19:36:28.000000000 +0100 @@ -0,0 +1,29 @@ +#!/usr/bin/perl -w + +use Test::More; + +plan qw/no_plan/; + +use File::Spec; +use Cwd; +use File::Temp qw/ tempdir /; +my $base; + +sub CODE_in_INC() { + return scalar grep { ref eq 'CODE' } @INC; +} + +my $dir; + +BEGIN { + $base = CODE_in_INC; + unshift @INC, sub { }; + splice @INC, 3, 1, sub { }; + push @INC, sub { }; + + $dir = tempdir( DIR => Cwd::abs_path('t'), CLEANUP => 1 ); +} + +use local::lib( $dir ); + +is( CODE_in_INC, $base + 3 ); -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
