]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - scripts/dorelease
scripts: update to newer versions
[thirdparty/kernel/stable-queue.git] / scripts / dorelease
CommitLineData
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 8if [ $# -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
17else
18 RELEASE=$1
cfb5410e
CW
19fi
20
33a5d277
CW
21REL_ARRAY=(${RELEASE//./ })
22BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]}.${REL_ARRAY[2]}
23REL=${REL_ARRAY[3]}
34fd0d26 24MAJOR=${REL_ARRAY[0]}
e394f899
GKH
25MINOR=${REL_ARRAY[2]}
26
27LONGTERM=0
28# see if this is a "longterm" kernel or not
34fd0d26
GKH
29if [ $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 45fi
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 49VER="2.6"
34fd0d26 50if [ ${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]}
56fi
34fd0d26
GKH
57if [ ${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]}
63fi
64if [ ${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]}
70fi
71if [ ${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]}
77fi
e394f899
GKH
78
79
33a5d277 80LAST=$(($REL - 1))
e394f899 81INCREMENTAL=1
33a5d277
CW
82if [ $LAST -eq 0 ]; then
83 LAST_REL=${BASE}
e394f899 84 INCREMENTAL=0
33a5d277
CW
85else
86 LAST_REL=${BASE}.${LAST}
87fi
e394f899
GKH
88echo "# About to create stable release $RELEASE (base $BASE last version $LAST_REL)"
89echo "# "
90
91BASE_COMMIT="$(git cat-file tag v${BASE} | grep object | cut -d" " -f2)"
92LAST_COMMIT="$(git cat-file tag v${LAST_REL} | grep object | cut -d" " -f2)"
93RELEASE_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
99echo -n "# [ret] to continue"
33a5d277
CW
100read
101
102RELDIR="../release-$RELEASE"
33a5d277 103
34fd0d26
GKH
104if [ -d ${RELDIR} ] ; then
105 rm ${RELDIR}/*
106else
107 mkdir ${RELDIR}
108fi
109
110echo "# 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
120git archive --format=tar --prefix=linux-$RELEASE/ $RELEASE_COMMIT > $RELDIR/linux-${RELEASE}.tar
121git diff-tree -p $BASE_COMMIT $RELEASE_COMMIT > $RELDIR/patch-${RELEASE}
122if [ $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
125else
126 cat $RELDIR/patch-${RELEASE} | diffstat -p1 > $RELDIR/diffstat-${RELEASE} 2>/dev/null
e394f899 127fi
e394f899
GKH
128git 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
132gpg -a -b ${RELDIR}/linux-${RELEASE}.tar
133gpg -a -b ${RELDIR}/patch-${RELEASE}
134gpg -a -b ${RELDIR}/ChangeLog-${RELEASE}
135if [ $INCREMENTAL -ne 0 ]; then
136 gpg -a -b ${RELDIR}/patch-${LAST_REL}-${REL}
137fi
33a5d277 138
33a5d277 139
e394f899 140echo "# "
34fd0d26
GKH
141#HOST="gregkh@geb.kernel.org"
142HOST="git@gitolite.kernel.org"
1582f8c5
GKH
143SCRIPT="${RELDIR}/upload_v${RELEASE}"
144touch ${SCRIPT}
34fd0d26 145chmod 755 ${SCRIPT}
1582f8c5 146
e394f899
GKH
147if [ $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} ~"
164else
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}"
181fi
34fd0d26
GKH
182
183# create the email
184
185#Subject: Linux ${RELEASE}
186
187cat << __EOF__ > ${RELDIR}/email
188I'm announcing the release of the ${RELEASE} kernel.
189
190All users of the ${BASE} kernel series must upgrade.
191
192The 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
194and 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
197thanks,
198
199greg k-h
200
201------------
202
203__EOF__
204
205if [ $INCREMENTAL -ne 0 ]; then
206 cat ${RELDIR}/diffstat-${LAST_REL}-${REL} >> ${RELDIR}/email
207else
208 cat ${RELDIR}/diffstat-${RELEASE} >> ${RELDIR}/email
209fi
210
211echo "" >> ${RELDIR}/email
212cat $RELDIR/shortlog-$RELEASE >> ${RELDIR}/email
213
214
215# create script to send email out
216
217cat << __EOF__ > ${RELDIR}/send_email
218#!/bin/bash
219
220FROM="Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
221TO="linux-kernel@vger.kernel.org, akpm@linux-foundation.org, torvalds@linux-foundation.org, stable@vger.kernel.org"
222CC="lwn@lwn.net, jslaby@suse.cz"
223SUBJECT="Linux ${RELEASE}"
224ID=\$(make_message_id)
225
226cat 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
235PATCH_ID=\$(make_message_id)
236cat 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
246git send-email msg.000 msg.001
247__EOF__
248
249chmod 755 ${RELDIR}/send_email
250
251