1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-23 00:43:28 +00:00

Update to 2.6.9.

* Ignore comments when checking for absolute pathname usage
* Check DISTNAME for uses of PORTREVISION and PORTEPOCH [1]
* Make sure to quote meta-characters in PORTNAME before using it as a
  regular expression [1]
* Fix bug when matching OPTIONS in ".if defined(WITH_OPT1) &&
  defined(WITHOUT_OPT2)" [2]
* Update OMF checks to account for the new INSTALLS_OMF macro
* Update GConf checks to account for the new GCONF_SCHEMAS macro

PR:		73536 [2]
Submitted by:	mat [1]
		leeym [2]
This commit is contained in:
Joe Marcus Clarke 2004-11-22 18:28:40 +00:00
parent 71623572da
commit d9da40e963
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=122165
4 changed files with 114 additions and 316 deletions

View File

@ -8,8 +8,7 @@
#
PORTNAME= portlint
PORTVERSION= 2.6.8
PORTREVISION= 1
PORTVERSION= 2.6.9
CATEGORIES= devel
MASTER_SITES= # none
DISTFILES= # none

View File

@ -17,7 +17,7 @@
# OpenBSD and NetBSD will be accepted.
#
# $FreeBSD$
# $Id: portlint.pl,v 1.63 2004/10/12 04:12:46 marcus Exp $
# $Id: portlint.pl,v 1.69 2004/11/22 18:21:08 marcus Exp $
#
use vars qw/ $opt_a $opt_A $opt_b $opt_C $opt_c $opt_h $opt_t $opt_v $opt_M $opt_N $opt_B $opt_V /;
@ -40,7 +40,7 @@ $portdir = '.';
# version variables
my $major = 2;
my $minor = 6;
my $micro = 8;
my $micro = 9;
sub l { '[{(]'; }
sub r { '[)}]'; }
@ -175,7 +175,7 @@ my @varlist = qw(
PKGDIR COMMENT DESCR PLIST PKGCATEGORY PKGINSTALL PKGDEINSTALL
PKGREQ PKGMESSAGE MD5_FILE .CURDIR INSTALLS_SHLIB USE_LIBTOOL_VER
INDEXFILE PKGORIGIN CONFLICTS PKG_VERSION PKGINSTALLVER PLIST_FILES
OPTIONS
OPTIONS INSTALLS_OMF
);
my $cmd = join(' -V ', "make $makeenv MASTER_SITE_BACKUP=''", @varlist);
@ -550,30 +550,14 @@ sub checkdescr {
sub checkplist {
my($file) = @_;
my($curdir) = ($localbase);
my(%omfremoveseen) = ();
my(%omfinstallseen) = ();
my(%omfseen) = ();
my($inforemoveseen, $infoinstallseen, $infoseen) = (0, 0, 0);
my(%gconfinstallseen) = ();
my(%gconfremoveseen) = ();
my(%gconfseen) = ();
my(%omfafterinstall) = ();
my(%omfafterremove) = ();
my($infobeforeremove, $infoafterinstall) = (0, 0);
my(%gconfbeforeremove) = ();
my(%gconfafterinstall) = ();
my($infooverwrite) = (0);
my($rcsidseen) = (0);
my(@exec_omf) = ();
my(@exec_info) = ();
my(@exec_gconf) = ();
my(@unexec_omf) = ();
my(@unexec_info) = ();
my(@unexec_gconf) = ();
my(@omffile) = ();
my(@infofile) = ();
my(@gconffile) = ();
my $seen_dirrm_docsdir;
@ -619,34 +603,12 @@ sub checkplist {
&perror("WARN: $file [$.]: use \"\@dirrm\" ".
"instead of \"\@unexec rmdir\".");
}
} elsif ($_ =~ /^\@exec[ \t]+scrollkeeper-install[ \t]+-q\s+(\S+)\s+.+$/) {
push(@exec_omf, $1);
my $ot = $1;
$ot =~ s/^\%D\///;
$omfinstallseen{$ot} = $.;
} elsif (!$autoinfo && $_ =~ /^\@exec[ \t]+install-info\s+(.+)\s+(.+)$/) {
$infoinstallseen = $.;
push(@exec_info, $1);
} elsif ($_ =~ /^\@exec[ \t]+env[ \t]+GCONF_CONFIG_SOURCE=\S+[ \t]+gconftool-2[ \t]+--makefile-install-rule\s+(\S+)\s+.+$/) {
push(@exec_gconf, $1);
my $gt = $1;
$gt =~ s/^\%D\///;
$gconfinstallseen{$gt} = $.;
} elsif ($autoinfo && $_ =~ /^\@exec[ \t]+install-info\s+(.+)\s+(.+)$/) {
&perror("WARN: $file [$.]: \@exec install-info is deprecated in favor of adding info files into the Makefile using the INFO macro.");
} elsif ($_ =~ /^\@unexec[ \t]+scrollkeeper-uninstall[ \t]+-q\s+(\S+)\s+.+$/) {
push(@unexec_omf, $1);
my $ot = $1;
$ot =~ s/^\%D\///;
$omfremoveseen{$ot} = $.;
} elsif (!$autoinfo && $_ =~ /^\@unexec[ \t]+install-info[ \t]+--delete\s+(.+)\s+(.+)$/) {
$inforemoveseen = $.;
push(@unexec_info, $1);
} elsif ($_ =~ /^\@unexec[ \t]+env[ \t]+GCONF_CONFIG_SOURCE=\S+[ \t]+gconftool-2[ \t]+--makefile-uninstall-rule\s+(\S+)\s+.+$/) {
push(@unexec_gconf, $1);
my $gt = $1;
$gt =~ s/^\%D\///;
$gconfremoveseen{$gt} = $.;
} elsif ($autoinfo && $_ =~ /^\@unexec[ \t]+install-info[ \t]+--delete\s+(.+)\s+(.+)$/) {
&perror("WARN: $file [$.]: \@unexec install-info is deprecated in favor of adding info files into the Makefile using the INFO macro.");
} elsif ($_ =~ /^\@(exec|unexec)/) {
@ -662,6 +624,14 @@ sub checkplist {
"in PLIST found. use ".
"INSTALLS_SHLIB instead.");
}
if (/scrollkeeper/) {
&perror("WARN: $file [$.]: possible ".
"direct use of scrollkeeper commands ".
"in PLIST found. Use ".
"INSTALLS_OMF instead ".
"(see http://www.FreeBSD.org/gnome/docs/porting.html ".
"for more details).");
}
} elsif ($_ =~ /^\@(comment)/) {
$rcsidseen++ if (/\$$rcsidstr[:\$]/);
} elsif ($_ =~ /^\@(owner|group)\s/) {
@ -687,12 +657,12 @@ sub checkplist {
"for a way to completely eliminate .la files.");
}
if ($_ =~ /\%gconf.*\.xml/) {
&perror("WARN: $file [$.]: explicitly listing \%gconf key files ".
"in the plist is discouraged. This will soon become a ".
"fatal error. See ".
"http://www.FreeBSD.org/gnome/docs/porting.html ".
"for the preferred way to handle gconf schemas.");
if ($_ =~ /\%gconf.*\.xml/ || $_ =~ /gconf.*\.schemas?/) {
&perror("FATAL: $file [$.]: explicitly listing \%gconf key files ".
"or GConf schema files in the plist is not supported. ".
"Use GCONF_SCHEMAS in the Makefile instead. ".
"See http://www.FreeBSD.org/gnome/docs/porting.html ".
"for more details.");
}
if ($_ =~ m|lib/pkgconfig/[^\.]+.pc$|) {
@ -707,6 +677,14 @@ sub checkplist {
"please define INSTALLS_SHLIB as appropriate");
}
if ($_ =~ m|\.omf$| && $makevar{INSTALLS_OMF} eq '') {
&perror("WARN: $file [$.]: installing OMF files, ".
"please define INSTALLS_OMF (see the FreeBSD GNOME ".
"porting guide at ".
"http://www.FreeBSD.org/gnome/docs/porting.html ".
"for more details)");
}
if ($autoinfo && $_ =~ /\.info$/) {
&perror("WARN: $file [$.]: enumerating info files in the plist is deprecated in favor of adding info files into the Makefile using the INFO macro.");
}
@ -715,13 +693,6 @@ sub checkplist {
&perror("FATAL: $file [$.]: numbered info files are obsolete and not portable; add info files using the INFO macro in the Makefile.");
}
if ($_ =~ /.*\.omf$/) {
$omfseen{$_} = $.;
$omfafterinstall{$_}++ if ($omfinstallseen{$_});
$omfafterremove{$_}++ if ($omfremoveseen{$_});
push(@omffile, $_);
}
if (!$autoinfo) {
if ($_ =~ /^info\/.*info(-[0-9]+)?$/) {
$infoseen = $.;
@ -738,13 +709,6 @@ sub checkplist {
}
}
if ($_ =~ m|^etc/gconf/schemas/.*\.schemas?$|) {
$gconfseen{$_} = $.;
$gconfafterinstall{$_}++ if ($gconfinstallseen{$_});
$gconfbeforeremove{$_}++ if (!$gconfremoveseen{$_});
push(@gconffile, $_);
}
if ($_ =~ /^(\%\%PORTDOCS\%\%)?share\/doc\//) {
&perror("WARN: $file [$.]: consider using DOCSDIR macro");
$sharedocused++;
@ -756,8 +720,11 @@ sub checkplist {
&perror("WARN: $file [$.]: consider using EXAMPLESDIR macro");
}
if ($_ =~ /^share\/$makevar{PORTNAME}\//) {
&perror("WARN: $file [$.]: consider using DATADIR macro");
{
my $tmpportname = quotemeta($makevar{PORTNAME});
if ($_ =~ /^share\/$tmpportname\//) {
&perror("WARN: $file [$.]: consider using DATADIR macro");
}
}
if ($_ =~ m#man/([^/]+/)?man([$manchapters])/([^\.]+\.[$manchapters])(\.gz)?$#) {
@ -801,21 +768,6 @@ sub checkplist {
&perror("WARN: $file: Both ``\%\%PORTDOCS\%\%\@dirrm \%\%DOCSDIR\%\%'' and ``\%\%PORTDOCS\%\%\@unexec \%D/\%\%DOCSDIR\%\% 2>/dev/null || true'' are missing. At least one should be used.");
}
# Check that each OMF file has an install and deinstall line.
my $omf_install = join(" ", @exec_omf);
$omf_install .= ' ';
my $omf_deinstall = join(" ", @unexec_omf);
$omf_deinstall .= ' ';
foreach my $of (@omffile) {
if ($omf_install !~ /\%D\/\Q$of\E/) {
&perror("FATAL: $file: you need an '\@exec scrollkeeper-install -q \%D/$of 2>/dev/null || /usr/bin/true' line");
}
if ($omf_deinstall !~ /\%D\/$of/) {
&perror("FATAL: $file: you need an '\@unexec scrollkeeper-uninstall -q \%D/$of 2>/dev/null || /usr/bin/true' line");
}
}
if (!$autoinfo) {
# check that every infofile has an exec install-info and unexec install-info
my $exec_install = join(" ", @exec_info);
@ -834,59 +786,15 @@ sub checkplist {
}
}
# Check that each gconf schema file has an install and deinstall line.
my $gconf_install = join(" ", @exec_gconf);
$gconf_install .= ' ';
my $gconf_deinstall = join(" ", @unexec_gconf);
$gconf_deinstall .= ' ';
foreach my $gf (@gconffile) {
if ($gconf_install !~ /\%D\/\Q$gf\E/) {
&perror("WARN: $file: you need an '\@exec env GCONF_CONFIG_SOURCE=xml::\%D/etc/gconf/gconf.xml.defaults gconftool-2 --makefile-install-rule \%D/$gf >/dev/null || /usr/bin/true' line");
}
if ($gconf_deinstall !~ /\%D\/$gf/) {
&perror("WARN: $file: you need an '\@unexec env GCONF_CONFIG_SOURCE=xml::\%D/etc/gconf/gconf.xml.defaults gconftool-2 --makefile-uninstall-rule \%D/$gf >/dev/null || /usr/bin/true' line");
}
}
if ($rcsidinplist && !$rcsidseen) {
&perror("FATAL: $file: RCS tag \"\$$rcsidstr\$\" must be present ".
"as \@comment.")
}
if (((!$autoinfo && !$infoseen) || $autoinfo) && !scalar(keys %omfseen) &&
!scalar(keys %gconfseen)) {
if (((!$autoinfo && !$infoseen) || $autoinfo)) {
close(IN);
return 1;
}
if (scalar(keys %omfseen)) {
if (!scalar(keys %omfinstallseen)) {
&perror("FATAL: $file: scrollkeeper-install must be used to ".
"add/delete entries from the ScrollKeeper OMF database.");
} else {
foreach my $of (keys %omfseen) {
if ($omfafterinstall{$of}) {
&perror("FATAL: $file [$omfinstallseen{$of}]: move ".
"\"\@exec scrollkeeper-install\" ".
"line to make sure that it is placed after ".
"the $of entry.");
}
}
}
if (!scalar(keys %omfremoveseen)) {
&perror("FATAL: $file: \"\@unexec scrollkeeper-uninstall\" must ".
"be placed after the OMF file it uninstalls.");
} else {
foreach my $of (keys %omfseen) {
if ($omfafterremove{$of}) {
&perror("FATAL: $file [$omfremoveseen{$of}]: move ".
"\"\@unexec scrollkeeper-uninstall\" ".
"line to make sure that it is placed after ".
"the $of entry.");
}
}
}
}
if (!$autoinfo && $infoseen) {
if (!$infoinstallseen) {
@ -912,35 +820,6 @@ sub checkplist {
}
}
if (scalar(keys %gconfseen)) {
if (!scalar(keys %gconfinstallseen)) {
&perror("WARN: $file: gconftool-2 must be used to ".
"add/delete gconf schema keys.");
} else {
foreach my $gf (keys %gconfseen) {
if ($gconfafterinstall{$gf}) {
&perror("FATAL: $file [$gconfinstallseen{$gf}]: move ".
"\"\@exec gconftool-2\" ".
"line to make sure that it is placed after ".
"the $gf entry.");
}
}
}
if (!scalar(keys %gconfremoveseen)) {
&perror("FATAL: $file: \"\@unexec gconftool-2\" must ".
"be placed before the schema file it uninstalls.");
} else {
foreach my $gf (keys %gconfseen) {
if ($gconfbeforeremove{$gf}) {
&perror("FATAL: $file [$gconfremoveseen{$gf}]: move ".
"\"\@unexec gconftool-2\" ".
"line to make sure that it is placed after ".
"the $gf entry.");
}
}
}
}
close(IN);
}
@ -1132,6 +1011,16 @@ sub checkmakefile {
last;
}
}
foreach my $plist_file (@plist_files) {
if ($plist_file =~ m|\.omf$| && $makevar{INSTALLS_OMF} eq '') {
&perror("WARN: PLIST_FILES: installing OMF files, ".
"please define INSTALLS_OMF (see the FreeBSD GNOME ".
"porting guide at ".
"http://www.FreeBSD.org/gnome/docs/porting.html ".
"for more details)");
last;
}
}
}
@ -1720,9 +1609,19 @@ DISTFILES DIST_SUBDIR EXTRACT_ONLY
}
print "OK: sanity checking PORTNAME/PORTVERSION.\n" if ($verbose);
if ($distname ne '' && $distname eq "$portname-$portversion") {
&perror("WARN: $file: DISTNAME is \${PORTNAME}-\${PORTVERSION} by ".
"default, you don't need to define DISTNAME.");
if ($distname ne '') {
if ($distname eq "$portname-$portversion") {
&perror("WARN: $file: DISTNAME is \${PORTNAME}-\${PORTVERSION} by ".
"default, you don't need to define DISTNAME.");
}
if ($distname =~ /PORTREVISION/) {
&perror("FATAL: $file: DISTNAME contains a reference to ".
"PORTREVISION. You should only be using PORTVERSION");
}
if ($distname =~ /PORTEPOCH/) {
&perror("FATAL: $file: DISTNAME contains a reference to ".
"PORTEPOCH. You should only be using PORTVERSION");
}
}
if ($portname =~ /^$re_lang_short/) {
&perror("FATAL: $file: language prefix is automatically".
@ -2331,7 +2230,7 @@ FETCH_DEPENDS DEPENDS DEPENDS_TARGET
# check OPTIONS
print "OK: checking OPTIONS.\n" if ($verbose);
@oopt = ($makevar{OPTIONS} =~ /(\w+)\s+\".*?\"\s+\w+/sg);
@mopt = ($tmp =~ /^\s*\.\s*(?:ifn?def\s+|if\s+\!?\s*defined\s*)\(?\s*WITH(?:OUT)?_(\w+)\s*\)?/mg);
@mopt = ($tmp =~ /\(?\s*WITH(?:OUT)?_(\w+)\s*\)?/mg);
foreach my $i (@oopt) {
if (!grep(/^$i$/, @mopt)) {
&perror("WARN: $file: $i is listed in OPTIONS, ".
@ -2465,6 +2364,7 @@ sub abspathname {
if ($verbose);
foreach my $s (split(/\n+/, $str)) {
$i = '';
$s =~ s/#.*$//;
if ($s =~ /(^|[ \t\@'"-])(\/[\w\d])/) { #'
# suspected pathnames are recorded.
$i = $2 . $';

View File

@ -8,8 +8,7 @@
#
PORTNAME= portlint
PORTVERSION= 2.6.8
PORTREVISION= 1
PORTVERSION= 2.6.9
CATEGORIES= devel
MASTER_SITES= # none
DISTFILES= # none

View File

@ -17,7 +17,7 @@
# OpenBSD and NetBSD will be accepted.
#
# $FreeBSD$
# $Id: portlint.pl,v 1.63 2004/10/12 04:12:46 marcus Exp $
# $Id: portlint.pl,v 1.69 2004/11/22 18:21:08 marcus Exp $
#
use vars qw/ $opt_a $opt_A $opt_b $opt_C $opt_c $opt_h $opt_t $opt_v $opt_M $opt_N $opt_B $opt_V /;
@ -40,7 +40,7 @@ $portdir = '.';
# version variables
my $major = 2;
my $minor = 6;
my $micro = 8;
my $micro = 9;
sub l { '[{(]'; }
sub r { '[)}]'; }
@ -175,7 +175,7 @@ my @varlist = qw(
PKGDIR COMMENT DESCR PLIST PKGCATEGORY PKGINSTALL PKGDEINSTALL
PKGREQ PKGMESSAGE MD5_FILE .CURDIR INSTALLS_SHLIB USE_LIBTOOL_VER
INDEXFILE PKGORIGIN CONFLICTS PKG_VERSION PKGINSTALLVER PLIST_FILES
OPTIONS
OPTIONS INSTALLS_OMF
);
my $cmd = join(' -V ', "make $makeenv MASTER_SITE_BACKUP=''", @varlist);
@ -550,30 +550,14 @@ sub checkdescr {
sub checkplist {
my($file) = @_;
my($curdir) = ($localbase);
my(%omfremoveseen) = ();
my(%omfinstallseen) = ();
my(%omfseen) = ();
my($inforemoveseen, $infoinstallseen, $infoseen) = (0, 0, 0);
my(%gconfinstallseen) = ();
my(%gconfremoveseen) = ();
my(%gconfseen) = ();
my(%omfafterinstall) = ();
my(%omfafterremove) = ();
my($infobeforeremove, $infoafterinstall) = (0, 0);
my(%gconfbeforeremove) = ();
my(%gconfafterinstall) = ();
my($infooverwrite) = (0);
my($rcsidseen) = (0);
my(@exec_omf) = ();
my(@exec_info) = ();
my(@exec_gconf) = ();
my(@unexec_omf) = ();
my(@unexec_info) = ();
my(@unexec_gconf) = ();
my(@omffile) = ();
my(@infofile) = ();
my(@gconffile) = ();
my $seen_dirrm_docsdir;
@ -619,34 +603,12 @@ sub checkplist {
&perror("WARN: $file [$.]: use \"\@dirrm\" ".
"instead of \"\@unexec rmdir\".");
}
} elsif ($_ =~ /^\@exec[ \t]+scrollkeeper-install[ \t]+-q\s+(\S+)\s+.+$/) {
push(@exec_omf, $1);
my $ot = $1;
$ot =~ s/^\%D\///;
$omfinstallseen{$ot} = $.;
} elsif (!$autoinfo && $_ =~ /^\@exec[ \t]+install-info\s+(.+)\s+(.+)$/) {
$infoinstallseen = $.;
push(@exec_info, $1);
} elsif ($_ =~ /^\@exec[ \t]+env[ \t]+GCONF_CONFIG_SOURCE=\S+[ \t]+gconftool-2[ \t]+--makefile-install-rule\s+(\S+)\s+.+$/) {
push(@exec_gconf, $1);
my $gt = $1;
$gt =~ s/^\%D\///;
$gconfinstallseen{$gt} = $.;
} elsif ($autoinfo && $_ =~ /^\@exec[ \t]+install-info\s+(.+)\s+(.+)$/) {
&perror("WARN: $file [$.]: \@exec install-info is deprecated in favor of adding info files into the Makefile using the INFO macro.");
} elsif ($_ =~ /^\@unexec[ \t]+scrollkeeper-uninstall[ \t]+-q\s+(\S+)\s+.+$/) {
push(@unexec_omf, $1);
my $ot = $1;
$ot =~ s/^\%D\///;
$omfremoveseen{$ot} = $.;
} elsif (!$autoinfo && $_ =~ /^\@unexec[ \t]+install-info[ \t]+--delete\s+(.+)\s+(.+)$/) {
$inforemoveseen = $.;
push(@unexec_info, $1);
} elsif ($_ =~ /^\@unexec[ \t]+env[ \t]+GCONF_CONFIG_SOURCE=\S+[ \t]+gconftool-2[ \t]+--makefile-uninstall-rule\s+(\S+)\s+.+$/) {
push(@unexec_gconf, $1);
my $gt = $1;
$gt =~ s/^\%D\///;
$gconfremoveseen{$gt} = $.;
} elsif ($autoinfo && $_ =~ /^\@unexec[ \t]+install-info[ \t]+--delete\s+(.+)\s+(.+)$/) {
&perror("WARN: $file [$.]: \@unexec install-info is deprecated in favor of adding info files into the Makefile using the INFO macro.");
} elsif ($_ =~ /^\@(exec|unexec)/) {
@ -662,6 +624,14 @@ sub checkplist {
"in PLIST found. use ".
"INSTALLS_SHLIB instead.");
}
if (/scrollkeeper/) {
&perror("WARN: $file [$.]: possible ".
"direct use of scrollkeeper commands ".
"in PLIST found. Use ".
"INSTALLS_OMF instead ".
"(see http://www.FreeBSD.org/gnome/docs/porting.html ".
"for more details).");
}
} elsif ($_ =~ /^\@(comment)/) {
$rcsidseen++ if (/\$$rcsidstr[:\$]/);
} elsif ($_ =~ /^\@(owner|group)\s/) {
@ -687,12 +657,12 @@ sub checkplist {
"for a way to completely eliminate .la files.");
}
if ($_ =~ /\%gconf.*\.xml/) {
&perror("WARN: $file [$.]: explicitly listing \%gconf key files ".
"in the plist is discouraged. This will soon become a ".
"fatal error. See ".
"http://www.FreeBSD.org/gnome/docs/porting.html ".
"for the preferred way to handle gconf schemas.");
if ($_ =~ /\%gconf.*\.xml/ || $_ =~ /gconf.*\.schemas?/) {
&perror("FATAL: $file [$.]: explicitly listing \%gconf key files ".
"or GConf schema files in the plist is not supported. ".
"Use GCONF_SCHEMAS in the Makefile instead. ".
"See http://www.FreeBSD.org/gnome/docs/porting.html ".
"for more details.");
}
if ($_ =~ m|lib/pkgconfig/[^\.]+.pc$|) {
@ -707,6 +677,14 @@ sub checkplist {
"please define INSTALLS_SHLIB as appropriate");
}
if ($_ =~ m|\.omf$| && $makevar{INSTALLS_OMF} eq '') {
&perror("WARN: $file [$.]: installing OMF files, ".
"please define INSTALLS_OMF (see the FreeBSD GNOME ".
"porting guide at ".
"http://www.FreeBSD.org/gnome/docs/porting.html ".
"for more details)");
}
if ($autoinfo && $_ =~ /\.info$/) {
&perror("WARN: $file [$.]: enumerating info files in the plist is deprecated in favor of adding info files into the Makefile using the INFO macro.");
}
@ -715,13 +693,6 @@ sub checkplist {
&perror("FATAL: $file [$.]: numbered info files are obsolete and not portable; add info files using the INFO macro in the Makefile.");
}
if ($_ =~ /.*\.omf$/) {
$omfseen{$_} = $.;
$omfafterinstall{$_}++ if ($omfinstallseen{$_});
$omfafterremove{$_}++ if ($omfremoveseen{$_});
push(@omffile, $_);
}
if (!$autoinfo) {
if ($_ =~ /^info\/.*info(-[0-9]+)?$/) {
$infoseen = $.;
@ -738,13 +709,6 @@ sub checkplist {
}
}
if ($_ =~ m|^etc/gconf/schemas/.*\.schemas?$|) {
$gconfseen{$_} = $.;
$gconfafterinstall{$_}++ if ($gconfinstallseen{$_});
$gconfbeforeremove{$_}++ if (!$gconfremoveseen{$_});
push(@gconffile, $_);
}
if ($_ =~ /^(\%\%PORTDOCS\%\%)?share\/doc\//) {
&perror("WARN: $file [$.]: consider using DOCSDIR macro");
$sharedocused++;
@ -756,8 +720,11 @@ sub checkplist {
&perror("WARN: $file [$.]: consider using EXAMPLESDIR macro");
}
if ($_ =~ /^share\/$makevar{PORTNAME}\//) {
&perror("WARN: $file [$.]: consider using DATADIR macro");
{
my $tmpportname = quotemeta($makevar{PORTNAME});
if ($_ =~ /^share\/$tmpportname\//) {
&perror("WARN: $file [$.]: consider using DATADIR macro");
}
}
if ($_ =~ m#man/([^/]+/)?man([$manchapters])/([^\.]+\.[$manchapters])(\.gz)?$#) {
@ -801,21 +768,6 @@ sub checkplist {
&perror("WARN: $file: Both ``\%\%PORTDOCS\%\%\@dirrm \%\%DOCSDIR\%\%'' and ``\%\%PORTDOCS\%\%\@unexec \%D/\%\%DOCSDIR\%\% 2>/dev/null || true'' are missing. At least one should be used.");
}
# Check that each OMF file has an install and deinstall line.
my $omf_install = join(" ", @exec_omf);
$omf_install .= ' ';
my $omf_deinstall = join(" ", @unexec_omf);
$omf_deinstall .= ' ';
foreach my $of (@omffile) {
if ($omf_install !~ /\%D\/\Q$of\E/) {
&perror("FATAL: $file: you need an '\@exec scrollkeeper-install -q \%D/$of 2>/dev/null || /usr/bin/true' line");
}
if ($omf_deinstall !~ /\%D\/$of/) {
&perror("FATAL: $file: you need an '\@unexec scrollkeeper-uninstall -q \%D/$of 2>/dev/null || /usr/bin/true' line");
}
}
if (!$autoinfo) {
# check that every infofile has an exec install-info and unexec install-info
my $exec_install = join(" ", @exec_info);
@ -834,59 +786,15 @@ sub checkplist {
}
}
# Check that each gconf schema file has an install and deinstall line.
my $gconf_install = join(" ", @exec_gconf);
$gconf_install .= ' ';
my $gconf_deinstall = join(" ", @unexec_gconf);
$gconf_deinstall .= ' ';
foreach my $gf (@gconffile) {
if ($gconf_install !~ /\%D\/\Q$gf\E/) {
&perror("WARN: $file: you need an '\@exec env GCONF_CONFIG_SOURCE=xml::\%D/etc/gconf/gconf.xml.defaults gconftool-2 --makefile-install-rule \%D/$gf >/dev/null || /usr/bin/true' line");
}
if ($gconf_deinstall !~ /\%D\/$gf/) {
&perror("WARN: $file: you need an '\@unexec env GCONF_CONFIG_SOURCE=xml::\%D/etc/gconf/gconf.xml.defaults gconftool-2 --makefile-uninstall-rule \%D/$gf >/dev/null || /usr/bin/true' line");
}
}
if ($rcsidinplist && !$rcsidseen) {
&perror("FATAL: $file: RCS tag \"\$$rcsidstr\$\" must be present ".
"as \@comment.")
}
if (((!$autoinfo && !$infoseen) || $autoinfo) && !scalar(keys %omfseen) &&
!scalar(keys %gconfseen)) {
if (((!$autoinfo && !$infoseen) || $autoinfo)) {
close(IN);
return 1;
}
if (scalar(keys %omfseen)) {
if (!scalar(keys %omfinstallseen)) {
&perror("FATAL: $file: scrollkeeper-install must be used to ".
"add/delete entries from the ScrollKeeper OMF database.");
} else {
foreach my $of (keys %omfseen) {
if ($omfafterinstall{$of}) {
&perror("FATAL: $file [$omfinstallseen{$of}]: move ".
"\"\@exec scrollkeeper-install\" ".
"line to make sure that it is placed after ".
"the $of entry.");
}
}
}
if (!scalar(keys %omfremoveseen)) {
&perror("FATAL: $file: \"\@unexec scrollkeeper-uninstall\" must ".
"be placed after the OMF file it uninstalls.");
} else {
foreach my $of (keys %omfseen) {
if ($omfafterremove{$of}) {
&perror("FATAL: $file [$omfremoveseen{$of}]: move ".
"\"\@unexec scrollkeeper-uninstall\" ".
"line to make sure that it is placed after ".
"the $of entry.");
}
}
}
}
if (!$autoinfo && $infoseen) {
if (!$infoinstallseen) {
@ -912,35 +820,6 @@ sub checkplist {
}
}
if (scalar(keys %gconfseen)) {
if (!scalar(keys %gconfinstallseen)) {
&perror("WARN: $file: gconftool-2 must be used to ".
"add/delete gconf schema keys.");
} else {
foreach my $gf (keys %gconfseen) {
if ($gconfafterinstall{$gf}) {
&perror("FATAL: $file [$gconfinstallseen{$gf}]: move ".
"\"\@exec gconftool-2\" ".
"line to make sure that it is placed after ".
"the $gf entry.");
}
}
}
if (!scalar(keys %gconfremoveseen)) {
&perror("FATAL: $file: \"\@unexec gconftool-2\" must ".
"be placed before the schema file it uninstalls.");
} else {
foreach my $gf (keys %gconfseen) {
if ($gconfbeforeremove{$gf}) {
&perror("FATAL: $file [$gconfremoveseen{$gf}]: move ".
"\"\@unexec gconftool-2\" ".
"line to make sure that it is placed after ".
"the $gf entry.");
}
}
}
}
close(IN);
}
@ -1132,6 +1011,16 @@ sub checkmakefile {
last;
}
}
foreach my $plist_file (@plist_files) {
if ($plist_file =~ m|\.omf$| && $makevar{INSTALLS_OMF} eq '') {
&perror("WARN: PLIST_FILES: installing OMF files, ".
"please define INSTALLS_OMF (see the FreeBSD GNOME ".
"porting guide at ".
"http://www.FreeBSD.org/gnome/docs/porting.html ".
"for more details)");
last;
}
}
}
@ -1720,9 +1609,19 @@ DISTFILES DIST_SUBDIR EXTRACT_ONLY
}
print "OK: sanity checking PORTNAME/PORTVERSION.\n" if ($verbose);
if ($distname ne '' && $distname eq "$portname-$portversion") {
&perror("WARN: $file: DISTNAME is \${PORTNAME}-\${PORTVERSION} by ".
"default, you don't need to define DISTNAME.");
if ($distname ne '') {
if ($distname eq "$portname-$portversion") {
&perror("WARN: $file: DISTNAME is \${PORTNAME}-\${PORTVERSION} by ".
"default, you don't need to define DISTNAME.");
}
if ($distname =~ /PORTREVISION/) {
&perror("FATAL: $file: DISTNAME contains a reference to ".
"PORTREVISION. You should only be using PORTVERSION");
}
if ($distname =~ /PORTEPOCH/) {
&perror("FATAL: $file: DISTNAME contains a reference to ".
"PORTEPOCH. You should only be using PORTVERSION");
}
}
if ($portname =~ /^$re_lang_short/) {
&perror("FATAL: $file: language prefix is automatically".
@ -2331,7 +2230,7 @@ FETCH_DEPENDS DEPENDS DEPENDS_TARGET
# check OPTIONS
print "OK: checking OPTIONS.\n" if ($verbose);
@oopt = ($makevar{OPTIONS} =~ /(\w+)\s+\".*?\"\s+\w+/sg);
@mopt = ($tmp =~ /^\s*\.\s*(?:ifn?def\s+|if\s+\!?\s*defined\s*)\(?\s*WITH(?:OUT)?_(\w+)\s*\)?/mg);
@mopt = ($tmp =~ /\(?\s*WITH(?:OUT)?_(\w+)\s*\)?/mg);
foreach my $i (@oopt) {
if (!grep(/^$i$/, @mopt)) {
&perror("WARN: $file: $i is listed in OPTIONS, ".
@ -2465,6 +2364,7 @@ sub abspathname {
if ($verbose);
foreach my $s (split(/\n+/, $str)) {
$i = '';
$s =~ s/#.*$//;
if ($s =~ /(^|[ \t\@'"-])(\/[\w\d])/) { #'
# suspected pathnames are recorded.
$i = $2 . $';