Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Carton for openSUSE:Factory 
checked in at 2021-01-21 21:54:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Carton (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Carton.new.28504 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Carton"

Thu Jan 21 21:54:05 2021 rev:11 rq:842810 version:1.0.34

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Carton/perl-Carton.changes  2016-05-30 
09:57:43.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Carton.new.28504/perl-Carton.changes       
2021-01-21 21:54:05.881766692 +0100
@@ -1,0 +2,26 @@
+Wed Apr  3 06:46:17 UTC 2019 - Stephan Kulow <[email protected]>
+
+- updated to 1.0.34
+   see /usr/share/doc/packages/perl-Carton/Changes
+
+  v1.0.34  2018-06-28 10:38:01 PDT
+          - workaround carton fatpack by explicitly loading 
Menlo::Index::Mirror
+  
+  v1.0.33  2018-05-04 11:22:45 PDT
+          - bundle: support environment where IO::Compress::Gzip is not 
available
+  
+  v1.0.32  2018-05-04 11:01:36 PDT
+          - Write out 02packages.details.txt.gz in carton bundle so that you 
can use
+            plain cpanm to install them
+  
+  v1.0.31  2018-04-28 08:31:27 PDT
+          - Fix carton fatpack to include runtime dependencies for Menlo #571
+  
+  v1.0.30  2018-04-25 02:42:18 PDT
+          - depend on Menlo::CLI::Compat for Menlo-Legacy
+  
+  v1.0.29  2018-04-21 19:27:13 CEST
+          - switched from JSON to JSON::PP
+          - use Menlo to install modules rather than App::cpanminus::fatscript
+
+-------------------------------------------------------------------

Old:
----
  Carton-v1.0.28.tar.gz

New:
----
  Carton-v1.0.34.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Carton.spec ++++++
--- /var/tmp/diff_new_pack.WSwala/_old  2021-01-21 21:54:06.477766748 +0100
+++ /var/tmp/diff_new_pack.WSwala/_new  2021-01-21 21:54:06.477766748 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Carton
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,48 +12,44 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           perl-Carton
-Version:        1.0.28
+Version:        1.0.34
 Release:        0
 %define cpan_name Carton
 Summary:        Perl module dependency manager (aka Bundler for Perl)
-License:        Artistic-1.0 or GPL-1.0+
+License:        Artistic-1.0 OR GPL-1.0-or-later
 Group:          Development/Libraries/Perl
-Url:            http://search.cpan.org/dist/Carton/
-Source0:        
http://www.cpan.org/authors/id/M/MI/MIYAGAWA/%{cpan_name}-v%{version}.tar.gz
+Url:            https://metacpan.org/release/%{cpan_name}
+Source0:        
https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/%{cpan_name}-v%{version}.tar.gz
 Source1:        cpanspec.yml
 BuildArch:      noarch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  perl
 BuildRequires:  perl-macros
-BuildRequires:  perl(App::cpanminus) >= 1.703
 BuildRequires:  perl(CPAN::Meta) >= 2.120921
 BuildRequires:  perl(CPAN::Meta::Requirements) >= 2.121000
 BuildRequires:  perl(Class::Tiny) >= 1.001
 BuildRequires:  perl(Getopt::Long) >= 2.39
-BuildRequires:  perl(JSON) >= 2.53
+BuildRequires:  perl(JSON::PP) >= 2.27300
+BuildRequires:  perl(Menlo::CLI::Compat) >= 1.9018
 BuildRequires:  perl(Module::CPANfile) >= 0.9031
 BuildRequires:  perl(Module::CoreList)
-BuildRequires:  perl(Module::Metadata) >= 1.000003
-BuildRequires:  perl(Module::Reader) >= 0.002
 BuildRequires:  perl(Path::Tiny) >= 0.033
 BuildRequires:  perl(Try::Tiny) >= 0.09
 BuildRequires:  perl(parent) >= 0.223
 BuildRequires:  perl(version) >= 0.77
-Requires:       perl(App::cpanminus) >= 1.703
 Requires:       perl(CPAN::Meta) >= 2.120921
 Requires:       perl(CPAN::Meta::Requirements) >= 2.121000
 Requires:       perl(Class::Tiny) >= 1.001
 Requires:       perl(Getopt::Long) >= 2.39
-Requires:       perl(JSON) >= 2.53
+Requires:       perl(JSON::PP) >= 2.27300
+Requires:       perl(Menlo::CLI::Compat) >= 1.9018
 Requires:       perl(Module::CPANfile) >= 0.9031
 Requires:       perl(Module::CoreList)
-Requires:       perl(Module::Metadata) >= 1.000003
-Requires:       perl(Module::Reader) >= 0.002
 Requires:       perl(Path::Tiny) >= 0.033
 Requires:       perl(Try::Tiny) >= 0.09
 Requires:       perl(parent) >= 0.223
@@ -76,11 +72,11 @@
 find . -type f ! -name \*.pl -print0 | xargs -0 chmod 644
 
 %build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-%{__make} %{?_smp_mflags}
+perl Makefile.PL INSTALLDIRS=vendor
+make %{?_smp_mflags}
 
 %check
-%{__make} test
+make test
 
 %install
 %perl_make_install
@@ -89,6 +85,7 @@
 
 %files -f %{name}.files
 %defattr(-,root,root,755)
-%doc Changes LICENSE README
+%doc Changes README
+%license LICENSE
 
 %changelog

++++++ Carton-v1.0.28.tar.gz -> Carton-v1.0.34.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/Changes new/Carton-v1.0.34/Changes
--- old/Carton-v1.0.28/Changes  2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/Changes  2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,25 @@
 Revision history for carton
 
+v1.0.34  2018-06-28 10:38:01 PDT
+        - workaround carton fatpack by explicitly loading Menlo::Index::Mirror
+
+v1.0.33  2018-05-04 11:22:45 PDT
+        - bundle: support environment where IO::Compress::Gzip is not available
+
+v1.0.32  2018-05-04 11:01:36 PDT
+        - Write out 02packages.details.txt.gz in carton bundle so that you can 
use
+          plain cpanm to install them
+
+v1.0.31  2018-04-28 08:31:27 PDT
+        - Fix carton fatpack to include runtime dependencies for Menlo #571
+
+v1.0.30  2018-04-25 02:42:18 PDT
+        - depend on Menlo::CLI::Compat for Menlo-Legacy
+
+v1.0.29  2018-04-21 19:27:13 CEST
+        - switched from JSON to JSON::PP
+        - use Menlo to instlal modules rather than App::cpanminus::fatscript
+
 v1.0.28  2016-05-23 22:30:48 PDT
         - Emit the line when parser error happened
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/MANIFEST new/Carton-v1.0.34/MANIFEST
--- old/Carton-v1.0.28/MANIFEST 2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/MANIFEST 2018-06-28 19:38:04.000000000 +0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest 
v6.005.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest 
v6.012.
 Changes
 LICENSE
 MANIFEST
@@ -46,6 +46,7 @@
 xt/cli/cpanfile.t
 xt/cli/deployment.t
 xt/cli/deps_phase.t
+xt/cli/dist.t
 xt/cli/exec.t
 xt/cli/freeze.t
 xt/cli/help.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/META.json new/Carton-v1.0.34/META.json
--- old/Carton-v1.0.28/META.json        2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/META.json        2018-06-28 19:38:04.000000000 +0200
@@ -4,7 +4,7 @@
       "Tatsuhiko Miyagawa"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Zilla version 6.005, Dist::Milla version v1.0.16, 
CPAN::Meta::Converter version 2.150005",
+   "generated_by" : "Dist::Milla version v1.0.20, Dist::Zilla version 6.012, 
CPAN::Meta::Converter version 2.150010",
    "license" : [
       "perl_5"
    ],
@@ -33,7 +33,7 @@
       "develop" : {
          "requires" : {
             "Capture::Tiny" : "0",
-            "Dist::Milla" : "v1.0.16",
+            "Dist::Milla" : "v1.0.20",
             "Test::More" : "0.9",
             "Test::Pod" : "1.41",
             "Test::Requires" : "0"
@@ -45,16 +45,14 @@
             "File::pushd" : "0"
          },
          "requires" : {
-            "App::cpanminus" : "1.703",
             "CPAN::Meta" : "2.120921",
             "CPAN::Meta::Requirements" : "2.121",
             "Class::Tiny" : "1.001",
             "Getopt::Long" : "2.39",
-            "JSON" : "2.53",
+            "JSON::PP" : "2.27300",
+            "Menlo::CLI::Compat" : "1.9018",
             "Module::CPANfile" : "0.9031",
             "Module::CoreList" : "0",
-            "Module::Metadata" : "1.000003",
-            "Module::Reader" : "0.002",
             "Path::Tiny" : "0.033",
             "Try::Tiny" : "0.09",
             "parent" : "0.223",
@@ -74,15 +72,18 @@
          "web" : "https://github.com/perl-carton/carton";
       }
    },
-   "version" : "v1.0.28",
+   "version" : "v1.0.34",
    "x_contributors" : [
       "Christian Walde <[email protected]>",
+      "Dan Book <[email protected]>",
       "David Golden <[email protected]>",
       "David Steinbrunner <[email protected]>",
       "Jonathan Steinert <[email protected]>",
       "Jose Luis Martinez <[email protected]>",
       "Kan Fushihara <[email protected]>",
+      "Karen Etheridge <[email protected]>",
       "Masahiro Chiba <[email protected]>",
+      "Michael Schout <[email protected]>",
       "NAKAGAWA Masaki <[email protected]>",
       "Olaf Alders <[email protected]>",
       "Pedro Figueiredo <[email protected]>",
@@ -93,6 +94,9 @@
       "Tatsuhiko Miyagawa <[email protected]>",
       "WATANABE Hiroaki <[email protected]>",
       "Yanick Champoux <[email protected]>"
-   ]
+   ],
+   "x_generated_by_perl" : "v5.20.1",
+   "x_serialization_backend" : "Cpanel::JSON::XS version 4.02",
+   "x_static_install" : 0
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/META.yml new/Carton-v1.0.34/META.yml
--- old/Carton-v1.0.28/META.yml 2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/META.yml 2018-06-28 19:38:04.000000000 +0200
@@ -7,7 +7,7 @@
   ExtUtils::MakeMaker: '0'
   version: '0.77'
 dynamic_config: 0
