diff options
Diffstat (limited to 'perl-extras/bin/build_all_modules.pl')
-rw-r--r-- | perl-extras/bin/build_all_modules.pl | 127 |
1 files changed, 17 insertions, 110 deletions
diff --git a/perl-extras/bin/build_all_modules.pl b/perl-extras/bin/build_all_modules.pl index eb57e811b..81f3d2e63 100644 --- a/perl-extras/bin/build_all_modules.pl +++ b/perl-extras/bin/build_all_modules.pl @@ -9,125 +9,32 @@ use YAML; use File::Slurp; use Path::Class; -my $cpan_meta_db_base = "http://cpanmetadb.appspot.com/v1.0/package"; -my $cpan_mirror_base = "http://search.cpan.org/CPAN/authors/id"; -my $root_dir = file(__FILE__)->dir->parent->absolute->stringify; -my $dist_list = "$root_dir/install_order.txt"; -my $url_list = "$root_dir/urls.txt"; -my $dist_dir = "$root_dir/distributions"; -my $fake_mirror = "$root_dir/fake_mirror"; -my $local_lib = "$root_dir/../local-lib5"; +my $root_dir = file(__FILE__)->dir->parent->absolute->stringify; +my $module_list = "$root_dir/modules.txt"; +my $minicpan = "$root_dir/minicpan"; +my $local_lib = "$root_dir/../local-lib5"; my $cpanm_cmd = - "perl $root_dir/bin/cpanm --mirror $fake_mirror --mirror-only -L $local_lib"; + "perl $root_dir/bin/cpanm --mirror $minicpan --mirror-only -l $local_lib"; -my @distributions = map { s{\s+$}{}; $_; } read_file($dist_list); +my @modules = map { s{\s+$}{}; $_; } read_file($module_list); -foreach my $dist (@distributions) { - print " --- installing $dist ---\n"; +foreach my $module (@modules) { + print " --- installing $module ---\n"; my $out = ''; - my $cmd = "$cpanm_cmd $dist_dir/$dist"; + my $cmd = "$cpanm_cmd $module"; print " running '$cmd'\n"; run3( $cmd, undef, \$out, \$out ) || die "Error running '$cmd'"; - die "Error building '$dist':\n\n$out\n\n" - unless $out =~ m{Successfully installed}; -} - -# # try to install the distribution using cpanm -# -# my @fetched_urls = -# map { s{.*(http://\S+).*}{$1}; $_ } -# grep { m{^Fetching http://search.cpan.org} } -# split /\n/, $out; -# -# my @installed = -# grep { $_ } -# map { m{^Successfully (?:re)?installed (\S+).*} ? $1 : undef } -# split /\n/, $out; -# -# foreach my $dist (@installed) { -# my ($url) = grep { m{/$dist\.} } @fetched_urls; -# my ($filename) = $url =~ m{([^/]+)$}; -# -# print " getting $filename from $url\n"; -# -# is_success( getstore( $url, "$dist_dir/$filename" ) ) -# || die "Error saving $url to $dist_dir/$filename"; -# write_file( $dist_list, { append => 1 }, "$filename\n" ); -# write_file( $url_list, { append => 1 }, "$url\n" ); -# } + my @lines = + grep { m{\S} } + split /\n+/, $out; + my $last_line = $lines[-1]; -# # -# # load list of modules at start and write it back at the end -# my %installed = (); -# my %looked_at = (); -# -# sub add_filename_to_list { -# my $module = shift; -# print "Adding '$module' to '$dist_list'\n"; -# append( $dist_list, "$module\n" ); -# getc; -# } -# -# # add_module('App::cpanminus'); -# add_module($module_to_add); -# -# sub add_module { -# my $module = shift; -# print "--- $module ---\n"; -# return 1 if $installed{$module} || $looked_at{$module}++; -# -# # get the distribution this module is in -# my $yaml = get("$cpan_meta_db_base/$module") -# || die "Can't get details from $cpan_meta_db_base/$module"; -# my $dist_info = Load($yaml); -# my $distfile = $dist_info->{distfile} -# || die("Can't get distfile from returned YAML for $module"); -# -# # fetch the distribution from cpan -# my ($filename) = $distfile =~ m{/([^/]*)$}; -# unless ( -e "$dist_dir/$filename" ) { -# my $dist_url = "$cpan_mirror_base/$distfile"; -# print " fetching '$dist_url' to '$dist_dir/$filename'\n"; -# is_success( getstore( $dist_url, "$dist_dir/$filename" ) ) -# || die "Could not fetch $dist_url"; -# } -# -# # try to install the distribution using cpanm -# my $out = ''; -# my $cmd = "$cpanm_cmd $dist_dir/$filename"; -# print " running '$cmd'\n"; -# run3( $cmd, undef, \$out, \$out ) || die "Error running '$cmd'"; -# -# warn "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n"; -# warn $out; -# warn "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"; -# -# my @missing_modules = -# map { s{^.*\s(\S+)$}{$1}; $_ } -# grep { m/Couldn\'t find module or a distribution/ } -# split /\n/, $out; -# -# if ( scalar @missing_modules ) { -# print " missing: ", join( ', ', @missing_modules ), "\n"; -# add_module($_) for @missing_modules; -# add_module($module); -# } -# elsif ( $out =~ m{Successfully installed } ) { -# -# # add ourselves to the done lists -# print " Success with '$filename'\n"; -# $installed{$module}++; -# add_filename_to_list($filename); -# } -# else { -# die "No success and no missing modules for $module"; -# } -# -# } -# -# # + die "Error building '$module':\n\n$out\n\n" + unless $last_line =~ m{Successfully installed } + || $last_line =~ m{is up to date}; +} |