diff options
author | rillig <rillig> | 2005-07-20 18:20:27 +0000 |
---|---|---|
committer | rillig <rillig> | 2005-07-20 18:20:27 +0000 |
commit | 1d0814cfc85574f1a742807f4a119501781d22b8 (patch) | |
tree | 4eb297e4ee70b32f211408627625c8f10dd102f5 /pkgtools | |
parent | 1d9adb6e3e9700b09c58e244647affc3f36993c8 (diff) | |
download | pkgsrc-1d0814cfc85574f1a742807f4a119501781d22b8.tar.gz |
Added a subroutine expand_variable that replaces certain known ${...}
substrings with reasonable values.
Diffstat (limited to 'pkgtools')
-rw-r--r-- | pkgtools/pkglint/files/pkglint.pl | 70 |
1 files changed, 32 insertions, 38 deletions
diff --git a/pkgtools/pkglint/files/pkglint.pl b/pkgtools/pkglint/files/pkglint.pl index b84831aeaa4..b3ed4c1a6e8 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.209 2005/07/20 17:32:15 rillig Exp $ +# $NetBSD: pkglint.pl,v 1.210 2005/07/20 18:20:27 rillig Exp $ # # This version contains lots of changes necessary for NetBSD packages # done by: @@ -1297,6 +1297,29 @@ sub checklines_direct_tools($) { return true; } +sub expand_variable($$$) { + my ($whole, $varname, $default_value) = @_; + my ($value, $re); + + $re = qr"\n${varname}([+:?]?)=[ \t]*([^\n#]*)"; + $value = undef; + while ($whole =~ m/$re/g) { + my ($op, $val) = ($1, $2); + if ($op ne "?" || !defined($value)) { + $value = $val; + } + } + if (!defined($value)) { + $value = $default_value; + } + $value =~ s,\$\{\.CURDIR\},.,g; + $value =~ s,\$\{PKGSRCDIR\},../..,g; + if (defined($pkgdir)) { + $value =~ s,\$\{PKGDIR\},$pkgdir,g; + } + return $value; +} + sub checkfile_Makefile($$) { my ($dir, $fname) = @_; my ($tmp, $rawwhole, $whole, $idx, @sections); @@ -1346,46 +1369,17 @@ sub checkfile_Makefile($$) { } } - # - # whole file: get FILESDIR, PATCHDIR, PKGDIR, SCRIPTDIR, - # PATCH_SUM_FILE and DIGEST_FILE - # - - $filesdir = "files"; - $filesdir = $1 if ($whole =~ /\nFILESDIR[+?]?=[ \t]*([^\n]+)\n/); - $filesdir = $1 if ($whole =~ /\nFILESDIR:?=[ \t]*([^\n]+)\n/); - $filesdir =~ s/\$\{.CURDIR\}/./; - - $patchdir = "patches"; - $patchdir = $1 if ($whole =~ /\nPATCHDIR[+?]?=[ \t]*([^\n]+)\n/); - $patchdir = $1 if ($whole =~ /\nPATCHDIR:?=[ \t]*([^\n]+)\n/); - $patchdir =~ s/\$\{.CURDIR\}/./; - $patchdir =~ s/\${PKGSRCDIR}/..\/../; + $distinfo_file = expand_variable($whole, "DISTINFO_FILE", "distinfo"); + $filesdir = expand_variable($whole, "FILESDIR", "files"); + $patchdir = expand_variable($whole, "PATCHDIR", "patches"); + $pkgdir = expand_variable($whole, "PKGDIR", "."); + $scriptdir = expand_variable($whole, "SCRIPTDIR", "scripts"); - if (grep { $_ !~ qr"/CVS$" } <$dir/pkg/*>) { - $pkgdir = "pkg"; - } - $pkgdir = $1 if ($whole =~ /\nPKGDIR[+?]?=[ \t]*([^\n]+)\n/); - $pkgdir = $1 if ($whole =~ /\nPKGDIR:?=[ \t]*([^\n]+)\n/); - $pkgdir =~ s/\$\{.CURDIR\}/./; - - $scriptdir = "scripts"; - $scriptdir = $1 if ($whole =~ /\nSCRIPTDIR[+?]?=[ \t]*([^\n]+)\n/); - $scriptdir = $1 if ($whole =~ /\nSCRIPTDIR:?=[ \t]*([^\n]+)\n/); - $scriptdir =~ s/\$\{.CURDIR\}/./; - - $distinfo_file = "distinfo"; - $distinfo_file = $1 if ($whole =~ /\nDISTINFO_FILE[+?]?=[ \t]*([^\n]+)\n/); - $distinfo_file = $1 if ($whole =~ /\nDISTINFO_FILE:?=[ \t]*([^\n]+)\n/); - $distinfo_file =~ s/\$\{.CURDIR\}/./; - $distinfo_file =~ s/\${PKGSRCDIR}/..\/../; - $distinfo_file =~ s/\${PKGDIR}/$pkgdir/; - - log_info(NO_FILE, NO_LINE_NUMBER, "[checkfile_Makefile] PATCHDIR=$patchdir"); - log_info(NO_FILE, NO_LINE_NUMBER, "[checkfile_Makefile] SCRIPTDIR=$scriptdir"); + log_info(NO_FILE, NO_LINE_NUMBER, "[checkfile_Makefile] DISTINFO_FILE=$distinfo_file"); log_info(NO_FILE, NO_LINE_NUMBER, "[checkfile_Makefile] FILESDIR=$filesdir"); + log_info(NO_FILE, NO_LINE_NUMBER, "[checkfile_Makefile] PATCHDIR=$patchdir"); log_info(NO_FILE, NO_LINE_NUMBER, "[checkfile_Makefile] PKGDIR=$pkgdir"); - log_info(NO_FILE, NO_LINE_NUMBER, "[checkfile_Makefile] DISTINFO_FILE=$distinfo_file"); + log_info(NO_FILE, NO_LINE_NUMBER, "[checkfile_Makefile] SCRIPTDIR=$scriptdir"); checklines_deprecated_variables($lines); |