1#!/usr/bin/env perl
2#
3# chkxprefix.pl -- A simple script to check if a port and its dependancies have
4# a prefix of /usr/X11R?
5#
6# By Chris Reinhardt ctriv@MidnightBSD.org
7#
8# $MidnightBSD: mports/Tools/scripts/chkxprefix.pl,v 1.1 2007/03/20 16:02:01 ctriv Exp $
9
10use strict;
11use warnings;
12
13my $portbase  = '/usr/mports';
14my $badprefix = qr:^/usr/X11:;
15
16
17# These are the ports that are allowed in /usr/X11R?
18my @allowed   = qw(
19	x11/xorg-libraries
20	x11/xorg-clients
21	x11/xorg-documents
22	x11/xorg-manpages
23	x11-fonts/xorg-fonts-100dpi
24	x11-fonts/xorg-fonts-75dpi
25	x11-fonts/xorg-fonts-cyrillic
26	x11-fonts/xorg-fonts-miscbitmaps
27	x11-fonts/xorg-fonts-truetype
28	x11-fonts/xorg-fonts-type1
29	x11-servers/xorg-fontserver
30	x11-servers/xorg-nestserver
31	x11-servers/xorg-vfbserver
32	x11-servers/xorg-printserver
33	x11-servers/xorg-server
34	graphics/dri
35	devel/imake-6
36	x11-fonts/fontconfig
37	x11-fonts/libXft
38	x11/xterm
39	x11-fonts/xorg-fonts-encodings
40	x11-fonts/bitstream-vera
41);
42
43#
44#
45# End of configuration
46###########################################################################
47
48# don't buffer stdout
49$|++;
50
51my %allowed = map { + "$portbase/$_", 1 } @allowed;
52
53if (@ARGV && $ARGV[0] eq '-a') {
54  check_all();
55  exit 0;
56}
57
58my $port = shift || die "Usage: check_prefix.pl <port>";
59
60chdir("$portbase/$port") || die "Error: couldn't chdir to '$portbase/$port\n";
61
62my @deps = `make all-depends-list`;
63unshift(@deps, "$portbase/$port");
64
65for (@deps) {
66  chomp($_);
67
68  check_port($_)
69}
70
71sub check_port {
72  local $_ = shift;
73
74  chdir($_) || die "Error: couldn't chdir to '$_'\n";
75
76  chomp(my $prefix = `make -V PREFIX`);
77
78  if ($prefix =~ $badprefix && !$allowed{$_}) {
79    print "$_ has prefix $prefix\n";
80  }
81}
82
83
84sub check_all {
85  open(my $index, '<', "$portbase/INDEX-6") || die "Couldn't open index file.\n";
86
87  while (<$index>) {
88    my ($port, $path, $prefix) = split(m/\|/, $_);
89
90    if ($prefix =~ $badprefix && !$allowed{$path}) {
91      print "$path has prefix $prefix\n";
92    }
93  }
94
95  close($index);
96}
97
98
99
100