This repository was archived by the owner on Aug 7, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate-inc
106 lines (92 loc) · 1.99 KB
/
update-inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env perl
use strict;
use warnings;
use 5.014;
use Alien::Build;
use Alien::Build::MM;
my $build = Alien::Build->load('./alienfile');
$build->load_requires($_) for qw ( configure share system );
my %inc = %INC;
my %old_perls_need;
my %do_not_need = map { $_ => 1 } qw(
Config_git.pl
Config_heavy.pl
version::vxs
version::regex
);
require Module::CoreList;
require Path::Tiny;
foreach my $pm (sort keys %inc)
{
if($pm =~ /^\//)
{
delete $inc{$pm};
next;
}
my $mod = $pm;
$mod =~ s/\.pm$//;
$mod =~ s/\//::/g;
if($do_not_need{$mod})
{
delete $inc{$pm};
next;
}
my $perl_version = Module::CoreList->first_release($mod);
if(defined $perl_version)
{
if($perl_version <= 5.008001)
{
delete $inc{$pm};
}
elsif($perl_version <= 5.014000)
{
$old_perls_need{$mod} = 0;
delete $inc{$pm};
}
}
}
foreach my $pm (sort keys %inc)
{
my $old = Path::Tiny->new($inc{$pm});
my $new = Path::Tiny->new('inc', $pm);
$new->parent->mkpath;
$old->copy($new);
}
Path::Tiny->new('inc')->visit(
sub {
my($path) = @_;
my $file = "$path";
return if -d $file;
$file =~ s/^inc\///;
return if $inc{$file};
$path->remove;
},
{ recurse => 1 },
);
require MetaCPAN::Client;
require YAML;
{
my $mcpan = MetaCPAN::Client->new;
my $spec = $mcpan->release({
all => [
{ status => 'latest' },
{ distribution => 'Alien-Build' },
],
});
my $release = $spec->next;
my %versions = %{ $release->metadata->{prereqs}->{runtime}->{requires} };
foreach my $mod (sort keys %versions)
{
$old_perls_need{$mod} = $versions{$mod} if defined $old_perls_need{$mod};
}
}
my %meta = (
old_perls_need => \%old_perls_need,
postamble => Alien::Build::MM->new->mm_postamble =~ s/(\Q$(FULLPERL)\E)/$1 -Iinc/gr,
);
Path::Tiny->new('_alien')->remove_tree;
YAML::DumpFile('inc/meta.yml', \%meta);
require Data::Dumper;
Path::Tiny->new('inc/meta.pl')->spew(
Data::Dumper::Dumper(\%meta),
);