#
# Debhelper option processing library.
#
-# Joey Hess GPL copyright 1998.
+# Joey Hess GPL copyright 1998-2002
package Debian::Debhelper::Dh_Getopt;
use strict;
my (%options, %exclude_package);
+sub showhelp {
+ my $prog=basename($0);
+ print "Usage: $prog [options]\n\n";
+ print " $prog is a part of debhelper. See debhelper(7)\n";
+ print " and $prog(1) for complete usage instructions.\n";
+ exit(1);
+}
+
# Passed an option name and an option value, adds packages to the list
# of packages. We need this so the list will be built up in the right
# order.
}
}
+# Adds packages to the list of debug packages.
+sub AddDebugPackage { my($option,$value)=@_;
+ push @{$options{DEBUGPACKAGES}}, $value;
+}
+
# Add a package to a list of packages that should not be acted on.
sub ExcludePackage { my($option,$value)=@_;
$exclude_package{$value}=1;
"p=s" => \&AddPackage,
"package=s" => \&AddPackage,
+ "dbg-package=s" => \&AddDebugPackage,
+
"s" => \&AddPackage,
"same-arch" => \&AddPackage,
"r" => \$options{R_FLAG},
"no-restart-on-upgrade" => \$options{R_FLAG},
+ "no-start" => \$options{NO_START},
"k" => \$options{K_FLAG},
"keep" => \$options{K_FLAG},
"priority=i" => \$options{PRIORITY},
"flavor=s" => \$options{FLAVOR},
+
+ "autodest" => \$options{AUTODEST},
+
+ "h|help" => \&showhelp,
+
+ "mainpackage=s" => \$options{MAINPACKAGE},
+
+ "list-missing" => \$options{LIST_MISSING},
+
+ "fail-missing" => \$options{FAIL_MISSING},
+
+ "L|libpackage=s" => \$options{LIBPACKAGE},
+
+ "name=s" => \$options{NAME},
+
+ "keep-debug" => \$options{KEEP_DEBUG},
"<>" => \&NonOption,
);
# packages out, below.
if (! defined $options{DOPACKAGES} || ! @{$options{DOPACKAGES}}) {
if ($options{DOINDEP} || $options{DOARCH} || $options{DOSAME}) {
- # User specified that all arch (in)dep package be
- # built, and there are none of that type.
- error("I have no package to build");
+ # User specified that all arch (in)dep package be
+ # built, and there are none of that type.
+ error("I have no package to build");
}
push @{$options{DOPACKAGES}},GetPackages();
}
-
+
# Remove excluded packages from the list of packages to act on.
+ # Also unique the list, in case some options were specified that
+ # added a package to it twice.
my @package_list;
my $package;
+ my %packages_seen;
foreach $package (@{$options{DOPACKAGES}}) {
if (! $exclude_package{$package}) {
- push @package_list, $package;
+ if (! exists $packages_seen{$package}) {
+ $packages_seen{$package}=1;
+ push @package_list, $package;
+ }
}
}
@{$options{DOPACKAGES}}=@package_list;
- # Generate EXCLUDE_FIND.
- $options{EXCLUDE_FIND}='';
- foreach (@{$options{EXCLUDE}}) {
- $options{EXCLUDE_FIND}.="-regex .*".quotemeta($_).".* -or ";
- }
- $options{EXCLUDE_FIND}=~s/ -or $//;
-
# If there are no packages to act on now, it's an error.
if (! defined $options{DOPACKAGES} || ! @{$options{DOPACKAGES}}) {
error("I have no package to build");
}
+ if (defined $options{U_PARAMS}) {
+ # Split the U_PARAMS up into an array.
+ my $u=$options{U_PARAMS};
+ undef $options{U_PARAMS};
+ push @{$options{U_PARAMS}}, split(/\s+/,$u);
+ }
+
# Anything left in @ARGV is options that appeared after a --
- # These options are added to U_PARAMS, while the non-option
- # values we collected replace them in @ARGV;
- $options{U_PARAMS}.=join(' ', @ARGV);
+ # These options are added to the U_PARAMS array, while the
+ # non-option values we collected replace them in @ARGV;
+ push @{$options{U_PARAMS}}, @ARGV;
@ARGV=@{$options{ARGV}} if exists $options{ARGV};
return %options;
-}
+}
sub import {
# Enable bundling of short command line options.