-generated_by: 'Dist::Zilla version 6.005, Dist::Milla version v1.0.16, 
CPAN::Meta::Converter version 2.150005'
+generated_by: 'Dist::Milla version v1.0.20, Dist::Zilla version 6.012, 
CPAN::Meta::Converter version 2.150010'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -25,16 +25,14 @@
   App::FatPacker: '0.009018'
   File::pushd: '0'
 requires:
-  App::cpanminus: '1.703'
   CPAN::Meta: '2.120921'
   CPAN::Meta::Requirements: '2.121'
   Class::Tiny: '1.001'
   Getopt::Long: '2.39'
-  JSON: '2.53'
+  JSON::PP: '2.27300'
+  Menlo::CLI::Compat: '1.9018'
   Module::CPANfile: '0.9031'
   Module::CoreList: '0'
-  Module::Metadata: '1.000003'
-  Module::Reader: '0.002'
   Path::Tiny: '0.033'
   Try::Tiny: '0.09'
   parent: '0.223'
@@ -43,15 +41,18 @@
   bugtracker: https://github.com/perl-carton/carton/issues
   homepage: https://github.com/perl-carton/carton
   repository: https://github.com/perl-carton/carton.git
-version: v1.0.28
+version: v1.0.34
 x_contributors:
   - 'Christian Walde <[email protected]>'
