new perls v5.39.10
[andk-cpan-tools.git] / bin / localctgetreports.pl
blobc72342d03ee35be198614d72366cb4d18685d032
1 #!/usr/bin/perl
3 # use 5.010;
4 use strict;
5 use warnings;
7 =head1 NAME
11 =head1 SYNOPSIS
13 localctgetreports.pl [OPTIONS] vdistro
15 =head1 OPTIONS
17 =over 8
19 =cut
21 my @opt = <<'=back' =~ /B<--(\S+)>/g;
23 =item B<--dry-run|n!>
25 Only show the resulting command
27 =item B<--help|h!>
29 This help
31 =item B<--hostname=s>
33 Defaults to current host.
35 =item B<--solvetop=i>
37 Pass through as such to ctgetreports
39 =back
41 =head1 DESCRIPTION
43 Warning: local path conventions hard-coded
45 Warning II: and very ad-hoc, e.g. will not work on k93
47 =cut
50 use FindBin;
51 use lib "$FindBin::Bin/../lib";
52 BEGIN {
53 push @INC, qw( );
56 use Dumpvalue;
57 use File::Basename qw(dirname);
58 use File::Path qw(mkpath);
59 use File::Spec;
60 use File::Temp;
61 use Getopt::Long;
62 use Pod::Usage;
63 use Hash::Util qw(lock_keys);
65 our %Opt;
66 lock_keys %Opt, map { /([^=|!]+)/ } @opt;
67 GetOptions(\%Opt,
68 @opt,
69 ) or pod2usage(1);
70 if ($Opt{help}) {
71 pod2usage(0);
73 $Opt{solvetop} //= 9;
74 use Sys::Hostname qw(hostname);
75 my $hostname = hostname();
76 $Opt{hostname} //= $hostname;
78 my $vdistro = shift @ARGV or pod2usage(1);
79 my @perls0 = glob(qq{/home/sand/src/perl/repoperls/installed-perls/host/$Opt{hostname}/v5.*/*/bin/perl});
80 my @perls = grep {
81 if (-x $_) {
82 if (-x s/perl$/ctgetreports/r) {
84 } else {
87 } else {
90 } @perls0;
92 die "FIXME: Found no perl with a working ctgetreports (tried @perls0)" unless @perls;
94 use CPAN::DistnameInfo;
95 my $d = CPAN::DistnameInfo->new("A/AN/ANON/$vdistro.tar.gz");
96 my $dist = $d->dist;
97 my $first_letter = substr($dist,0,1);
98 my $glob = "/home/sand/var/ctr/done/archive/$first_letter/$dist/*$vdistro*";
99 my @glob = glob($glob);
101 die "No results matching glob('$glob')" unless @glob;
102 my $ctgr = my $perl = pop @perls; # newer one preferred
103 $ctgr =~ s/perl$/ctgetreports/;
105 my $filtercb = q{--filtercb='my $r = shift; for (split " ", $r->{"conf:ccflags"}){$r->{"conf:ccflags~$_"} = 1}'};
106 if ($Opt{'dry-run'}) {
107 warn "system $perl $ctgr --solve --solvetop=$Opt{solvetop} $filtercb --reportfiles $glob\n";
108 } else {
109 0 == system $perl, $ctgr, "--solve", "--solvetop=$Opt{solvetop}", $filtercb, "--reportfiles", @glob or die;
112 # Local Variables:
113 # mode: cperl
114 # cperl-indent-level: 4
115 # End: