summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorModestas Vainius <modestas@vainius.eu>2009-06-30 02:55:41 +0300
committerModestas Vainius <modestas@vainius.eu>2009-06-30 02:55:41 +0300
commite1669c2f4bec174ea29725430640bbbca950ff4c (patch)
tree3550e7e2175b5d7a31c493f38b34e151596a0cdc
parent2ddab1cefed6fb9a1ec173e32fd01b0ca7514abb (diff)
Use ASCII RS for separating options in DH_INTERNAL_OPTIONS.
Since now extra options via dh command line arguments are encouraged, dh will break when a bit more complex option gets added to DH_INTERNAL_OPTIONS and it gets misparsed by the debhelper command called from the override. E.g. debian/rules: | %: | dh --builddirectory="build dir" | | override_dh_install: | dh_install Will fail with something like: | .... | make[1]: Entering directory `............' | dh_install | cp: cannot stat `debian/tmp/dir': No such file or directory | dh_install: cp returned exit code 1 | make[1]: *** [override_dh_install] Error 1 So since DH_INTERNAL_OPTIONS is exclusively for internal use, why not to use an old good ASCII unrepresentable control character as a separator? So I chose ASCII 1E - RS Record Separator. Signed-off-by: Modestas Vainius <modestas@vainius.eu>
-rw-r--r--Debian/Debhelper/Dh_Getopt.pm2
-rwxr-xr-xdh2
2 files changed, 2 insertions, 2 deletions
diff --git a/Debian/Debhelper/Dh_Getopt.pm b/Debian/Debhelper/Dh_Getopt.pm
index 86f3cdb..6e5cacd 100644
--- a/Debian/Debhelper/Dh_Getopt.pm
+++ b/Debian/Debhelper/Dh_Getopt.pm
@@ -168,7 +168,7 @@ sub parseopts {
# DH_INTERNAL_OPTIONS is used to pass additional options from
# dh through an override target to a command.
if (defined $ENV{DH_INTERNAL_OPTIONS}) {
- @ARGV_extra=split_options_string($ENV{DH_INTERNAL_OPTIONS});
+ @ARGV_extra=split(/\x1e/, $ENV{DH_INTERNAL_OPTIONS});
getoptions(\@ARGV_extra, $options);
# Avoid forcing acting on packages specified in
diff --git a/dh b/dh
index 4ea69b2..c34a5a0 100755
--- a/dh
+++ b/dh
@@ -462,7 +462,7 @@ sub run {
$override_command=$command;
# This passes the options through to commands called
# inside the target.
- $ENV{DH_INTERNAL_OPTIONS}=join(" ", @options);
+ $ENV{DH_INTERNAL_OPTIONS}=join("\x1e", @options);
$command="debian/rules";
@options="override_".$override_command;
}