+  - 'Dan Book <[email protected]>'
   - 'David Golden <[email protected]>'
   - 'David Steinbrunner <[email protected]>'
   - 'Jonathan Steinert <[email protected]>'
   - 'Jose Luis Martinez <[email protected]>'
   - 'Kan Fushihara <[email protected]>'
+  - 'Karen Etheridge <[email protected]>'
   - 'Masahiro Chiba <[email protected]>'
+  - 'Michael Schout <[email protected]>'
   - 'NAKAGAWA Masaki <[email protected]>'
   - 'Olaf Alders <[email protected]>'
   - 'Pedro Figueiredo <[email protected]>'
@@ -62,3 +63,6 @@
   - 'Tatsuhiko Miyagawa <[email protected]>'
   - 'WATANABE Hiroaki <[email protected]>'
   - 'Yanick Champoux <[email protected]>'
+x_generated_by_perl: v5.20.1
+x_serialization_backend: 'YAML::Tiny version 1.73'
+x_static_install: 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/Makefile.PL 
new/Carton-v1.0.34/Makefile.PL
--- old/Carton-v1.0.28/Makefile.PL      2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/Makefile.PL      2018-06-28 19:38:04.000000000 +0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker 
v6.005.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker 
v6.012.
 use strict;
 use warnings;
 
