summaryrefslogtreecommitdiff
path: root/Tools/scripts/p5-deps.pl
blob: 6b0833f25caedfde87ab501fa1b3c411b6e05385 (plain) (blame)
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/perl
#
# $FreeBSD$
#
# Usage: p5-deps.pl
#
# List up unneeded dependencies which is in perl 5.8.9 dist.
#
# This script will be used when perl5.8 port removed.

use strict;
use warnings;
use File::Slurp;

my (%OLD, %VER);
init();

open(my $fh, "<", "/usr/ports/INDEX-8") or die;
while (<$fh>) {
  chomp;
  my ($port, $dir, $prefix, $comment, $descr, $maint, $cat, $bdep, $rdep) = split(/\|/);
#  next if ($maint !~ m/^(kuriyama|perl|port)\@freebsd\.org$/i);
#  next if ($dir !~ m#^/usr/ports/devel/#);
  my $go = 0;
  foreach my $old (values %OLD) {
    if ($bdep =~ m|\b$old-\d| or $rdep =~ m|\b$old-\d|) {
      $go = 1;
      last;
    }
  }
  if ($go) {
    foreach my $m (keys %OLD) {
      my $make = read_file("$dir/Makefile");
      if ($make =~ m#([0-9.]+)?:\${PORTSDIR}/$m($| )#s) {
	if ($1) {
	  # Compare versions in Makefile vs in core.
	  chomp(my $cmp = `pkg_version -t $1 $VER{$m}`);
	  if ($cmp eq '>') {	# newer version required, OK.
	    last;
	  }
	}
	if (($m eq 'converters/p5-Encode' and $port eq 'p5-Padre-0.50_1') or
	    ($m eq 'devel/p5-Test-Harness' and $port eq 'p5-Games-Bingo-Print-0.04_1')) {
	  # Known to skip.
	} else {
	  printf "$dir	$port	$m\n";
	  last;
	}
      }
    }
  }
}

sub init {
  while (<DATA>) {
    chomp;
    my ($dir, $ver) = split(/\s+/, $_);
    chdir "/usr/ports/$dir" or die "chdir($dir): $!";
    chomp(my $tri = `make -VPKGNAMEPREFIX -VPORTNAME -VPKGNAMESUFFIX`);
    my $name = join("", split(/\n/, $tri));
    $OLD{$dir} = $name;
    $VER{$dir} = $ver;
  }
}

# TAP::Harness is p5-Test-Harness>=3.00

__DATA__;
converters/p5-Encode		2.26
converters/p5-MIME-Base64	3.07
devel/p5-Data-Dumper		2.121
devel/p5-ExtUtils-Command	1.16
devel/p5-ExtUtils-Constant	0.21
devel/p5-ExtUtils-Install	1.52
devel/p5-ExtUtils-MakeMaker	6.48
devel/p5-ExtUtils-Manifest	1.56
devel/p5-ExtUtils-ParseXS	2.19
devel/p5-File-Path		2.07
devel/p5-File-Temp		0.20
devel/p5-Getopt-Long		2.37
devel/p5-IO			1.23
devel/p5-Locale-Maketext	1.13
devel/p5-Memoize		1.01
devel/p5-Module-CoreList	2.17
devel/p5-Module-Pluggable	3.9
devel/p5-NEXT			0.64
devel/p5-PathTools		3.31
devel/p5-Storable		2.19
devel/p5-Term-ANSIColor		1.12
devel/p5-Test-Harness		2.64
devel/p5-Test-Simple		0.80
devel/p5-Time-HiRes		1.9715
devel/p5-Time-Local		1.1901
devel/p5-XSLoader		0.10
lang/p5-Scalar-List-Utils	1.19
math/p5-Math-BigInt		1.89
math/p5-Math-BigRat		0.22
math/p5-Math-Complex		1.54
net/p5-Net			1.11
security/p5-Digest		1.15
security/p5-Digest-MD5		2.37
textproc/p5-Filter-Simple	0.83
textproc/p5-Pod-Parser		1.35
textproc/p5-Text-Balanced	1.98
textproc/p5-Text-ParseWords	3.27
www/p5-CGI.pm			3.42