]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - scripts/dorelease
5.4-stable patches
[thirdparty/kernel/stable-queue.git] / scripts / dorelease
1 #!/bin/bash
2 # build -stable release from current -stable series
3 # Copyright (c) 2005 Chris Wright <chrisw@osdl.org>
4 # Copyright (c) 2006-2011 Greg Kroah-Hartman <greg@kroah.com>
5 #
6
7
8 if [ $# -ne 1 ]; then
9 KETCHUP=`which kv 2>/dev/null`
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
16 RELEASE=`kv`
17 else
18 RELEASE=$1
19 fi
20
21 REL_ARRAY=(${RELEASE//./ })
22 BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]}.${REL_ARRAY[2]}
23 REL=${REL_ARRAY[3]}
24 MAJOR=${REL_ARRAY[0]}
25 MINOR=${REL_ARRAY[2]}
26
27 LONGTERM=0
28 # see if this is a "longterm" kernel or not
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
45 fi
46 #echo "major = $MAJOR, minor = $MINOR, longterm = $LONGTERM"
47
48 # 5.x or 4.x or 3.x or 2.6?
49 VER="2.6"
50 if [ ${MAJOR} == "3" ] ; then
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
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
78
79
80 LAST=$(($REL - 1))
81 INCREMENTAL=1
82 if [ $LAST -eq 0 ]; then
83 LAST_REL=${BASE}
84 INCREMENTAL=0
85 else
86 LAST_REL=${BASE}.${LAST}
87 fi
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"
100 read
101
102 RELDIR="../release-$RELEASE"
103
104 if [ -d ${RELDIR} ] ; then
105 rm ${RELDIR}/*
106 else
107 mkdir ${RELDIR}
108 fi
109
110 echo "# building tree in ${RELDIR}"
111
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
119
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}
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
127 fi
128 git log ${LAST_COMMIT}..${RELEASE_COMMIT} > $RELDIR/ChangeLog-$RELEASE
129 < $RELDIR/ChangeLog-$RELEASE git shortlog > $RELDIR/shortlog-$RELEASE
130
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
138
139
140 echo "# "
141 #HOST="gregkh@geb.kernel.org"
142 HOST="git@gitolite.kernel.org"
143 SCRIPT="${RELDIR}/upload_v${RELEASE}"
144 touch ${SCRIPT}
145 chmod 755 ${SCRIPT}
146
147 if [ $LONGTERM -eq 1 ]; then
148 echo "# This is a longterm release"
149 echo "# finalize the release:"
150 echo "cd ${RELDIR}"
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}
154 if [ $INCREMENTAL -ne 0 ]; then
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}
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}"
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}
171 if [ $INCREMENTAL -ne 0 ]; then
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}
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
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