Package: devscripts
Version: 2.11.5
Severity: normal
Tags: patch
User: [email protected]
Usertags: origin-ubuntu precise ubuntu-patch
Dear Maintainer,
-- Package-specific info:
--- /etc/devscripts.conf ---
--- ~/.devscripts ---
DEBSIGN_KEYID=005E81F4
*** /home/steve/tmp/tmpH4sM5n/bug_body
(From https://bugs.launchpad.net/ubuntu/+source/devscripts/+bug/966867)
debsign from devscripts has broken the --debs-dir option:
$ ls -ld ../source
drwxrwxr-x 2 steve steve 4096 Mar 27 23:12 ../source
$ debsign --debs-dir ../source -S
debsign: could not find directory "../source"!
strace'ing debsign shows it trying to do:
15372 stat("\"../source\"", 0x7fffbbc3bba0) = -1 ENOENT (No such file or
directory)
(notice the extra \" in there.)
Looking at the source, when handling the option, it does the following:
--debs-dir)
shift
opt_debsdir="$(echo \"${1%/}\" | sed -e 's%/\+%/%g')"
note that this is slightly different than how the default directory is
generated
DEBRELEASE_DEBS_DIR="`echo \"$DEBRELEASE_DEBS_DIR\" | sed -e 's%/\+%/%g;
s%\(.\)/$%\1%;'`"
in that the latter uses shell backticks rather than $() to run
subcommands. This will behave differently, at least under dash:
$ cat dash.sh
#!/bin/sh
FOO="$(echo \"foo bar\")"
BAR="`echo \"foo bar\"`"
$ sh -xe dash.sh
+ echo "foo bar"
+ FOO="foo bar"
+ echo foo bar
+ BAR=foo bar
Bash behaves similarly. Changing the opt_debsdir definition line to the
following:
opt_debsdir="$(echo "${1%/}" | sed -e 's%/\+%/%g')"
(i.e. removing the backslash escaping of ") causes things to work as
expected.
Thanks for considering the patch.
-- System Information:
Debian Release: wheezy/sid
APT prefers precise-updates
APT policy: (500, 'precise-updates'), (500, 'precise-security'), (500,
'precise-proposed'), (500, 'precise')
Architecture: amd64 (x86_64)
Kernel: Linux 3.2.0-18-generic (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru devscripts-2.11.5/scripts/debsign.sh devscripts-2.11.5ubuntu1/scripts/debsign.sh
--- devscripts-2.11.5/scripts/debsign.sh 2011-09-26 01:38:05.000000000 -0700
+++ devscripts-2.11.5ubuntu1/scripts/debsign.sh 2012-03-28 00:00:03.000000000 -0700
@@ -341,7 +341,7 @@
;;
--debs-dir)
shift
- opt_debsdir="$(echo \"${1%/}\" | sed -e 's%/\+%/%g')"
+ opt_debsdir="$(echo "${1%/}" | sed -e 's%/\+%/%g')"
;;
--no-conf|--noconf)
echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2