Meta/RelBuild: split signing phase into separate RelSign
Junio C Hamano committed
Dec 18, 2014 at 10:52 UTC
c16aba60473d86c7dd907549336136026e190dae
2 files changed
+110
-31
RelBuild
+1
-31
@@ -14,34 +14,4 @@ make $j dist-doc || exit
14
# The above used to be
15
# MAN_BASE_URL="http://www.kernel.org/pub/software/scm/git/docs/"
16
17
-files="
18
- git-$version.tar.gz
19
- git-htmldocs-$version.tar.gz
20
- git-manpages-$version.tar.gz
21
-"
22
-
23
-for file in $files
24
-do
25
- test -f $file || exit
26
-done
27
-
28
-# Use agent
29
-GPG_TTY=$(tty) &&
30
-export GPG_TTY &&
31
-eval $(gpg-agent --daemon) &&
32
-GPG_AGENT_PID=$(expr "$GPG_AGENT_INFO" : ".*:\([1-9][0-9]*\):[1-9][0-9]*$") &&
33
-trap 'kill -0 2>/dev/null $GPG_AGENT_PID && kill $GPG_AGENT_PID' 0 1 2 3 15 &&
34
-kill -0 "$GPG_AGENT_PID" &&
35
-gpg="gpg --use-agent --local-user 96AFE6CB!" || exit
36
-
37
-sha1sum $files | $gpg --clearsign >git-$version.sign || exit
38
-
39
-for file in $files
40
-do
41
- gzip -dc <"$file" >"${file%.gz}" &&
42
- $gpg -b "${file%.gz}" &&
43
- rm "${file%.gz}" || exit
44
-done
45
-
46
-kill $GPG_AGENT_PID
47
-ls -l git-$version.sign $files git*-$version.tar.sig
17
+exit $?
RelSign
new
+109
@@ -0,0 +1,109 @@
1
+#!/bin/sh
2
+
3
+# Use agent
4
+GPG_TTY=$(tty) &&
5
+export GPG_TTY &&
6
+eval $(gpg-agent --daemon) &&
7
+GPG_AGENT_PID=$(expr "$GPG_AGENT_INFO" : ".*:\([1-9][0-9]*\):[1-9][0-9]*$") &&
8
+trap 'kill -0 2>/dev/null $GPG_AGENT_PID && kill $GPG_AGENT_PID' 0 1 2 3 15 &&
9
+kill -0 "$GPG_AGENT_PID" &&
10
+gpg="gpg --use-agent --local-user 96AFE6CB!" || exit
11
+
12
+formats='htmldocs manpages'
13
+
14
+products () {
15
+ with_sig=: with_src=echo
16
+ case "$1" in
17
+ with-sig)
18
+ with_sig=echo
19
+ shift
20
+ ;;
21
+ only-sig)
22
+ with_sig=echo with_src=:
23
+ shift
24
+ ;;
25
+ esac
26
+ version=$1
27
+ $with_src "git-$version.tar.gz"
28
+ $with_sig "git-$version.tar.sig"
29
+ for fmt in $formats
30
+ do
31
+ $with_src "git-$fmt-$version.tar.gz"
32
+ $with_sig "git-$fmt-$version.tar.sig"
33
+ done
34
+}
35
+
36
+report () {
37
+ ls -l "git-$1.sign" $(products with-sig "$1")
38
+}
39
+
40
+
41
+failed=
42
+for tar in git-[0-9]*.tar.gz
43
+do
44
+ version=$(expr "$tar" : 'git-\(.*\)\.tar.gz$')
45
+
46
+ if test -f "git-$version.tar.sig"
47
+ then
48
+ can_skip=yes
49
+ for file in $(products with-sig "$version")
50
+ do
51
+ if ! test -f "$file"
52
+ then
53
+ can_skip=no
54
+ break
55
+ fi
56
+ done
57
+ if test "$can_skip" = yes
58
+ then
59
+ report "$version"
60
+ continue
61
+ fi
62
+ fi
63
+
64
+ rm -f $(products only-sig $version)
65
+
66
+ files="$tar"
67
+ missing=
68
+ for fmt in $formats
69
+ do
70
+ doc="git-$fmt-$version.tar.gz"
71
+ if test -f "$doc"
72
+ then
73
+ files="$files $doc"
74
+ else
75
+ missing="$missing $doc"
76
+ fi
77
+ done
78
+ case "$missing" in
79
+ ?*)
80
+ echo >&2 "Missing files: $missing"
81
+ failed="$failed $version"
82
+ continue
83
+ ;;
84
+ esac
85
+ sha1sum $files | $gpg --clearsign >git-$version.sign || {
86
+ failed="$failed $version"
87
+ continue
88
+ }
89
+
90
+ for file in $files
91
+ do
92
+ gzip -dc <"$file" >"${file%.gz}" &&
93
+ $gpg -b "${file%.gz}" || {
94
+ failed="$failed $version"
95
+ rm -f "${file%.gz}.sig"
96
+ }
97
+ rm -f "${file%.gz}"
98
+ done
99
+
100
+ case " $failed " in
101
+ *" $version "*)
102
+ continue
103
+ ;;
104
+ esac
105
+
106
+ report "$version"
107
+done
108
+
109
+kill $GPG_AGENT_PID