summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Debian/Debhelper/Dh_Getopt.pm22
-rw-r--r--debian/changelog5
-rwxr-xr-xdh5
3 files changed, 25 insertions, 7 deletions
diff --git a/Debian/Debhelper/Dh_Getopt.pm b/Debian/Debhelper/Dh_Getopt.pm
index 9868124c..86f3cdba 100644
--- a/Debian/Debhelper/Dh_Getopt.pm
+++ b/Debian/Debhelper/Dh_Getopt.pm
@@ -72,8 +72,14 @@ sub NonOption {
sub getoptions {
my $array=shift;
my %options=%{shift()} if ref $_[0];
+
+ my $oldwarn;
+ if ($ENV{DH_IGNORE_UNKNOWN_OPTIONS}) {
+ $oldwarn=$SIG{__WARN__};
+ $SIG{__WARN__}=sub {};
+ }
- Getopt::Long::GetOptionsFromArray($array,
+ my $ret=Getopt::Long::GetOptionsFromArray($array,
"v" => \$dh{VERBOSE},
"verbose" => \$dh{VERBOSE},
@@ -136,7 +142,15 @@ sub getoptions {
%options,
"<>" => \&NonOption,
- )
+ );
+
+ if ($ENV{DH_IGNORE_UNKNOWN_OPTIONS}) {
+ $SIG{__WARN__}=$oldwarn;
+ return 1;
+ }
+ else {
+ return $ret;
+ }
}
sub split_options_string {
@@ -155,11 +169,7 @@ sub parseopts {
# dh through an override target to a command.
if (defined $ENV{DH_INTERNAL_OPTIONS}) {
@ARGV_extra=split_options_string($ENV{DH_INTERNAL_OPTIONS});
- # Unknown options will be silently ignored.
- my $oldwarn=$SIG{__WARN__};
- $SIG{__WARN__}=sub {};
getoptions(\@ARGV_extra, $options);
- $SIG{__WARN__}=$oldwarn;
# Avoid forcing acting on packages specified in
# DH_INTERNAL_OPTIONS. This way, -p can be specified
diff --git a/debian/changelog b/debian/changelog
index 66b88abd..a28a4839 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -21,8 +21,11 @@ debhelper (7.3.0) UNRELEASED; urgency=low
* Move two more command-specific options to only be accepted by the commands
that use them. The options are:
--sourcedir, --destdir
- * If any third-party debhelper commands use either of the above options,
+ If any third-party debhelper commands use either of the above options,
they will be broken, and need to be changed to pass options to init().
+ * Make dh not complain about unknown, command-specific options passed to it,
+ and further suppress warnings about such options it passes on to debhelper
+ commands. This was attempted incompletely before in version 7.2.17.
-- Joey Hess <joeyh@debian.org> Mon, 20 Apr 2009 16:26:08 -0400
diff --git a/dh b/dh
index bcd5b02d..4ea69b25 100755
--- a/dh
+++ b/dh
@@ -197,6 +197,11 @@ my @ARGV_orig=@ARGV;
# python-support is enabled by default, at least for now
# (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},