This is an automated email from the git hooks/post-receive script. jamessan pushed a commit to branch master in repository devscripts.
commit 799809881e1dcb6926818f71f3ab3477a7df74df Author: James McCoy <[email protected]> Date: Wed Mar 15 23:03:49 2017 -0400 debsign: Refactor remote file handling Restore use of $remotedir to specify where to copy files on the remote host. This is needed to allow glob patterns for the remote changes file. This also allows removing all the extra "$remote*" arguments to the maybesign_* functions. All that's required is the host and directory. Finally, lift the ensure_local_copy calls out of maybesign_* functions, since the file needs to be local in order to derive the child filenames. Signed-off-by: James McCoy <[email protected]> --- debian/changelog | 2 + scripts/debsign.sh | 134 +++++++++++++++++++++++++++++------------------------ 2 files changed, 76 insertions(+), 60 deletions(-) diff --git a/debian/changelog b/debian/changelog index 38cc63a..de4990b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ devscripts (2.17.3) UNRELEASED; urgency=medium (Closes: #857537) + Determine the names of related files from the file listings in .changes/.buildinfo. (Closes: #857536) + + In remote mode, ensure files are copied locally before trying to use + them. Regression introduced in 2.17.2. (Closes: #857716) -- James McCoy <[email protected]> Sun, 12 Mar 2017 22:19:34 -0400 diff --git a/scripts/debsign.sh b/scripts/debsign.sh index 7d5b2f4..3f84b63 100755 --- a/scripts/debsign.sh +++ b/scripts/debsign.sh @@ -506,10 +506,8 @@ guess_signas() { maybesign_dsc() { local signas="$1" local remotehost="$2" - local remotedsc="$3" - local dsc="$4" + local dsc="$3" - ensure_local_copy "$remotehost" "$remotedsc" "$dsc" dsc if check_already_signed "$dsc" dsc; then echo "Leaving current signature unchanged." >&2 return @@ -519,7 +517,7 @@ maybesign_dsc() { if [ -n "$remotehost" ] then - withecho scp "$dsc" "$remotehost:$remotedsc" + withecho scp "$dsc" "$remotehost:$remotedir" PRECIOUS_FILES=$(($PRECIOUS_FILES - 1)) fi } @@ -527,19 +525,16 @@ maybesign_dsc() { maybesign_buildinfo() { local signas="$1" local remotehost="$2" - local remotebuildinfo="$3" - local buildinfo="$4" - local remotedsc="$5" - local dsc="$6" + local buildinfo="$3" + local dsc="$4" - ensure_local_copy "$remotehost" "$remotebuildinfo" "$buildinfo" buildinfo if check_already_signed "$buildinfo" "buildinfo"; then echo "Leaving current signature unchanged." >&2 return fi - if grep -q `basename "$dsc"` "$buildinfo"; then - maybesign_dsc "$signas" "$remotehost" "$remotedsc" "$dsc" + if [ -n "$dsc" ]; then + maybesign_dsc "$signas" "$remotehost" "$dsc" withtempfile buildinfo "$buildinfo" fixup_buildinfo "$dsc" fi @@ -547,7 +542,7 @@ maybesign_buildinfo() { if [ -n "$remotehost" ] then - withecho scp "$buildinfo" "$remotehost:$remotebuildinfo" + withecho scp "$buildinfo" "$remotehost:$remotedir" PRECIOUS_FILES=$(($PRECIOUS_FILES - 1)) fi } @@ -555,29 +550,23 @@ maybesign_buildinfo() { maybesign_changes() { local signas="$1" local remotehost="$2" - local remotechanges="$3" - local changes="$4" - local remotebuildinfo="$5" - local buildinfo="$6" - local remotedsc="$7" - local dsc="$8" - - ensure_local_copy "$remotehost" "$remotechanges" "$changes" changes + local changes="$3" + local buildinfo="$4" + local dsc="$5" + if check_already_signed "$changes" "changes"; then echo "Leaving current signature unchanged." >&2 return fi - hasdsc="$(to_bool grep -q `basename "$dsc"` "$changes")" - hasbuildinfo="$(to_bool grep -q `basename "$buildinfo"` "$changes")" + hasdsc="$(to_bool [ -n "$dsc" ])" + hasbuildinfo="$(to_bool [ -n "$buildinfo" ])" if $hasbuildinfo; then # assume that this will also sign the same dsc if it's available - maybesign_buildinfo "$signas" "$remotehost" \ - "$remotebuildinfo" "$buildinfo" \ - "$remotedsc" "$dsc" + maybesign_buildinfo "$signas" "$remotehost" "$buildinfo" "$dsc" elif $hasdsc; then - maybesign_dsc "$signas" "$remotehost" "$remotedsc" "$dsc" + maybesign_dsc "$signas" "$remotehost" "$dsc" fi if $hasdsc; then @@ -590,7 +579,7 @@ maybesign_changes() { if [ -n "$remotehost" ] then - withecho scp "$changes" "$remotehost:$remotechanges" + withecho scp "$changes" "$remotehost:$remotedir" PRECIOUS_FILES=$(($PRECIOUS_FILES - 1)) fi } @@ -614,20 +603,26 @@ dosigning() { remotebuildinfo=$buildinfo remotedsc=$dsc remotecommands=$commands - remotedir="`perl -e 'chomp($_="'"$dsc"'"); m%/% && s%/[^/]*$%% && print'`" changes=`basename "$changes"` buildinfo=`basename "$buildinfo"` dsc=`basename "$dsc"` commands=`basename "$commands"` + if [ -n "$changes" ]; then + if [ ! -f "$changes" ]; then + # Special handling for changes to support supplying a glob + # and downloading all matching changes files (c.f., #491627) + withecho scp "$remotehost:$remotechanges" . + fi + fi + if [ -n "$changes" ] && echo "$changes" | egrep -q '[][*?]' then - withecho scp "$remotehost:$remotechanges" . for changes in $changes do + dsc= + buildinfo= printf "\n" - derive_childfile "$changes" buildinfo - derive_childfile "$changes" dsc dosigning; done exit 0; @@ -636,12 +631,6 @@ dosigning() { if [ -n "$commands" ] # sign .commands file then - if [ ! -f "$commands" -o ! -r "$commands" ] - then - echo "$PROGNAME: Can't find or can't read commands file $commands!" >&2 - exit 1 - fi - ensure_local_copy "$remotehost" "$remotecommands" "$commands" commands check_already_signed "$commands" commands && { echo "Leaving current signature unchanged." >&2 @@ -698,7 +687,7 @@ for valid format" >&2; if [ -n "$remotehost" ] then - withecho scp "$commands" "$remotehost:$remotecommands" + withecho scp "$commands" "$remotehost:$remotedir" PRECIOUS_FILES=$(($PRECIOUS_FILES - 1)) fi @@ -706,25 +695,39 @@ for valid format" >&2; elif [ -n "$changes" ] then + ensure_local_copy "$remotehost" "$remotechanges" "$changes" changes + derive_childfile "$changes" dsc + if [ -n "$dsc" ] + then + ensure_local_copy "$remotehost" "${remotedir}$dsc" "$dsc" dsc + fi + derive_childfile "$changes" buildinfo + if [ -n "$buildinfo" ] + then + ensure_local_copy "$remotehost" "${remotedir}$buildinfo" "$buildinfo" buildinfo + fi signas="$(guess_signas "$changes")" maybesign_changes "$signas" "$remotehost" \ - "$remotechanges" "$changes" \ - "$remotebuildinfo" "$buildinfo" \ - "$remotedsc" "$dsc" + "$changes" "$buildinfo" "$dsc" report_signed elif [ -n "$buildinfo" ] then + ensure_local_copy "$remotehost" "$remotebuildinfo" "$buildinfo" buildinfo + derive_childfile "$buildinfo" dsc + if [ -n "$dsc" ] + then + ensure_local_copy "$remotehost" "${remotedir}$dsc" "$dsc" dsc + fi signas="$(guess_signas "$buildinfo")" maybesign_buildinfo "$signas" "$remotehost" \ - "$remotebuildinfo" "$buildinfo" \ - "$remotedsc" "$dsc" + "$buildinfo" "$dsc" report_signed else + ensure_local_copy "$remotehost" "$remotehost" "$remotedsc" dsc signas="$(guess_signas "$dsc")" - maybesign_dsc "$signas" "$remotehost" \ - "$remotedsc" "$dsc" + maybesign_dsc "$signas" "$remotehost" "$dsc" report_signed fi @@ -734,9 +737,27 @@ derive_childfile() { local base="$1" local ext="$2" - mustsetvar "$ext" \ - "$(sed -n '/^\(Checksum\|Files\)/,/^\(Checksum\|Files\)/s/.*[ ]\([^ ]*\.'"$ext"'\)$/\1/p' "$base" | head -n1)" \ - "$ext filename from $base" + local fname dir + fname="$(sed -n '/^\(Checksum\|Files\)/,/^\(Checksum\|Files\)/s/.*[ ]\([^ ]*\.'"$ext"'\)$/\1/p' "$base" | head -n1)" + get_dirname "$base" dir + eval "$ext=\"${dir}$fname\"" +} + +get_dirname() { + local path="$1" + local varname="$2" + + local d + d="$(dirname "$path")" + + if [ "$d" = "." ] + then + d="" + else + d="$d/" + fi + + eval "$varname=\"$d\"" } # If there is a command-line parameter, it is the name of a .changes file @@ -803,35 +824,28 @@ case $# in ;; *) while [ $# -gt 0 ]; do + changes= + buildinfo= + dsc= + commands= case "$1" in *.dsc) - changes= - buildinfo= dsc=$1 - commands= ;; *.buildinfo) - changes= buildinfo=$1 - derive_childfile "$buildinfo" dsc - commands= ;; *.changes) changes=$1 - derive_childfile "$changes" buildinfo - derive_childfile "$changes" dsc - commands= ;; *.commands) - changes= - buildinfo= - dsc= commands=$1 ;; *) echo "$PROGNAME: Only a .changes, .buildinfo, .dsc or .commands file is allowed as argument!" >&2 exit 1 ;; esac + get_dirname "$1" remotedir dosigning shift done -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git _______________________________________________ devscripts-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel
