]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Meta/RelBuild: split signing phase into separate RelSign
authorJunio C Hamano <gitster@pobox.com>
Thu, 18 Dec 2014 18:52:37 +0000 (10:52 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 18 Dec 2014 18:52:37 +0000 (10:52 -0800)
RelBuild
RelSign [new file with mode: 0755]

index 69e6c8bd218a4b16746fc70f0a4780cffb149f0e..f1e8ba5df17ca15d7581dcd0d0a3cb4b364e2009 100755 (executable)
--- a/RelBuild
+++ b/RelBuild
@@ -14,34 +14,4 @@ make $j dist-doc || exit
 # The above used to be
 # MAN_BASE_URL="http://www.kernel.org/pub/software/scm/git/docs/"
 
-files="
-       git-$version.tar.gz
-       git-htmldocs-$version.tar.gz
-       git-manpages-$version.tar.gz
-"
-
-for file in $files
-do
-       test -f $file || exit
-done
-
-# Use agent
-GPG_TTY=$(tty) &&
-export GPG_TTY &&
-eval $(gpg-agent --daemon) &&
-GPG_AGENT_PID=$(expr "$GPG_AGENT_INFO" : ".*:\([1-9][0-9]*\):[1-9][0-9]*$") &&
-trap 'kill -0 2>/dev/null $GPG_AGENT_PID && kill $GPG_AGENT_PID' 0 1 2 3 15 &&
-kill -0 "$GPG_AGENT_PID" &&
-gpg="gpg --use-agent --local-user 96AFE6CB!" || exit
-
-sha1sum $files | $gpg --clearsign >git-$version.sign || exit
-
-for file in $files
-do
-       gzip -dc <"$file" >"${file%.gz}" &&
-       $gpg -b "${file%.gz}" &&
-       rm "${file%.gz}" || exit
-done
-
-kill $GPG_AGENT_PID
-ls -l git-$version.sign $files git*-$version.tar.sig
+exit $?
diff --git a/RelSign b/RelSign
new file mode 100755 (executable)
index 0000000..66fd3fd
--- /dev/null
+++ b/RelSign
@@ -0,0 +1,109 @@
+#!/bin/sh
+
+# Use agent
+GPG_TTY=$(tty) &&
+export GPG_TTY &&
+eval $(gpg-agent --daemon) &&
+GPG_AGENT_PID=$(expr "$GPG_AGENT_INFO" : ".*:\([1-9][0-9]*\):[1-9][0-9]*$") &&
+trap 'kill -0 2>/dev/null $GPG_AGENT_PID && kill $GPG_AGENT_PID' 0 1 2 3 15 &&
+kill -0 "$GPG_AGENT_PID" &&
+gpg="gpg --use-agent --local-user 96AFE6CB!" || exit
+
+formats='htmldocs manpages'
+
+products () {
+       with_sig=: with_src=echo
+       case "$1" in
+       with-sig)
+               with_sig=echo
+               shift
+               ;;
+       only-sig)
+               with_sig=echo with_src=:
+               shift
+               ;;
+       esac
+       version=$1
+       $with_src "git-$version.tar.gz"
+       $with_sig "git-$version.tar.sig"
+       for fmt in $formats
+       do
+               $with_src "git-$fmt-$version.tar.gz"
+               $with_sig "git-$fmt-$version.tar.sig"
+       done
+}
+
+report () {
+       ls -l "git-$1.sign" $(products with-sig "$1")
+}
+
+
+failed=
+for tar in git-[0-9]*.tar.gz
+do
+       version=$(expr "$tar" : 'git-\(.*\)\.tar.gz$')
+
+       if test -f "git-$version.tar.sig"
+       then
+               can_skip=yes
+               for file in $(products with-sig "$version")
+               do
+                       if ! test -f "$file"
+                       then
+                               can_skip=no
+                               break
+                       fi
+               done
+               if test "$can_skip" = yes
+               then
+                       report "$version"
+                       continue
+               fi
+       fi
+
+       rm -f $(products only-sig $version)
+
+       files="$tar"
+       missing=
+       for fmt in $formats
+       do
+               doc="git-$fmt-$version.tar.gz"
+               if test -f "$doc"
+               then
+                       files="$files $doc"
+               else
+                       missing="$missing $doc"
+               fi
+       done
+       case "$missing" in
+       ?*)
+               echo >&2 "Missing files: $missing"
+               failed="$failed $version"
+               continue
+               ;;
+       esac
+       sha1sum $files | $gpg --clearsign >git-$version.sign || {
+               failed="$failed $version"
+               continue
+       }
+
+       for file in $files
+       do
+               gzip -dc <"$file" >"${file%.gz}" &&
+               $gpg -b "${file%.gz}" || {
+                       failed="$failed $version"
+                       rm -f "${file%.gz}.sig"
+               }
+               rm -f "${file%.gz}"
+       done
+
+       case " $failed " in
+       *" $version "*)
+               continue
+               ;;
+       esac
+
+       report "$version"
+done
+
+kill $GPG_AGENT_PID