@@ -21,21 +21,19 @@
   "MIN_PERL_VERSION" => "5.008005",
   "NAME" => "Carton",
   "PREREQ_PM" => {
-    "App::cpanminus" => "1.703",
     "CPAN::Meta" => "2.120921",
     "CPAN::Meta::Requirements" => "2.121",
     "Class::Tiny" => "1.001",
     "Getopt::Long" => "2.39",
-    "JSON" => "2.53",
+    "JSON::PP" => "2.27300",
+    "Menlo::CLI::Compat" => "1.9018",
     "Module::CPANfile" => "0.9031",
     "Module::CoreList" => 0,
-    "Module::Metadata" => "1.000003",
-    "Module::Reader" => "0.002",
     "Path::Tiny" => "0.033",
     "Try::Tiny" => "0.09",
     "parent" => "0.223"
   },
-  "VERSION" => "v1.0.28",
+  "VERSION" => "v1.0.34",
   "test" => {
     "TESTS" => "t/*.t"
   }
@@ -43,16 +41,14 @@
 
 
 my %FallbackPrereqs = (
-  "App::cpanminus" => "1.703",
   "CPAN::Meta" => "2.120921",
   "CPAN::Meta::Requirements" => "2.121",
   "Class::Tiny" => "1.001",
   "Getopt::Long" => "2.39",
-  "JSON" => "2.53",
+  "JSON::PP" => "2.27300",
+  "Menlo::CLI::Compat" => "1.9018",
   "Module::CPANfile" => "0.9031",
   "Module::CoreList" => 0,
-  "Module::Metadata" => "1.000003",
-  "Module::Reader" => "0.002",
   "Path::Tiny" => "0.033",
   "Try::Tiny" => "0.09",
   "parent" => "0.223"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/README new/Carton-v1.0.34/README
--- old/Carton-v1.0.28/README   2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/README   2018-06-28 19:38:04.000000000 +0200
@@ -16,6 +16,10 @@
       # Other developer's machine, or on a deployment box
       > carton install
       > carton exec starman -p 8080 myapp.psgi
+    
+      # carton exec is optional
+      > perl -Ilocal/lib/perl5 local/bin/starman -p 8080 myapp.psgi
+      > PERL5LIB=/path/to/local/lib/perl5 /path/to/local/bin/starman -p 8080 
myapp.psgi
 
 AVAILABILITY
 
@@ -24,8 +28,8 @@
     stripped from core, Carton is not expected to work correctly.
 
     Also, Carton requires you to run your command/application with carton
-    exec command, which means it's difficult or impossible to run in an
-    embedded perl use case such as mod_perl.
+    exec command or to include the local/lib/perl5 directory in your Perl
+    library search path (using PERL5LIB, -I, or lib).
 
 DESCRIPTION
 
@@ -75,6 +79,24 @@
       > git add cpanfile cpanfile.snapshot
       > git commit -m "Added Plack and Starman"
 
+ Specifying a CPAN distribution
+
+    You can pin a module resolution to a specific distribution using a
+    combination of dist, mirror and url options in cpanfile.
+
+      # specific distribution on PAUSE
+      requires 'Plack', '== 0.9980',
+        dist => 'MIYAGAWA/Plack-0.9980.tar.gz';
+    
+      # local mirror (darkpan)
+      requires 'Plack', '== 0.9981',
+        dist => 'MYCOMPANY/Plack-0.9981-p1.tar.gz',
+        mirror => 'https://pause.local/';
+    
+      # URL
+      requires 'Plack', '== 1.1000',
+        url => 
'https://pause.local/authors/id/M/MY/MYCOMPANY/Plack-1.1000.tar.gz';
+
  Deploying your application
 
     Once you've done installing all the dependencies, you can push your
@@ -107,6 +129,12 @@
     option, you can avoid querying for a database like CPAN Meta DB or
     downloading files from CPAN mirrors upon deployment time.
 
+    As of Carton v1.0.32, the bundle also includes a package index allowing
+    you to simply use cpanm (which has a standalone version) instead of
+    installing Carton on a remote machine.
+
+      > cpanm -L local --from "$PWD/vendor/cache" --installdeps --notest 
--quiet .
+
 PERL VERSIONS
 
     When you take a snapshot in one perl version and deploy on another
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/cpanfile new/Carton-v1.0.34/cpanfile
--- old/Carton-v1.0.28/cpanfile 2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/cpanfile 2018-06-28 19:38:04.000000000 +0200
@@ -4,8 +4,7 @@
 
 requires 'perl', '5.8.5';
 
-requires 'JSON', 2.53;
-requires 'Module::Metadata', 1.000003;
+requires 'JSON::PP', '2.27300';
 requires 'Module::CPANfile', 0.9031;
 
 requires 'Try::Tiny', 0.09;
@@ -14,14 +13,13 @@
 requires 'Class::Tiny', 1.001;
 requires 'Path::Tiny', 0.033;
 
-requires 'App::cpanminus', 1.7030;
+requires 'Menlo::CLI::Compat', '1.9018';
 
 requires 'CPAN::Meta', 2.120921;
 requires 'CPAN::Meta::Requirements', 2.121;
 requires 'Module::CoreList';
 
 # for fatpack
-requires 'Module::Reader', 0.002;
 recommends 'File::pushd';
 recommends 'App::FatPacker', 0.009018;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/lib/Carton/Builder.pm 
new/Carton-v1.0.34/lib/Carton/Builder.pm
--- old/Carton-v1.0.28/lib/Carton/Builder.pm    2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/lib/Carton/Builder.pm    2018-06-28 19:38:04.000000000 
+0200
@@ -6,7 +6,6 @@
     cascade => sub { 1 },
     without => sub { [] },
     cpanfile => undef,
-    fatscript => sub { $_[0]->_build_fatscript },
 };
 
 sub effective_mirrors {
@@ -42,12 +41,35 @@
             warn "Couldn't find @{[ $dist->pathname ]}\n";
         }
     }
