[carton] 280/472: Experimental: Make carton install save dists to local/cache, then carton bundle copy the tarballs to vendor.

Lucas Kanashiro kanashiro-guest at moszumanska.debian.org
Fri Jul 24 00:38:55 UTC 2015


This is an automated email from the git hooks/post-receive script.

kanashiro-guest pushed a commit to branch master
in repository carton.

commit a1b4a1c871443d863b53727c454ea58fb60dbda9
Author: Tatsuhiko Miyagawa <miyagawa at bulknews.net>
Date:   Wed Jun 5 13:09:56 2013 +0900

    Experimental: Make carton install save dists to local/cache, then carton bundle copy the tarballs to vendor.
---
 lib/Carton/Builder.pm | 28 ++++++++++++++++------------
 lib/Carton/CLI.pm     | 14 ++++++--------
 2 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/lib/Carton/Builder.pm b/lib/Carton/Builder.pm
index 5f3a3f3..1edaf29 100644
--- a/lib/Carton/Builder.pm
+++ b/lib/Carton/Builder.pm
@@ -1,6 +1,8 @@
 package Carton::Builder;
 use strict;
-use File::Temp;
+use File::Path ();
+use File::Basename ();
+use File::Copy ();
 use Moo;
 
 has mirror  => (is => 'rw');
@@ -26,19 +28,20 @@ sub custom_mirror {
 }
 
 sub bundle {
-    my($self, $path) = @_;
+    my($self, $path, $cache_path, $lock) = @_;
 
-    my $temp = File::Temp::tempdir(CLEANUP => 1); # ignore installed
+    for my $dist ($lock->distributions) {
+        my $source = "$path/cache/authors/id/" . $dist->pathname;
+        my $target = "$cache_path/authors/id/" . $dist->pathname;
 
-    $self->run_cpanm(
-        "-L", $temp,
-        (map { ("--mirror", $_->url) } $self->effective_mirrors),
-        "--mirror-index", $self->index,
-        "--skip-satisfied",
-        "--save-dists", $path,
-        "--with-develop",
-        "--installdeps", ".",
-    );
+        if (-f $source) {
+            warn "Copying ", $dist->pathname, "\n";
+            File::Path::mkpath([ File::Basename::dirname($target) ], 0, 0777);
+            File::Copy::copy($source, $target) or warn "$target: $!";
+        } else {
+            warn "Couldn't find @{[ $dist->pathname ]}\n";
+        }
+    }
 }
 
 sub install {
@@ -51,6 +54,7 @@ sub install {
         ( $self->index ? ("--mirror-index", $self->index) : () ),
         ( $self->cascade ? "--cascade-search" : () ),
         ( $self->custom_mirror ? "--mirror-only" : () ),
+        "--save-dists", "$path/cache",
         "--with-develop",
         "--installdeps", ".",
     ) or die "Installing modules failed\n";
diff --git a/lib/Carton/CLI.pm b/lib/Carton/CLI.pm
index 7a65286..3205597 100644
--- a/lib/Carton/CLI.pm
+++ b/lib/Carton/CLI.pm
@@ -159,14 +159,10 @@ sub cmd_bundle {
     if ($lock) {
         $self->print("Bundling modules using $cpanfile\n");
 
-        my $index = $self->index_file;
-        $lock->write_index($index);
-
         my $builder = Carton::Builder->new(
             mirror => $self->mirror,
-            index  => $index,
         );
-        $builder->bundle($self->vendor_cache);
+        $builder->bundle($self->install_path, $self->vendor_cache, $lock);
     } else {
         $self->error("Can't locate carton.lock file. Run carton install first\n");
     }
@@ -187,6 +183,11 @@ sub cmd_install {
     );
 
     my $lock = $self->find_lock;
+
+    if ($deployment && !$lock) {
+        $self->error("--deployment requires carton.lock: Run `carton install` and make sure carton.lock is checked into your version control.\n");
+    }
+
     my $cpanfile = $self->find_cpanfile;
 
     my $builder = Carton::Builder->new(
@@ -195,9 +196,6 @@ sub cmd_install {
     );
 
     if ($deployment) {
-        unless ($lock) {
-            $self->error("--deployment requires carton.lock: Run `carton install` and make sure carton.lock is checked into your version control.\n"); # TODO test
-        }
         $self->print("Installing modules using $cpanfile (deployment mode)\n");
         $builder->cascade(0);
     } else {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/carton.git



More information about the Pkg-perl-cvs-commits mailing list