]>
Commit | Line | Data |
---|---|---|
33a5d277 CW |
1 | #!/bin/bash |
2 | # build -stable release from current -stable series | |
3 | # Copyright (c) 2005 Chris Wright <chrisw@osdl.org> | |
e394f899 GKH |
4 | # Copyright (c) 2006-2011 Greg Kroah-Hartman <greg@kroah.com> |
5 | # | |
33a5d277 | 6 | |
33a5d277 | 7 | |
e394f899 | 8 | if [ $# -ne 1 ]; then |
34fd0d26 | 9 | KETCHUP=`which kv 2>/dev/null` |
e394f899 GKH |
10 | if [ -z "$KETCHUP" ]; then |
11 | echo -e "Usage:\t $0 release_number" | |
12 | echo -e "e.g.\t $0 2.6.11.12" | |
13 | echo -e "or install ketchup to automatically release the latest kernel version." | |
14 | exit 1 | |
15 | fi | |
34fd0d26 | 16 | RELEASE=`kv` |
e394f899 GKH |
17 | else |
18 | RELEASE=$1 | |
cfb5410e CW |
19 | fi |
20 | ||
33a5d277 CW |
21 | REL_ARRAY=(${RELEASE//./ }) |
22 | BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]}.${REL_ARRAY[2]} | |
23 | REL=${REL_ARRAY[3]} | |
34fd0d26 | 24 | MAJOR=${REL_ARRAY[0]} |
e394f899 GKH |
25 | MINOR=${REL_ARRAY[2]} |
26 | ||
27 | LONGTERM=0 | |
28 | # see if this is a "longterm" kernel or not | |
34fd0d26 GKH |
29 | if [ $MAJOR == "2" ]; then |
30 | if [ $MINOR == "27" ]; then | |
31 | LONGTERM=1 | |
32 | fi | |
33 | if [ $MINOR == "32" ]; then | |
34 | LONGTERM=1 | |
35 | fi | |
36 | if [ $MINOR == "33" ]; then | |
37 | LONGTERM=1 | |
38 | fi | |
39 | if [ $MINOR == "34" ]; then | |
40 | LONGTERM=1 | |
41 | fi | |
42 | if [ $MINOR == "35" ]; then | |
43 | LONGTERM=1 | |
44 | fi | |
e394f899 | 45 | fi |
34fd0d26 | 46 | #echo "major = $MAJOR, minor = $MINOR, longterm = $LONGTERM" |
e394f899 | 47 | |
34fd0d26 | 48 | # 5.x or 4.x or 3.x or 2.6? |
e394f899 | 49 | VER="2.6" |
34fd0d26 | 50 | if [ ${MAJOR} == "3" ] ; then |
e394f899 GKH |
51 | # 3.x series |
52 | VER="3.0" | |
53 | BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]} | |
54 | REL=${REL_ARRAY[2]} | |
55 | MINOR=${REL_ARRAY[1]} | |
56 | fi | |
34fd0d26 GKH |
57 | if [ ${MAJOR} == "4" ] ; then |
58 | # 4.x series | |
59 | VER="4.x" | |
60 | BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]} | |
61 | REL=${REL_ARRAY[2]} | |
62 | MINOR=${REL_ARRAY[1]} | |
63 | fi | |
64 | if [ ${MAJOR} == "5" ] ; then | |
65 | # 5.x series | |
66 | VER="5.x" | |
67 | BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]} | |
68 | REL=${REL_ARRAY[2]} | |
69 | MINOR=${REL_ARRAY[1]} | |
70 | fi | |
71 | if [ ${MAJOR} == "6" ] ; then | |
72 | # 6.x series | |
73 | VER="6.x" | |
74 | BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]} | |
75 | REL=${REL_ARRAY[2]} | |
76 | MINOR=${REL_ARRAY[1]} | |
77 | fi | |
e394f899 GKH |
78 | |
79 | ||
33a5d277 | 80 | LAST=$(($REL - 1)) |
e394f899 | 81 | INCREMENTAL=1 |
33a5d277 CW |
82 | if [ $LAST -eq 0 ]; then |
83 | LAST_REL=${BASE} | |
e394f899 | 84 | INCREMENTAL=0 |
33a5d277 CW |
85 | else |
86 | LAST_REL=${BASE}.${LAST} | |
87 | fi | |
e394f899 GKH |
88 | echo "# About to create stable release $RELEASE (base $BASE last version $LAST_REL)" |
89 | echo "# " | |
90 | ||
91 | BASE_COMMIT="$(git cat-file tag v${BASE} | grep object | cut -d" " -f2)" | |
92 | LAST_COMMIT="$(git cat-file tag v${LAST_REL} | grep object | cut -d" " -f2)" | |
93 | RELEASE_COMMIT="$(git cat-file tag v${RELEASE} | grep object | cut -d" " -f2)" | |
94 | #echo "# BASE_COMMIT=$BASE_COMMIT" | |
95 | #echo "# LAST_COMMIT=$LAST_COMMIT" | |
96 | #echo "# RELEASE_COMMIT=$RELEASE_COMMIT" | |
97 | #echo "#" | |
98 | ||
99 | echo -n "# [ret] to continue" | |
33a5d277 CW |
100 | read |
101 | ||
102 | RELDIR="../release-$RELEASE" | |
33a5d277 | 103 | |
34fd0d26 GKH |
104 | if [ -d ${RELDIR} ] ; then |
105 | rm ${RELDIR}/* | |
106 | else | |
107 | mkdir ${RELDIR} | |
108 | fi | |
109 | ||
110 | echo "# building tree in ${RELDIR}" | |
33a5d277 | 111 | |
e394f899 GKH |
112 | # build release materials, tarball, base patch, incr patch, changelog |
113 | #git archive --format=tar --prefix=linux-$RELEASE/ HEAD | gzip -9 > $RELDIR/linux-${RELEASE}.tar.gz | |
114 | #git diff-tree -p $BASE_COMMIT $RELEASE_COMMIT | gzip -9 > $RELDIR/patch-${RELEASE}.gz | |
115 | #if [ $INCREMENTAL -ne 0 ]; then | |
116 | # git diff-tree -p $LAST_COMMIT $RELEASE_COMMIT | gzip -9 > $RELDIR/patch-${LAST_REL}-${REL}.gz | |
117 | #fi | |
118 | #zcat $RELDIR/patch-${LAST_REL}-${REL}.gz | diffstat -p1 > $RELDIR/diffstat-${LAST_REL}-${REL} 2>/dev/null | |
33a5d277 | 119 | |
e394f899 GKH |
120 | git archive --format=tar --prefix=linux-$RELEASE/ $RELEASE_COMMIT > $RELDIR/linux-${RELEASE}.tar |
121 | git diff-tree -p $BASE_COMMIT $RELEASE_COMMIT > $RELDIR/patch-${RELEASE} | |
122 | if [ $INCREMENTAL -ne 0 ]; then | |
123 | git diff-tree -p $LAST_COMMIT $RELEASE_COMMIT > $RELDIR/patch-${LAST_REL}-${REL} | |
34fd0d26 GKH |
124 | cat $RELDIR/patch-${LAST_REL}-${REL} | diffstat -p1 > $RELDIR/diffstat-${LAST_REL}-${REL} 2>/dev/null |
125 | else | |
126 | cat $RELDIR/patch-${RELEASE} | diffstat -p1 > $RELDIR/diffstat-${RELEASE} 2>/dev/null | |
e394f899 | 127 | fi |
e394f899 GKH |
128 | git log ${LAST_COMMIT}..${RELEASE_COMMIT} > $RELDIR/ChangeLog-$RELEASE |
129 | < $RELDIR/ChangeLog-$RELEASE git shortlog > $RELDIR/shortlog-$RELEASE | |
33a5d277 | 130 | |
e394f899 GKH |
131 | # sign all the needed files |
132 | gpg -a -b ${RELDIR}/linux-${RELEASE}.tar | |
133 | gpg -a -b ${RELDIR}/patch-${RELEASE} | |
134 | gpg -a -b ${RELDIR}/ChangeLog-${RELEASE} | |
135 | if [ $INCREMENTAL -ne 0 ]; then | |
136 | gpg -a -b ${RELDIR}/patch-${LAST_REL}-${REL} | |
137 | fi | |
33a5d277 | 138 | |
33a5d277 | 139 | |
e394f899 | 140 | echo "# " |
34fd0d26 GKH |
141 | #HOST="gregkh@geb.kernel.org" |
142 | HOST="git@gitolite.kernel.org" | |
1582f8c5 GKH |
143 | SCRIPT="${RELDIR}/upload_v${RELEASE}" |
144 | touch ${SCRIPT} | |
34fd0d26 | 145 | chmod 755 ${SCRIPT} |
1582f8c5 | 146 | |
e394f899 GKH |
147 | if [ $LONGTERM -eq 1 ]; then |
148 | echo "# This is a longterm release" | |
149 | echo "# finalize the release:" | |
150 | echo "cd ${RELDIR}" | |
34fd0d26 GKH |
151 | echo "kup --host=${HOST} --subcmd=kup-server put --tar --prefix=linux-${RELEASE}/ /pub/scm/linux/kernel/git/stable/linux-stable.git v${RELEASE} linux-${RELEASE}.tar.asc /pub/linux/kernel/v${VER}/longterm/v${BASE}/linux-${RELEASE}.tar.gz" | tee -a ${SCRIPT} |
152 | echo "kup --host=${HOST} --subcmd=kup-server put ChangeLog-${RELEASE} ChangeLog-${RELEASE}.asc /pub/linux/kernel/v${VER}/longterm/v${BASE}/" | tee -a ${SCRIPT} | |
153 | echo "kup --host=${HOST} --subcmd=kup-server put patch-${RELEASE} patch-${RELEASE}.asc /pub/linux/kernel/v${VER}/longterm/v${BASE}/patch-${RELEASE}.gz" | tee -a ${SCRIPT} | |
e394f899 | 154 | if [ $INCREMENTAL -ne 0 ]; then |
34fd0d26 | 155 | echo "kup --host=${HOST} --subcmd=kup-server put patch-${LAST_REL}-${REL} patch-${LAST_REL}-${REL}.asc /pub/linux/kernel/v${VER}/longterm/v${BASE}/incr/patch-${LAST_REL}-${REL}.gz" | tee -a ${SCRIPT} |
e394f899 GKH |
156 | fi |
157 | # echo "mv $RELDIR/linux-${RELEASE}.tar.gz ~/v2.6/longterm/v${BASE}/" | |
158 | # echo "mv $RELDIR/ChangeLog-${RELEASE} ~/v2.6/longterm/v${BASE}/" | |
159 | # echo "mv $RELDIR/patch-${RELEASE}.gz ~/v2.6/longterm/v${BASE}/" | |
160 | # echo "cp $RELDIR/patch-${LAST_REL}-${REL}.gz ~/v2.6/longterm/v${BASE}/incr/" | |
161 | # echo "mv $RELDIR/patch-${LAST_REL}-${REL}.gz ~" | |
162 | # echo "mv $RELDIR/diffstat-${LAST_REL}-${REL} ~" | |
163 | # echo "mv $RELDIR/shortlog-${RELEASE} ~" | |
164 | else | |
165 | echo "# This is a stable release" | |
166 | echo "# finalize it:" | |
167 | echo "cd ${RELDIR}" | |
34fd0d26 GKH |
168 | echo "kup --host=${HOST} --subcmd=kup-server put --tar --prefix=linux-${RELEASE}/ /pub/scm/linux/kernel/git/stable/linux-stable.git v${RELEASE} linux-${RELEASE}.tar.asc /pub/linux/kernel/v${VER}/linux-${RELEASE}.tar.gz" | tee -a ${SCRIPT} |
169 | echo "kup --host=${HOST} --subcmd=kup-server put ChangeLog-${RELEASE} ChangeLog-${RELEASE}.asc /pub/linux/kernel/v${VER}/" | tee -a ${SCRIPT} | |
170 | echo "kup --host=${HOST} --subcmd=kup-server put patch-${RELEASE} patch-${RELEASE}.asc /pub/linux/kernel/v${VER}/patch-${RELEASE}.gz" | tee -a ${SCRIPT} | |
e394f899 | 171 | if [ $INCREMENTAL -ne 0 ]; then |
34fd0d26 | 172 | echo "kup --host=${HOST} --subcmd=kup-server put patch-${LAST_REL}-${REL} patch-${LAST_REL}-${REL}.asc /pub/linux/kernel/v${VER}/incr/patch-${LAST_REL}-${REL}.gz" | tee -a ${SCRIPT} |
e394f899 GKH |
173 | fi |
174 | # echo "mv $RELDIR/patch-${LAST_REL}-${REL}.gz ~" | |
175 | # echo "mv $RELDIR/diffstat-${LAST_REL}-${REL} ~" | |
176 | # echo "mv $RELDIR/shortlog-${RELEASE} ~" | |
177 | # LATEST=`ls ~/v${VER}/LATEST-IS*` | |
178 | # LATEST=`basename $LATEST` | |
179 | # echo "# current LATEST-IS is '$LATEST' is that what it should be?" | |
180 | # echo "# mv ~/v${VER}/${LATEST} ~/v${VER}/LATEST-IS-${RELEASE}" | |
181 | fi | |
34fd0d26 GKH |
182 | |
183 | # create the email | |
184 | ||
185 | #Subject: Linux ${RELEASE} | |
186 | ||
187 | cat << __EOF__ > ${RELDIR}/email | |
188 | I'm announcing the release of the ${RELEASE} kernel. | |
189 | ||
190 | All users of the ${BASE} kernel series must upgrade. | |
191 | ||
192 | The updated ${BASE}.y git tree can be found at: | |
193 | git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-${BASE}.y | |
194 | and can be browsed at the normal kernel.org git web browser: | |
195 | https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary | |
196 | ||
197 | thanks, | |
198 | ||
199 | greg k-h | |
200 | ||
201 | ------------ | |
202 | ||
203 | __EOF__ | |
204 | ||
205 | if [ $INCREMENTAL -ne 0 ]; then | |
206 | cat ${RELDIR}/diffstat-${LAST_REL}-${REL} >> ${RELDIR}/email | |
207 | else | |
208 | cat ${RELDIR}/diffstat-${RELEASE} >> ${RELDIR}/email | |
209 | fi | |
210 | ||
211 | echo "" >> ${RELDIR}/email | |
212 | cat $RELDIR/shortlog-$RELEASE >> ${RELDIR}/email | |
213 | ||
214 | ||
215 | # create script to send email out | |
216 | ||
217 | cat << __EOF__ > ${RELDIR}/send_email | |
218 | #!/bin/bash | |
219 | ||
220 | FROM="Greg Kroah-Hartman <gregkh@linuxfoundation.org>" | |
221 | TO="linux-kernel@vger.kernel.org, akpm@linux-foundation.org, torvalds@linux-foundation.org, stable@vger.kernel.org" | |
222 | CC="lwn@lwn.net, jslaby@suse.cz" | |
223 | SUBJECT="Linux ${RELEASE}" | |
224 | ID=\$(make_message_id) | |
225 | ||
226 | cat email | \\ | |
227 | makemail -to="\${TO}" \\ | |
228 | -from="\${FROM}" \\ | |
229 | -cc="\${CC}" \\ | |
230 | -subject="\${SUBJECT}" \\ | |
231 | -message_id="\${ID}" \\ | |
232 | -date="\$(date -R)" \\ | |
233 | > msg.000 | |
234 | ||
235 | PATCH_ID=\$(make_message_id) | |
236 | cat patch-${LAST_REL}-${REL} | \\ | |
237 | makemail -to="\${TO}" \\ | |
238 | -from="\${FROM}" \\ | |
239 | -cc="\${CC}" \\ | |
240 | -subject="Re: \${SUBJECT}" \\ | |
241 | -message_id="\${PATCH_ID}" \\ | |
242 | -reply_to="\${ID}" \\ | |
243 | -date="\$(date -R)" \\ | |
244 | > msg.001 | |
245 | ||
246 | git send-email msg.000 msg.001 | |
247 | __EOF__ | |
248 | ||
249 | chmod 755 ${RELDIR}/send_email | |
250 | ||
251 |