+
+    my $has_io_gzip = eval { require IO::Compress::Gzip; 1 };
+
+    my $ext   = $has_io_gzip ? ".txt.gz" : ".txt";
+    my $index = $cache_path->child("modules/02packages.details$ext");
+    $index->parent->mkpath;
+
+    warn "Writing $index\n";
+
+    my $out = $index->openw;
+    if ($has_io_gzip) {
+        $out = IO::Compress::Gzip->new($out)
+          or die "gzip failed: $IO::Compress::Gzip::GzipError";
+    }
+
+    $snapshot->index->write($out);
+    close $out;
+
+    unless ($has_io_gzip) {
+        unlink "$index.gz";
+        !system 'gzip', $index
+          or die "Running gzip command failed: $!";
+    }
 }
 
 sub install {
     my($self, $path) = @_;
 
-    $self->run_cpanm(
+    $self->run_install(
         "-L", $path,
         (map { ("--mirror", $_->url) } $self->effective_mirrors),
         ( $self->index ? ("--mirror-index", $self->index) : () ),
@@ -77,7 +99,7 @@
 sub update {
     my($self, $path, @modules) = @_;
 
-    $self->run_cpanm(
+    $self->run_install(
         "-L", $path,
         (map { ("--mirror", $_->url) } $self->effective_mirrors),
         ( $self->custom_mirror ? "--mirror-only" : () ),
@@ -86,29 +108,17 @@
     ) or die "Updating modules failed\n";
 }
 
-sub _build_fatscript {
-    my $self = shift;
+sub run_install {
+    my($self, @args) = @_;
 
-    my $fatscript;
-    if ($Carton::Fatpacked) {
-        require Module::Reader;
-        my $content = 
Module::Reader::module_content('App::cpanminus::fatscript')
-            or die "Can't locate App::cpanminus::fatscript";
-        $fatscript = Path::Tiny->tempfile;
-        $fatscript->spew($content);
-    } else {
-        require Module::Metadata;
-        $fatscript = 
Module::Metadata->find_module_by_name("App::cpanminus::fatscript")
-            or die "Can't locate App::cpanminus::fatscript";
-    }
+    require Menlo::CLI::Compat;
+    local $ENV{PERL_CPANM_OPT};
 
-    return $fatscript;
-}
+    my $cli = Menlo::CLI::Compat->new;
+    $cli->parse_options("--quiet", "--notest", @args);
+    $cli->run;
 
-sub run_cpanm {
-    my($self, @args) = @_;
-    local $ENV{PERL_CPANM_OPT};
-    !system $^X, $self->fatscript, "--quiet", "--notest", @args;
+    !$cli->status;
 }
 
 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/lib/Carton/Doc/Bundle.pod 
new/Carton-v1.0.34/lib/Carton/Doc/Bundle.pod
--- old/Carton-v1.0.28/lib/Carton/Doc/Bundle.pod        2016-05-24 
07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/lib/Carton/Doc/Bundle.pod        2018-06-28 
19:38:04.000000000 +0200
@@ -13,8 +13,8 @@
 resolving dependencies in the snapshot file.snapshot.
 
 Bundled modules can be committed to a version control system, or
-transferred to another host with scp/rsync etc. to use with C<carton
-install --cached>.
+transferred to another host with scp/rsync etc. to install with either
+C<carton install --cached>, or a plain cpanm command with:
+
+  cpanm --from file://$PWD/vendor/cache -L local --installdeps .
 
-See also C<carton fatpack> that generates C<carton> executable in
-C<vendor/bin>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/lib/Carton/Doc/Fatpack.pod 
new/Carton-v1.0.34/lib/Carton/Doc/Fatpack.pod
--- old/Carton-v1.0.28/lib/Carton/Doc/Fatpack.pod       2016-05-24 
07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/lib/Carton/Doc/Fatpack.pod       2018-06-28 
19:38:04.000000000 +0200
@@ -8,6 +8,12 @@
 
 =head1 DESCRIPTION
 
+B<WARNING>: It is known for this command to create an executable that
+is not sufficient to run standalone in some environments, especially
+when L<local::lib> is enabled. It is recommended to use the standard
+C<cpanm> command to install bundle created by C<carton bundle>
+command. See C<carton -h bundle> for more details.
+
 This command creates a fatpack executable of C<carton> in
 C<vendor/bin> directory, so that it can be used to bootstrap
 deployment process, combined with C<carton bundle> and C<carton
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/lib/Carton/Packer.pm 
new/Carton-v1.0.34/lib/Carton/Packer.pm
--- old/Carton-v1.0.28/lib/Carton/Packer.pm     2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/lib/Carton/Packer.pm     2018-06-28 19:38:04.000000000 
+0200
@@ -56,10 +56,24 @@
 }
 
 sub required_modules {
-    my($self, $packer) = @_;
+    my $self = shift;
 
-    my $meta = $self->installed_meta('Carton')
-        or die "Couldn't find install metadata for Carton";
+    my %requirements;
+    for my $dist (qw( Carton Menlo-Legacy Menlo )) {
+        $requirements{$_} = 1 for $self->required_modules_for($dist);
+    }
+
+    # these modules are needed, but lazy-loaded, so FatPacker wont bundle them 
by default.
+    my @extra = qw(Menlo::Index::Mirror);
+
+    [ keys %requirements, @extra ];
+}
+
+sub required_modules_for {
+    my($self, $dist) = @_;
+
+    my $meta = $self->installed_meta($dist)
+        or die "Couldn't find install metadata for $dist";
 
     my %excludes = (
         perl => 1,
@@ -67,10 +81,8 @@
         'Module::Build' => 1,
     );
 
-    my @requirements = grep !$excludes{$_},
+    grep !$excludes{$_},
         $meta->effective_prereqs->requirements_for('runtime', 
'requires')->required_modules;
-
-    return \@requirements;
 }
 
 sub installed_meta {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/lib/Carton/Util.pm 
new/Carton-v1.0.34/lib/Carton/Util.pm
--- old/Carton-v1.0.28/lib/Carton/Util.pm       2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/lib/Carton/Util.pm       2018-06-28 19:38:04.000000000 
+0200
@@ -18,14 +18,14 @@
 }
 
 sub from_json {
-    require JSON;
-    JSON::decode_json(@_);
+    require JSON::PP;
+    JSON::PP->new->utf8->decode($_[0])
 }
 
 sub to_json {
     my($data) = @_;
-    require JSON;
-    JSON->new->utf8->pretty->canonical->encode($data);
+    require JSON::PP;
+    JSON::PP->new->utf8->pretty->canonical->encode($data);
 }
 
 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/lib/Carton.pm 
new/Carton-v1.0.34/lib/Carton.pm
--- old/Carton-v1.0.28/lib/Carton.pm    2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/lib/Carton.pm    2018-06-28 19:38:04.000000000 +0200
@@ -1,7 +1,7 @@
 package Carton;
 use strict;
 use 5.008_005;
-use version; our $VERSION = version->declare("v1.0.28");
+use version; our $VERSION = version->declare("v1.0.34");
 
 1;
 __END__
@@ -25,6 +25,10 @@
   > carton install
   > carton exec starman -p 8080 myapp.psgi
 
+  # carton exec is optional
+  > perl -Ilocal/lib/perl5 local/bin/starman -p 8080 myapp.psgi
+  > PERL5LIB=/path/to/local/lib/perl5 /path/to/local/bin/starman -p 8080 
myapp.psgi
+
 =head1 AVAILABILITY
 
 Carton only works with perl installation with the complete set of core
@@ -32,8 +36,9 @@
 stripped from core, Carton is not expected to work correctly.
 
 Also, Carton requires you to run your command/application with
-C<carton exec> command, which means it's difficult or impossible to
-run in an embedded perl use case such as mod_perl.
+C<carton exec> command or to include the I<local/lib/perl5> directory
+in your Perl library search path (using C<PERL5LIB>, C<-I>, or
+L<lib>).
 
 =head1 DESCRIPTION
 
@@ -83,6 +88,24 @@
   > git add cpanfile cpanfile.snapshot
   > git commit -m "Added Plack and Starman"
 
+=head2 Specifying a CPAN distribution
+
+You can pin a module resolution to a specific distribution using a
+combination of C<dist>, C<mirror> and C<url> options in C<cpanfile>.
+
+  # specific distribution on PAUSE
+  requires 'Plack', '== 0.9980',
+    dist => 'MIYAGAWA/Plack-0.9980.tar.gz';
+
+  # local mirror (darkpan)
+  requires 'Plack', '== 0.9981',
+    dist => 'MYCOMPANY/Plack-0.9981-p1.tar.gz',
+    mirror => 'https://pause.local/';
+
+  # URL
+  requires 'Plack', '== 1.1000',
+    url => 'https://pause.local/authors/id/M/MY/MYCOMPANY/Plack-1.1000.tar.gz';
+
 =head2 Deploying your application
 
 Once you've done installing all the dependencies, you can push your
@@ -116,6 +139,13 @@
 CPAN Meta DB or downloading files from CPAN mirrors upon deployment
 time.
 
+As of Carton v1.0.32, the bundle also includes a package index
+allowing you to simply use L<cpanm> (which has a
+L<standalone version|App::cpanminus/"Downloading the standalone executable">)
+instead of installing Carton on a remote machine.
+
+  > cpanm -L local --from "$PWD/vendor/cache" --installdeps --notest --quiet .
+
 =head1 PERL VERSIONS
 
 When you take a snapshot in one perl version and deploy on another
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/t/author-pod-syntax.t 
new/Carton-v1.0.34/t/author-pod-syntax.t
--- old/Carton-v1.0.28/t/author-pod-syntax.t    2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/t/author-pod-syntax.t    2018-06-28 19:38:04.000000000 
+0200
@@ -2,8 +2,8 @@
 
 BEGIN {
   unless ($ENV{AUTHOR_TESTING}) {
-    require Test::More;
-    Test::More::plan(skip_all => 'these tests are for testing by the author');
+    print qq{1..0 # SKIP these tests are for testing by the author\n};
+    exit
   }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/bundle.t 
new/Carton-v1.0.34/xt/cli/bundle.t
--- old/Carton-v1.0.28/xt/cli/bundle.t  2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/bundle.t  2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/check.t 
new/Carton-v1.0.34/xt/cli/check.t
--- old/Carton-v1.0.28/xt/cli/check.t   2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/check.t   2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 subtest 'carton check fails when there is no lock' => sub {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/cpanfile.t 
new/Carton-v1.0.34/xt/cli/cpanfile.t
--- old/Carton-v1.0.28/xt/cli/cpanfile.t        2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/xt/cli/cpanfile.t        2018-06-28 19:38:04.000000000 
+0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 subtest 'carton install --cpanfile' => sub {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/deployment.t 
new/Carton-v1.0.34/xt/cli/deployment.t
--- old/Carton-v1.0.28/xt/cli/deployment.t      2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/xt/cli/deployment.t      2018-06-28 19:38:04.000000000 
+0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/deps_phase.t 
new/Carton-v1.0.34/xt/cli/deps_phase.t
--- old/Carton-v1.0.28/xt/cli/deps_phase.t      2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/xt/cli/deps_phase.t      2018-06-28 19:38:04.000000000 
+0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/dist.t 
new/Carton-v1.0.34/xt/cli/dist.t
--- old/Carton-v1.0.28/xt/cli/dist.t    1970-01-01 01:00:00.000000000 +0100
+++ new/Carton-v1.0.34/xt/cli/dist.t    2018-06-28 19:38:04.000000000 +0200
@@ -0,0 +1,24 @@
+use strict;
+use Test::More;
+use lib ".";
+use xt::CLI;
+
+subtest 'with pinned dist' => sub {
+    my $app = cli();
+    $app->write_file('cpanfile', <<EOF);
+requires 'Try::Tiny', '0.29',
+  dist => 'ETHER/Try-Tiny-0.29.tar.gz';
+EOF
+    $app->run("install");
+
+    $app->run("list");
+    like $app->stdout, qr/Try-Tiny-0\.29/;
+
+    $app->run("exec", "perl", "-e", "use Try::Tiny\ 1");
+    like $app->stderr, qr/Try::Tiny .* 0\.29/;
+
+    my $content = $app->dir->child('cpanfile.snapshot')->slurp;
+    like $content, qr/ETHER\/Try-Tiny-0\.29/;
+};
+
+done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/exec.t 
new/Carton-v1.0.34/xt/cli/exec.t
--- old/Carton-v1.0.28/xt/cli/exec.t    2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/exec.t    2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 subtest 'carton exec without a command', sub {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/freeze.t 
new/Carton-v1.0.34/xt/cli/freeze.t
--- old/Carton-v1.0.28/xt/cli/freeze.t  2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/freeze.t  2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/help.t 
new/Carton-v1.0.34/xt/cli/help.t
--- old/Carton-v1.0.28/xt/cli/help.t    2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/help.t    2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/install.t 
new/Carton-v1.0.34/xt/cli/install.t
--- old/Carton-v1.0.28/xt/cli/install.t 2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/install.t 2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 subtest 'carton install with version range' => sub {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/json_pp.t 
new/Carton-v1.0.34/xt/cli/json_pp.t
--- old/Carton-v1.0.28/xt/cli/json_pp.t 2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/json_pp.t 2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 plan skip_all => "perl <= 5.14" if $] >= 5.015;
@@ -8,7 +9,7 @@
     my $app = cli();
 
     $app->write_cpanfile(<<EOF);
-requires 'JSON';
+requires 'JSON::PP';
 requires 'CPAN::Meta', '2.12';
 EOF
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/mirror.t 
new/Carton-v1.0.34/xt/cli/mirror.t
--- old/Carton-v1.0.28/xt/cli/mirror.t  2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/mirror.t  2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 my $cwd = Path::Tiny->cwd;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/mismatch.t 
new/Carton-v1.0.34/xt/cli/mismatch.t
--- old/Carton-v1.0.28/xt/cli/mismatch.t        2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/xt/cli/mismatch.t        2018-06-28 19:38:04.000000000 
+0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/no_cpanfile.t 
new/Carton-v1.0.34/xt/cli/no_cpanfile.t
--- old/Carton-v1.0.28/xt/cli/no_cpanfile.t     2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/xt/cli/no_cpanfile.t     2018-06-28 19:38:04.000000000 
+0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/perl.t 
new/Carton-v1.0.34/xt/cli/perl.t
--- old/Carton-v1.0.28/xt/cli/perl.t    2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/perl.t    2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/snapshot.t 
new/Carton-v1.0.34/xt/cli/snapshot.t
--- old/Carton-v1.0.28/xt/cli/snapshot.t        2016-05-24 07:30:51.000000000 
+0200
+++ new/Carton-v1.0.34/xt/cli/snapshot.t        2018-06-28 19:38:04.000000000 
+0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 subtest 'snapshot file has canonical representation' => sub {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/subdir.t 
new/Carton-v1.0.34/xt/cli/subdir.t
--- old/Carton-v1.0.28/xt/cli/subdir.t  2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/subdir.t  2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 subtest 'carton exec in subdir', sub {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/tree.t 
new/Carton-v1.0.34/xt/cli/tree.t
--- old/Carton-v1.0.28/xt/cli/tree.t    2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/tree.t    2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/update.t 
new/Carton-v1.0.34/xt/cli/update.t
--- old/Carton-v1.0.28/xt/cli/update.t  2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/update.t  2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 subtest 'carton update NonExistentModule' => sub {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/version.t 
new/Carton-v1.0.34/xt/cli/version.t
--- old/Carton-v1.0.28/xt/cli/version.t 2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/version.t 2018-06-28 19:38:04.000000000 +0200
@@ -1,6 +1,7 @@
 use strict;
 use Test::More;
 
+use lib ".";
 use xt::CLI;
 
 my $app = cli();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Carton-v1.0.28/xt/cli/without.t 
new/Carton-v1.0.34/xt/cli/without.t
--- old/Carton-v1.0.28/xt/cli/without.t 2016-05-24 07:30:51.000000000 +0200
+++ new/Carton-v1.0.34/xt/cli/without.t 2018-06-28 19:38:04.000000000 +0200
@@ -1,5 +1,6 @@
 use strict;
 use Test::More;
+use lib ".";
 use xt::CLI;
 
 subtest 'carton install --without develop' => sub {

Reply via email to