From 09d21e9f004aabe6a409c981c8d11e7cb4c2051f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 4 Jan 2010 16:06:08 -0500 Subject: [PATCH] Fix warning about unknown options passed to commands in override targets. dh used DH_OVERRIDE_UNKNOWN_OPTIONS, which was too broad as it affected commands run via override targets and caused there to be no warning about unknown options. Now unknown options are only ignored when parsing DH_INTERNAL_OPTIONS and dh's own options. --- Debian/Debhelper/Dh_Getopt.pm | 19 +++++++++--------- Debian/Debhelper/Dh_Lib.pm | 2 +- debian/changelog | 1 + dh | 38 +++++++++++++++++------------------ 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Debian/Debhelper/Dh_Getopt.pm b/Debian/Debhelper/Dh_Getopt.pm index edb3be7..0d02107 100644 --- a/Debian/Debhelper/Dh_Getopt.pm +++ b/Debian/Debhelper/Dh_Getopt.pm @@ -68,10 +68,11 @@ sub NonOption { sub getoptions { my $array=shift; - my %options=%{shift()} if ref $_[0]; + my %params=@_; + my %options=%{$params{options}} if ref $params{options}; my $oldwarn; - if ($ENV{DH_IGNORE_UNKNOWN_OPTIONS}) { + if ($params{ignore_unknown_options}) { $oldwarn=$SIG{__WARN__}; $SIG{__WARN__}=sub {}; } @@ -141,7 +142,7 @@ sub getoptions { "<>" => \&NonOption, ); - if ($ENV{DH_IGNORE_UNKNOWN_OPTIONS}) { + if ($params{ignore_unknown_options}) { $SIG{__WARN__}=$oldwarn; return 1; } @@ -158,7 +159,7 @@ sub split_options_string { # Parse options and set %dh values. sub parseopts { - my $options=shift; + my %params=@_; my @ARGV_extra; @@ -166,7 +167,7 @@ sub parseopts { # dh through an override target to a command. if (defined $ENV{DH_INTERNAL_OPTIONS}) { @ARGV_extra=split(/\x1e/, $ENV{DH_INTERNAL_OPTIONS}); - getoptions(\@ARGV_extra, $options); + getoptions(\@ARGV_extra, %params, ignore_unknown_options => 1); # Avoid forcing acting on packages specified in # DH_INTERNAL_OPTIONS. This way, -p can be specified @@ -185,18 +186,16 @@ sub parseopts { delete $dh{DOARCH}; } - # DH_OPTIONS can contain additional options - # to be parsed like @ARGV, but with unknown options - # skipped. + # DH_OPTIONS can contain additional options to be parsed like @ARGV if (defined $ENV{DH_OPTIONS}) { @ARGV_extra=split_options_string($ENV{DH_OPTIONS}); - my $ret=getoptions(\@ARGV_extra, $options); + my $ret=getoptions(\@ARGV_extra, %params); if (!$ret) { warning("warning: ignored unknown options in DH_OPTIONS"); } } - my $ret=getoptions(\@ARGV, $options); + my $ret=getoptions(\@ARGV, %params); if (!$ret) { warning("warning: unknown options will be a fatal error in a future debhelper release"); #error("unknown option; aborting"); diff --git a/Debian/Debhelper/Dh_Lib.pm b/Debian/Debhelper/Dh_Lib.pm index a4e3570..f37ff51 100644 --- a/Debian/Debhelper/Dh_Lib.pm +++ b/Debian/Debhelper/Dh_Lib.pm @@ -33,7 +33,7 @@ sub init { grep /^-/, @ARGV) { eval "use Debian::Debhelper::Dh_Getopt"; error($@) if $@; - Debian::Debhelper::Dh_Getopt::parseopts($params{options}); + Debian::Debhelper::Dh_Getopt::parseopts(%params); } # Another way to set excludes. diff --git a/debian/changelog b/debian/changelog index bb8563c..a3f1fbc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,7 @@ debhelper (7.4.12) UNRELEASED; urgency=low * dh_bugfiles: Doc typo. Closes: #563269 * makefile: Support the (asking for trouble) case of MAKE being set to something with a space in it. Closes: #563557 + * Fix warning about unknown options passed to commands in override targets. -- Joey Hess Fri, 01 Jan 2010 13:00:22 -0500 diff --git a/dh b/dh index c90cf0e..96a6b84 100755 --- a/dh +++ b/dh @@ -220,29 +220,29 @@ my @ARGV_orig=@ARGV; # (and comes first so python-central loads later and can disable it). unshift @ARGV, "--with=python-support"; -# Disable complaints about unknown options for both dh and the commands -# it runs. This is done because dh accepts and passes on options that may -# be specific to only some debhelper commands. -$ENV{DH_IGNORE_UNKNOWN_OPTIONS}=1; - init(options => { - "until=s" => \$dh{UNTIL}, - "after=s" => \$dh{AFTER}, - "before=s" => \$dh{BEFORE}, - "remaining" => \$dh{REMAINING}, - "with=s" => sub { - my ($option,$value)=@_; - push @{$dh{WITH}},split(",", $value); - }, - "without=s" => sub { - my ($option,$value)=@_; - @{$dh{WITH}} = grep { $_ ne $value } @{$dh{WITH}}; + "until=s" => \$dh{UNTIL}, + "after=s" => \$dh{AFTER}, + "before=s" => \$dh{BEFORE}, + "remaining" => \$dh{REMAINING}, + "with=s" => sub { + my ($option,$value)=@_; + push @{$dh{WITH}},split(",", $value); + }, + "without=s" => sub { + my ($option,$value)=@_; + @{$dh{WITH}} = grep { $_ ne $value } @{$dh{WITH}}; + }, + "l" => \$dh{LIST}, + "list" => \$dh{LIST}, }, - "l" => \$dh{LIST}, - "list" => \$dh{LIST}, -}); + # Disable complaints about unknown options; they are passed on the + # debhelper commands. + ignore_unknown_options => 1, +); inhibit_log(); + # If make is using a jobserver, but it is not available # to this process, clean out MAKEFLAGS. This avoids # ugly warnings when calling make. -- 2.39.2