diff options
author | rillig <rillig@pkgsrc.org> | 2022-08-09 20:01:25 +0000 |
---|---|---|
committer | rillig <rillig@pkgsrc.org> | 2022-08-09 20:01:25 +0000 |
commit | 507964a91a3adf2699da1e16bc3d33bbdaef02d6 (patch) | |
tree | 2abf5ed60bca83975b7d1fc57e16d3df2346a336 /pkgtools | |
parent | 9c5133d98f7c5d30932c75cf3fb21631d42c4927 (diff) | |
download | pkgsrc-507964a91a3adf2699da1e16bc3d33bbdaef02d6.tar.gz |
lintpkgsrc: cleanup: extract parse_makefile_line_var
Diffstat (limited to 'pkgtools')
-rwxr-xr-x | pkgtools/lintpkgsrc/files/lintpkgsrc.pl | 61 |
1 files changed, 32 insertions, 29 deletions
diff --git a/pkgtools/lintpkgsrc/files/lintpkgsrc.pl b/pkgtools/lintpkgsrc/files/lintpkgsrc.pl index d8dbc2400ce..c7a2c571a2f 100755 --- a/pkgtools/lintpkgsrc/files/lintpkgsrc.pl +++ b/pkgtools/lintpkgsrc/files/lintpkgsrc.pl @@ -1,6 +1,6 @@ #!@PERL5@ -# $NetBSD: lintpkgsrc.pl,v 1.63 2022/08/09 19:53:02 rillig Exp $ +# $NetBSD: lintpkgsrc.pl,v 1.64 2022/08/09 20:01:25 rillig Exp $ # Written by David Brownlee <abs@netbsd.org>. # @@ -483,6 +483,33 @@ sub parse_makefile_line_include($$$$$$) { close(FILE); } +sub parse_makefile_line_var($$$$) { + my ($varname, $op, $value, $vars) = @_; + + if ($op eq ':=') { + $vars->{$varname} = parse_expand_vars($value, $vars); + } elsif ($op eq '+=' && defined $vars->{$varname}) { + $vars->{$varname} .= " $value"; + } elsif ($op eq '?=' && defined $vars->{$varname}) { + # Do nothing. + } else { + $vars->{$varname} = $value; + } + debug($op eq '=' + ? "assignment: $varname $op $value\n" + : "assignment: $varname $op $value => $vars->{$varname}\n"); + + # Give python a little hand (XXX - do we wanna consider actually + # implementing make .for loops, etc? + # + if ($varname eq 'PYTHON_VERSIONS_ACCEPTED') { + foreach my $pv (split(/\s+/, $vars->{PYTHON_VERSIONS_ACCEPTED})) { + $vars->{'_PYTHON_VERSION_FIRSTACCEPTED'} ||= $pv; + $vars->{"_PYTHON_VERSION_${pv}_OK"} = 'yes'; + } + } +} + # Extract variable assignments from Makefile # Much unpalatable magic to avoid having to use make (all for speed) # @@ -579,9 +606,9 @@ sub parse_makefile_vars($$) { next; } - $if_false[$#if_false] && next; + next if $if_false[$#if_false]; - if (m#^\.\s*include\s+"([^"]+)"#) { + if (m#^\. \s* include \s+ "([^"]+)" #x) { my $incfile = parse_expand_vars($1, \%vars); parse_makefile_line_include($file, $incfile, @@ -589,32 +616,8 @@ sub parse_makefile_vars($$) { next; } - if (/^[ ]* ([-\w\.]+) \s* ([:+?]?=) \s* (.*)/x) { - my ($varname, $op, $value) = ($1, $2, $3); - - if ($op eq ':=') { - $vars{$varname} = parse_expand_vars($value, \%vars); - } elsif ($op eq '+=' && defined $vars{$varname}) { - $vars{$varname} .= " $value"; - # TODO: Handle append to undefined variable. - } elsif ($op eq '?=' && defined $vars{$varname}) { - # Do nothing. - } else { - $vars{$varname} = $value; - } - debug($op eq '=' - ? "assignment: $varname $op $value\n" - : "assignment: $varname $op $value => $vars{$varname}\n"); - - # Give python a little hand (XXX - do we wanna consider actually - # implementing make .for loops, etc? - # - if ($varname eq 'PYTHON_VERSIONS_ACCEPTED') { - foreach my $pv (split(/\s+/, $vars{PYTHON_VERSIONS_ACCEPTED})) { - $vars{'_PYTHON_VERSION_FIRSTACCEPTED'} ||= $pv; - $vars{"_PYTHON_VERSION_${pv}_OK"} = 'yes'; - } - } + if (m#^[ ]* ([-\w\.]+) \s* ([:+?]?=) \s* (.*)#x) { + parse_makefile_line_var($1, $2, $3, \%vars); } } |