54
54
sub infer_deps ($) {
55
55
my $deps = shift ;
56
56
my @deps = @$deps ;
57
+ my @modules = ();
57
58
my @rt_deps = ();
58
59
my @build_deps = ();
59
60
my @core_imports = ();
60
- foreach my $inc (@INC ) {
61
+ my @ignore_deps = (' perl' , ' libwww-perl' );
62
+ foreach my $inc (@INC ) {
61
63
push @core_imports , " \' $inc \' " if $inc =~ m / core_perl$ / ;
62
64
}
63
- my $imports = join (" , " , @core_imports );
65
+ my $imports = join ( " , " , @core_imports );
64
66
65
67
foreach my $dep (@deps ) {
66
68
my %d = %$dep ;
67
69
next if $d {' relationship' } ne ' requires' ;
68
- next if system (' perl' , ' -e' , " \@ INC=($imports );require $d {'module'};" ) == 0;
70
+ next
71
+ if system ( ' perl' , ' -e' , " \@ INC=($imports );require $d {'module'};" )
72
+ == 0;
69
73
my $dist_name = query_on_cpan( $d {' module' }, 1 );
70
- next if $dist_name eq ' perl' ;
71
- my $name = normalize_name($dist_name );
74
+ next if ($dist_name ~~ @ignore_deps );
75
+ my $name = normalize_name($dist_name );
76
+ my %dep_info = ( ' name' => $d {' module' }, ' dist' => $name );
77
+
72
78
if ( $d {' phase' } eq ' runtime' ) {
73
79
push @rt_deps , " perl-$name " unless ( " perl-$name " ~~ @rt_deps );
80
+ push @modules , \%dep_info unless ( \%dep_info ~~ @modules );
74
81
}
75
82
else {
76
83
push @build_deps , " perl-$name "
77
84
unless ( " perl-$name " ~~ @build_deps );
78
85
}
79
86
}
80
87
81
- my %args = ( ' deps' => \@rt_deps , ' build_deps' => \@build_deps );
88
+ my %args = (
89
+ ' deps' => \@rt_deps ,
90
+ ' build_deps' => \@build_deps ,
91
+ ' modules' , \@modules
92
+ );
82
93
return \%args ;
83
94
}
84
95
@@ -102,14 +113,40 @@ ($)
102
113
or die " Could not create directory $ab_name /autobuild" ;
103
114
die " Could not write to $ab_name /spec"
104
115
unless open ( FH, " >$ab_name /autobuild/defines" );
116
+ my $description = " '$data {'description'}'" ;
117
+
118
+ if ( $data {' description' } =~ m / '/ ) {
119
+ $description = " \" $data {'description'}\" " ;
120
+ }
105
121
print FH
106
- " PKGNAME=$ab_name \n PKGSEC=perl\n PKGDES=' $data {' description'}' \n PKGDEP=\" perl $rt_deps \"\n BUILDDEP= \" $build_deps \"\n " ;
122
+ " PKGNAME=$ab_name \n PKGSEC=perl\n PKGDES=$ description\n PKGDEP=\" perl $rt_deps \"\n " ;
107
123
close (FH);
108
124
print STDERR " -- Writing abbs build files: $ab_name - OK\n " ;
109
125
return \%deps ;
110
126
}
111
127
112
- foreach my $module (@ARGV ) {
128
+ my @mods = @ARGV ;
129
+ my $full_auto = 1;
130
+ my $count = 0;
131
+ open ( my $fh , ' >>/tmp/list.lst' ) or die " Could not open /tmp/list.lst" ;
132
+ foreach my $module (@mods ) {
133
+ my $length = scalar @mods ;
134
+ $count ++;
135
+ print STDERR " -- [$count /$length ] Processing $module \n " ;
113
136
my $data = query_on_cpan( $module , 0 );
114
- ab3_writer($data );
137
+ my $deps = ab3_writer($data );
138
+ next unless $full_auto ;
139
+ my %deps = %$deps ;
140
+ my @more_deps = @{ $deps {' modules' } };
141
+ my $module_name = normalize_name($module );
142
+ print $fh " perl-$module_name \n " ;
143
+ foreach my $dep (@more_deps ) {
144
+ my %dep_info = %$dep ;
145
+ next if -d " perl-$dep_info {'dist'}" ;
146
+ print " !! Missing: $dep_info {'name'}\n " ;
147
+ push @mods , $dep_info {' name' } unless ($dep_info {' name' } ~~ @mods );
148
+ }
115
149
}
150
+ close $fh ;
151
+ print STDERR " ================================================================\n " ;
152
+ print STDERR " Done. Total modules: $count , run `commit-o-matic /tmp/list.lst update` to auto commit.\n "
0 commit comments