diff options
author | rillig <rillig@pkgsrc.org> | 2005-12-01 15:21:56 +0000 |
---|---|---|
committer | rillig <rillig@pkgsrc.org> | 2005-12-01 15:21:56 +0000 |
commit | eb0289fb7ebd0f4fbaaa9ad12aa7c6d1ba6a4e1b (patch) | |
tree | 60f612b61006de3471fd7ff04df32f1307517d30 | |
parent | b1141da39b609e6dcfc65bf10f007d96ff2069a0 (diff) | |
download | pkgsrc-eb0289fb7ebd0f4fbaaa9ad12aa7c6d1ba6a4e1b.tar.gz |
Unified the handling of relative pathnames and suppressed an error message
that files containing ${FOO} could not be found.
-rw-r--r-- | pkgtools/pkglint/files/pkglint.pl | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/pkgtools/pkglint/files/pkglint.pl b/pkgtools/pkglint/files/pkglint.pl index 2e4c5928b5f..daf2630b4eb 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.404 2005/12/01 14:31:24 rillig Exp $ +# $NetBSD: pkglint.pl,v 1.405 2005/12/01 15:21:56 rillig Exp $ # # This version contains lots of changes necessary for NetBSD packages # done by: @@ -1079,6 +1079,20 @@ sub checkperms($) { } } +sub resolve_relative_path($) { + my ($relpath) = @_; + + $relpath =~ s,\$\{\.CURDIR\},.,; + $relpath =~ s,\$\{PHPPKGSRCDIR\},../../lang/php5,; + $relpath =~ s,\$\{SUSE_DIR_PREFIX\},suse91,; + $relpath =~ s,\$\{PYPKGSRCDIR\},../../lang/python23,; + if (defined($pkgdir)) { + $relpath =~ s,\$\{PKGDIR\},$pkgdir,g; + } + + return $relpath; +} + # # Subroutines to check a single line. # @@ -1149,14 +1163,12 @@ sub checkline_rcsid($$) { sub checkline_relative_path($$) { my ($line, $path) = @_; - my ($fname); if (!$is_wip && $path =~ qr"/wip/") { $line->log_error("A pkgsrc package must not depend on any outside package."); } - ($fname = "${current_dir}/${path}") =~ s/^\.\.\/\.\.\//${pkgsrcdir}\//; - $fname =~ s,\$\{\.CURDIR\},.,; - if (!-d $fname && !-f $fname) { + $path = resolve_relative_path($path); + if ($path !~ regex_unresolved && !-e "${current_dir}/${path}") { $line->log_error("\"${path}\" does not exist."); } } @@ -1605,13 +1617,9 @@ sub readmakefile($$$$) { # try to get any included file my $is_include_line = false; if ($text =~ qr"^\.\s*include\s+\"(.*)\"$") { - $includefile = $1; - $includefile =~ s/\$\{.CURDIR\}/./; + $includefile = resolve_relative_path($1); if ($includefile =~ regex_unresolved) { - $includefile =~ s,\$\{PHPPKGSRCDIR\},../../lang/php5,g; - $includefile =~ s,\$\{SUSE_DIR_PREFIX\},suse91,g; - $includefile =~ s,\$\{PYPKGSRCDIR\},../../lang/python23,g; - if ($file !~ qr"/mk/" && $includefile =~ regex_unresolved) { + if ($file !~ qr"/mk/") { $line->log_warning("Skipping include file \"${includefile}\". This may result in false warnings."); } @@ -2795,12 +2803,7 @@ sub expand_variable($$) { return undef; } - $value =~ s,\$\{\.CURDIR\},.,g; - $value =~ s,\$\{PKGSRCDIR\},../..,g; - $value =~ s,\$\{PHPPKGSRCDIR\},../../lang/php5,g; - if (defined($pkgdir)) { - $value =~ s,\$\{PKGDIR\},$pkgdir,g; - } + $value = resolve_relative_path($value); if ($value =~ regex_unresolved) { log_info(NO_FILE, NO_LINE_NUMBER, "[expand_variable] The variable ${varname} could not be resolved completely. Its value is \"${value}\"."); } |