From: Modestas Vainius <modestas@vainius.eu>
Date: Sat, 13 Jun 2009 14:25:31 +0000 (+0300)
Subject: Revert "Improvements in DH_OPTIONS handling and DH_AUTO_OPTIONS envvar support."
X-Git-Tag: 7.3.0~47
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=62935f37b81b97baa72efd77a9e913756a60ac2c;p=debhelper.git

Revert "Improvements in DH_OPTIONS handling and DH_AUTO_OPTIONS envvar support."

This mostly reverts commit f897611a77726655aea258af0c4d52a8ce759ebc.

Remaining cosmetic changes (all functional changes have been reverted):

* Refactoring of option string into split_options_string() sub (no semantic
  changes though).
* Cosmetic change in Dh_Buildsystems.pm.

Breaks testsuite.
---

diff --git a/Debian/Debhelper/Dh_Buildsystems.pm b/Debian/Debhelper/Dh_Buildsystems.pm
index 8e9920f..ac09dd2 100644
--- a/Debian/Debhelper/Dh_Buildsystems.pm
+++ b/Debian/Debhelper/Dh_Buildsystems.pm
@@ -108,27 +108,30 @@ sub load_all_buildsystems {
 sub buildsystems_init {
 	my %args=@_;
 
+	# TODO: Not documented in the manual pages yet.
+	# Initialize options from environment variables
+	if (exists $ENV{DH_AUTO_BUILDDIRECTORY}) {
+		$opt_builddir = $ENV{DH_AUTO_BUILDDIRECTORY};
+	}
+	if (exists $ENV{DH_AUTO_BUILDSYSTEM}) {
+		$opt_buildsys = $ENV{DH_AUTO_BUILDSYSTEM};
+	}
+
 	# Available command line options
 	my %options = (
-	    "d" => undef, # cancel default D_FLAG option spec
 	    "d=s" => \$opt_sourcedir,
 	    "sourcedirectory=s" => \$opt_sourcedir,
 	
 	    "b:s" => \$opt_builddir,
 	    "builddirectory:s" => \$opt_builddir,
 
-	    "c=s" => \$opt_buildsys,
+	    "m=s" => \$opt_buildsys,
 	    "buildsystem=s" => \$opt_buildsys,
 
 	    "l" => \$opt_list,
 	    "--list" => \$opt_list,
 	);
 	$args{options}{$_} = $options{$_} foreach keys(%options);
-
-	# Pass options from the DH_AUTO_OPTIONS environment variable
-	if (defined $ENV{DH_AUTO_OPTIONS}) {
-		$args{extra_args} = $ENV{DH_AUTO_OPTIONS};
-	}
 	Debian::Debhelper::Dh_Lib::init(%args);
 }
 
diff --git a/Debian/Debhelper/Dh_Getopt.pm b/Debian/Debhelper/Dh_Getopt.pm
index 2a5aa6c..9ca9d16 100644
--- a/Debian/Debhelper/Dh_Getopt.pm
+++ b/Debian/Debhelper/Dh_Getopt.pm
@@ -71,9 +71,9 @@ sub NonOption {
 
 sub getoptions {
 	my $array=shift;
-	my $extraoptions=shift;
+	my %options=%{shift()} if ref $_[0];
 
-	my %options=(
+	Getopt::Long::GetOptionsFromArray($array,
 		"v" => \$dh{VERBOSE},
 		"verbose" => \$dh{VERBOSE},
 
@@ -137,35 +137,21 @@ sub getoptions {
 		
 		"ignore=s" => \&AddIgnore,
 
-		"<>" => \&NonOption,
-	);
-	
-	# Merge extra options and cancel default ones as needed (undef)
-	if (defined $extraoptions) {
-		for my $opt (keys %$extraoptions) {
-			if (defined $extraoptions->{$opt}) {
-				$options{$opt}=$extraoptions->{$opt};
-			}
-			else {
-				delete $options{$opt};
-			}
-		}
-	}
+		%options,
 
-	Getopt::Long::GetOptionsFromArray($array, %options);
+		"<>" => \&NonOption,
+	)
 }
 
 sub split_options_string {
 	my $str=shift;
-
 	$str=~s/^\s+//;
-	return map { $_=~s/\\(\s)/$1/g; $_=~s/\s+$//g; $_ } split(/(?<!\\)\s+/,$str);
+	return split(/\s+/,$str);
 }
 
 # Parse options and set %dh values.
 sub parseopts {
 	my $options=shift;
-	my $extra_args=shift;
 	
 	my @ARGV_extra;
 
@@ -208,15 +194,6 @@ sub parseopts {
 		}
 	}
 
-	if (defined $extra_args) {
-		my @extra_opts=split_options_string($extra_args);
-		my $ret=getoptions(\@extra_opts, $options);
-		if (!$ret) {
-			warning("warning: ignored unknown options");
-		}
-		push @ARGV_extra, @extra_opts;
-	}
-
 	my $ret=getoptions(\@ARGV, $options);
 	if (!$ret) {
 		warning("warning: unknown options will be a fatal error in a future debhelper release");
diff --git a/Debian/Debhelper/Dh_Lib.pm b/Debian/Debhelper/Dh_Lib.pm
index b3162d0..28a90f7 100644
--- a/Debian/Debhelper/Dh_Lib.pm
+++ b/Debian/Debhelper/Dh_Lib.pm
@@ -29,10 +29,10 @@ sub init {
 	# Getopt::Long, which I'd prefer to avoid loading at all if possible.
 	if ((defined $ENV{DH_OPTIONS} && length $ENV{DH_OPTIONS}) ||
  	    (defined $ENV{DH_INTERNAL_OPTIONS} && length $ENV{DH_INTERNAL_OPTIONS}) ||
- 	    (defined $params{extra_args}) || grep /^-/, @ARGV) {
+	    grep /^-/, @ARGV) {
 		eval "use Debian::Debhelper::Dh_Getopt";
 		error($@) if $@;
-		Debian::Debhelper::Dh_Getopt::parseopts($params{options}, $params{extra_args});
+		Debian::Debhelper::Dh_Getopt::parseopts($params{options});
 	}
 
 	# Another way to set excludes.
diff --git a/debhelper.pod b/debhelper.pod
index 8c232d2..388453c 100644
--- a/debhelper.pod
+++ b/debhelper.pod
@@ -491,14 +491,8 @@ Anything in this variable will be prepended to the command line arguments
 of all debhelper commands. Command-specific options will be ignored by 
 commands that do not support them. 
 
-Arguments are separated by whitespaces unless a whitespace is escaped
-with a backslash character (\). Then the whitespace is treated literally.
-Likewise, the backslash character is treated literally unless it is followed
-by a single whitespace. If a backslash is followed by two or more spaces,
-it will be considered as the last symbol of the argument.
-
-DH_OPTIONS is useful in some situations, for example, if you need to pass -p
-to all debhelper commands that will be run. One good way to set DH_OPTIONS is
+This is useful in some situations, for example, if you need to pass -p to
+all debhelper commands that will be run. One good way to set DH_OPTIONS is
 by using "Target-specific Variable Values" in your debian/rules file. See
 the make documentation for details on doing this.