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>
# 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
$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;
}