From 6f6db02fd7044d910eef95a0fbf6fea58ccc0a1b Mon Sep 17 00:00:00 2001 From: abs Date: Mon, 7 Mar 2005 22:21:15 +0000 Subject: update pkglint to 4.09: Handle ! in .if conditionals, plus move slightly closer to the real 'make's behaviour when using defined() and empty(). Should fix pkg/28346 --- pkgtools/pkglint/Makefile | 4 ++-- pkgtools/pkglint/files/lintpkgsrc.pl | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'pkgtools') diff --git a/pkgtools/pkglint/Makefile b/pkgtools/pkglint/Makefile index d65524f3d07..9565338fda0 100644 --- a/pkgtools/pkglint/Makefile +++ b/pkgtools/pkglint/Makefile @@ -1,7 +1,7 @@ -# $NetBSD: Makefile,v 1.224 2005/02/24 22:50:55 rillig Exp $ +# $NetBSD: Makefile,v 1.225 2005/03/07 22:21:15 abs Exp $ # -DISTNAME= pkglint-4.08 +DISTNAME= pkglint-4.09 CATEGORIES= pkgtools devel MASTER_SITES= # empty DISTFILES= # empty diff --git a/pkgtools/pkglint/files/lintpkgsrc.pl b/pkgtools/pkglint/files/lintpkgsrc.pl index 752cb2b10b2..8c99e1874ad 100755 --- a/pkgtools/pkglint/files/lintpkgsrc.pl +++ b/pkgtools/pkglint/files/lintpkgsrc.pl @@ -1,6 +1,6 @@ #!@PERL@ -# $NetBSD: lintpkgsrc.pl,v 1.96 2005/02/05 15:39:44 wiz Exp $ +# $NetBSD: lintpkgsrc.pl,v 1.97 2005/03/07 22:21:15 abs Exp $ # Written by David Brownlee . # @@ -1101,15 +1101,19 @@ sub parse_eval_make_false # XXX Could do something with target while ( $test =~ /(target|empty|make|defined|exists)\s*\(([^()]+)\)/ ) { + my $var = $${vars}{$2}; + if (defined $var && $var eq $magic_undefined) + { $var = undef; } if ($1 eq 'exists') { $_ = (-e $2) ?1 :0; } elsif( $1 eq 'defined') - { $_ = (defined($${vars}{$2}) ?1 :0); } + { $_ = defined($var) ?1 :0; } elsif( $1 eq 'empty') - { $_ = ((not defined($${vars}{$2}) or (length($${vars}{$2}) == 0)) ?1 :0); } + { $_ = ((not defined($var) or (length($var) == 0)) ?1 :0); } else { $_ = 0; } $test =~ s/$1\s*\([^()]+\)/$_/; + debug("conditional: update to $test\n"); } while ( $test =~ /([^\s()\|\&]+)\s+(!=|==)\s+([^\s()]+)/ ) { @@ -1119,7 +1123,7 @@ sub parse_eval_make_false { $_ = ($1 ne $3) ?1 :0; } $test =~ s/[^\s()\|\&]+\s+(!=|==)\s+[^\s()]+/$_/; } - if ($test !~ /[^<>\d()\s&|.]/ ) + if ($test !~ /[^<>\d()\s&|.!]/ ) { $false = eval "($test)?0:1"; if (!defined $false) -- cgit v1.2.3