summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrillig <rillig@pkgsrc.org>2005-11-02 23:11:54 +0000
committerrillig <rillig@pkgsrc.org>2005-11-02 23:11:54 +0000
commitfdde06dd95cd1903acabe2726050074fd38cb643 (patch)
tree5cfb037fb406eb2046033de66ef3ff0c4157eba3
parentc1a10535e11582aa81a1a9944c208c14a628af3f (diff)
downloadpkgsrc-fdde06dd95cd1903acabe2726050074fd38cb643.tar.gz
Modernized the check for dependency items. Stricter URL checking.
Removed the warning for a single element in DISTFILES, as I don't see any reason for keeping it.
-rw-r--r--pkgtools/pkglint/files/pkglint.pl117
1 files changed, 22 insertions, 95 deletions
diff --git a/pkgtools/pkglint/files/pkglint.pl b/pkgtools/pkglint/files/pkglint.pl
index 941e0fbcbc9..7368e1dfa1e 100644
--- a/pkgtools/pkglint/files/pkglint.pl
+++ b/pkgtools/pkglint/files/pkglint.pl
@@ -11,7 +11,7 @@
# Freely redistributable. Absolutely no warranty.
#
# From Id: portlint.pl,v 1.64 1998/02/28 02:34:05 itojun Exp
-# $NetBSD: pkglint.pl,v 1.320 2005/11/02 21:33:37 rillig Exp $
+# $NetBSD: pkglint.pl,v 1.321 2005/11/02 23:11:54 rillig Exp $
#
# This version contains lots of changes necessary for NetBSD packages
# done by:
@@ -1484,6 +1484,21 @@ sub checktext_basic_vartype($$$$$) {
$line->log_error("The package ${cat}/${pkg} does not exist.");
}
+ if ($pkg eq "msgfmt" || $pkg eq "gettext") {
+ $line->log_warning("Please use BUILD_USES_MSGFMT=yes instead of this dependency.");
+
+ } elsif ($pkg =~ qr"^perl\d+") {
+ $line->log_warning("Please use USE_TOOLS+=perl:run instead of this dependency.");
+
+ } elsif ($pkg eq "gmake") {
+ $line->log_warning("Please use USE_TOOLS+=gmake instead of this dependency.");
+
+ } elsif ($pkg =~ qr"^([-a-zA-Z0-9]+)-dirs[-><=]+(.*)$") {
+ my ($dirs, $version) = ($1, $2);
+
+ $line->log_warning("Please use USE_DIRS+=${dirs}-${version} instead of this dependency.");
+ }
+
} elsif ($value =~ qr":\.\./[^/]+$") {
$line->log_warning("Dependencies should have the form \"../../category/package\".");
@@ -1532,7 +1547,7 @@ sub checktext_basic_vartype($$$$$) {
} elsif ($value =~ regex_unresolved) {
# No further checks
- } elsif ($value =~ qr"^(?:http://|ftp://)") {
+ } elsif ($value =~ qr"^(?:http://|ftp://)[-0-9A-Za-z.]+(?::\d+)?/") {
my $sites = get_dist_sites();
foreach my $site (keys(%{$sites})) {
@@ -1968,14 +1983,13 @@ sub checkfile_package_Makefile($$$) {
my ($fname, $rawwhole, $loglines) = @_;
my ($distname, $category, $distfiles,
$extract_sufx, $wrksrc);
- my ($abspkgdir, $whole, $tmp, $idx, @sections, @varnames);
+ my ($whole, $tmp, $idx, @sections, @varnames);
log_subinfo("checkfile_package_Makefile", $fname, NO_LINE_NUMBER, undef);
checkperms($fname);
- $abspkgdir = Cwd::abs_path($current_dir);
- $category = basename(dirname($abspkgdir));
+ $category = basename(dirname(Cwd::abs_path($current_dir)));
$whole = "\n${rawwhole}";
#
@@ -2101,12 +2115,6 @@ sub checkfile_package_Makefile($$$) {
}
}
- # check for pkgsrc-wip remnants in CATEGORIES
- if ($tmp =~ /\nCATEGORIES=[ \t]*.*wip.*\n/
- && $category ne "wip") {
- $opt_warn_vague && log_error(NO_FILE, NO_LINE_NUMBER, "Don't forget to remove \"wip\" from CATEGORIES.");
- }
-
# check the URL
if ($tmp =~ /\nMASTER_SITES[+?]?=[ \t]*([^\n]*)\n/
&& $1 !~ /^[ \t]*$/) {
@@ -2161,33 +2169,6 @@ sub checkfile_package_Makefile($$$) {
$pkgname = $distname;
}
- # if DISTFILES have only single item, it is better to avoid DISTFILES
- # and to use combination of DISTNAME and EXTRACT_SUFX.
- # example:
- # DISTFILES=package-1.0.tgz
- # should be
- # DISTNAME= package-1.0
- # EXTRACT_SUFX= .tgz
- if ($opt_warn_vague && defined($distfiles) && $distfiles !~ regex_unresolved && $distfiles =~ /^\S+$/) {
- log_info(NO_FILE, NO_LINE_NUMBER, "Seen DISTFILES with single item, checking value.");
- log_warning(NO_FILE, NO_LINE_NUMBER, "Use of DISTFILES with single file ".
- "is discouraged. Distribution filename should be set by ".
- "DISTNAME and EXTRACT_SUFX.");
- if (defined($distname) && defined($extract_sufx) && $distfiles eq "${distname}${extract_sufx}") {
- log_warning(NO_FILE, NO_LINE_NUMBER, "Definition of DISTFILES not necessary. ".
- "DISTFILES is \${DISTNAME}\${EXTRACT_SUFX} by default.");
- }
-
- # make an advice only in certain cases.
- if (defined($pkgname) && $distfiles =~ /^$pkgname([-\.].+)$/) {
- log_warning(NO_FILE, NO_LINE_NUMBER, "How about \"DISTNAME=$pkgname\"".
- (($1 eq '.tar.gz')
- ? ""
- : " and \"EXTRACT_SUFX=$1\"").
- ", instead of DISTFILES?");
- }
- }
-
push(@varnames, qw(
DISTNAME PKGNAME SVR4_PKGNAME CATEGORIES MASTER_SITES
MASTER_SITE_SUBDIR EXTRACT_SUFX DISTFILES));
@@ -2244,14 +2225,6 @@ sub checkfile_package_Makefile($$$) {
$tmp = "\n" . $tmp;
if ($tmp !~ /\nHOMEPAGE[+?]?=[ \t]*([^\n]*)\n/ || $1 =~ /^[ \t]*$/) {
$opt_warn_vague && log_warning(NO_FILE, NO_LINE_NUMBER, "Please add HOMEPAGE if the package has one.");
- } else {
- my $i = $1;
- if ($i =~ m#^\w+://#) {
- if ($i !~ m#^\w+://[^\n/]+/#) {
- $opt_warn_vague && log_warning(NO_FILE, NO_LINE_NUMBER, "URL \"$i\" does not ".
- "end with \"/\".");
- }
- }
}
# warnings for missing COMMENT
@@ -2281,11 +2254,7 @@ sub checkfile_package_Makefile($$$) {
$tmp = $sections[$idx];
my @linestocheck = qw(BUILD_USES_MSGFMT BUILD_DEPENDS DEPENDS);
- if ($tmp =~ /(DEPENDS_TARGET|FETCH_DEPENDS|LIB_DEPENDS|RUN_DEPENDS).*=/) {
- $opt_warn_vague && log_warning(NO_FILE, NO_LINE_NUMBER, "$1 is deprecated, please use DEPENDS.");
- }
- if ($tmp =~ /(LIB_|BUILD_|RUN_|FETCH_)?DEPENDS/ or
- $tmp =~ /BUILD_USES_MSGFMT/) {
+ if ($tmp =~ qr"(?:BUILD_USED_MSGFMT|BUILD_DEPENDS|DEPENDS)") {
&checkearlier($tmp, @varnames);
foreach my $i (grep(/^[A-Z_]*DEPENDS[?+]?=/, split(/\n/, $tmp))) {
@@ -2295,48 +2264,6 @@ sub checkfile_package_Makefile($$$) {
foreach my $k (split(/\s+/, $i)) {
my $l = (split(':', $k))[0];
- # check BUILD_USES_MSGFMT
- if ($l =~ /^(msgfmt|gettext)$/) {
- $opt_warn_vague && log_warning(NO_FILE, NO_LINE_NUMBER, "Dependency to $1 ".
- "listed in $j. Consider using".
- " BUILD_USES_MSGFMT.");
- }
- # check USE_PERL5
- if ($l =~ /^perl(\.\d+)?$/) {
- $opt_warn_vague && log_warning(NO_FILE, NO_LINE_NUMBER, "Dependency to perl ".
- "listed in $j. Consider using".
- " USE_PERL5.");
- }
-
- # check USE_GMAKE
- if ($l =~ /^(gmake|\${GMAKE})$/) {
- $opt_warn_vague && log_warning(NO_FILE, NO_LINE_NUMBER, "Dependency to $1 ".
- "listed in $j. Consider using".
- " USE_TOOLS+=gmake.");
- }
-
- # check direct dependencies on -dirs packages
- if ($l =~ /^([-a-zA-Z0-9]+)-dirs[-><=]+(.*)/) {
- $opt_warn_vague && log_warning(NO_FILE, NO_LINE_NUMBER, "Dependency to $1-dirs ".
- "listed in $j. Consider using".
- " USE_DIRS+=$1-$2.");
- }
-
- # check pkg dir existence
- my @m = split(/:/, $k);
- if ($#m >= 1) {
- $m[1] =~ s/\${PKGSRCDIR}/$ENV{'PKGSRCDIR'}/;
- if ($m[1] =~ /\/$/) {
- $opt_warn_vague && log_error(NO_FILE, NO_LINE_NUMBER, "Trailing '/' (slash) for directory $m[1] listed in $j.");
- }
- if (! -d "${current_dir}/$m[1]") {
- $opt_warn_vague && log_warning(NO_FILE, NO_LINE_NUMBER, "No package directory $m[1] found, even though it is listed in $j.");
- } else {
- log_info(NO_FILE, NO_LINE_NUMBER, "Package directory $m[1] found.");
- }
- } else {
- $opt_warn_vague && log_error(NO_FILE, NO_LINE_NUMBER, "Invalid package dependency specification \"$k\".");
- }
}
}
foreach my $i (@linestocheck) {
@@ -2821,8 +2748,8 @@ sub checkdir_package() {
sub checkdir($) {
my ($dir) = @_;
- $current_dir = Cwd::abs_path($dir);
- $is_wip = (($current_dir =~ qr"/wip(?:/|$)") ? true : false);
+ $current_dir = $dir;
+ $is_wip = ((Cwd::abs_path($dir) =~ qr"/wip(?:/|$)") ? true : false);
if (-f "${dir}/../../mk/bsd.pkg.mk") {
checkdir_package();