]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blobdiff - scripts/dorelease
splitmbox.pl: added and switched over to use it
[thirdparty/kernel/stable-queue.git] / scripts / dorelease
index 31d1a582ad6f097bee2693717514cb0b07cc6cea..085c6f179931cde558406f23ff83330f961c1e39 100755 (executable)
 #!/bin/bash
 # build -stable release from current -stable series
 # Copyright (c) 2005 Chris Wright <chrisw@osdl.org>
+# Copyright (c) 2006-2011 Greg Kroah-Hartman <greg@kroah.com>
+#
 
-if [ $# -ne 1 ]; then
-       echo -e "Usage:\t $0 release_number\ne.g.\t $0 2.6.11.12"
-       exit 1
-fi
 
-if [ -z "${GIT_GPG_KEY}" ]; then
-       echo -e "Error:\tMust set GIT_GPG_KEY env variable"
-       exit 1
+if [ $# -ne 1 ]; then
+       KETCHUP=`which ketchup 2>/dev/null`
+       if [ -z "$KETCHUP" ]; then
+               echo -e "Usage:\t $0 release_number"
+               echo -e "e.g.\t $0 2.6.11.12"
+               echo -e "or install ketchup to automatically release the latest kernel version."
+               exit 1
+       fi
+       RELEASE=`ketchup -m`
+else
+       RELEASE=$1
 fi
 
-RELEASE=$1
 REL_ARRAY=(${RELEASE//./ })
 BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]}.${REL_ARRAY[2]}
 REL=${REL_ARRAY[3]}
+MINOR=${REL_ARRAY[2]}
+
+LONGTERM=0
+# see if this is a "longterm" kernel or not
+if [ $MINOR == "27" ]; then
+       LONGTERM=1
+fi
+if [ $MINOR == "32" ]; then
+       LONGTERM=1
+fi
+if [ $MINOR == "33" ]; then
+       LONGTERM=1
+fi
+if [ $MINOR == "34" ]; then
+       LONGTERM=1
+fi
+if [ $MINOR == "35" ]; then
+       LONGTERM=1
+fi
+#echo "longterm = $LONGTERM"
+
+# 3.0 or 2.6?
+VER="2.6"
+if [ ${REL_ARRAY[0]} == "3" ] ; then
+       # 3.x series
+       VER="3.0"
+       BASE=${REL_ARRAY[0]}.${REL_ARRAY[1]}
+       REL=${REL_ARRAY[2]}
+       MINOR=${REL_ARRAY[1]}
+fi
+
+
 LAST=$(($REL - 1))
+INCREMENTAL=1
 if [ $LAST -eq 0 ]; then
        LAST_REL=${BASE}
+       INCREMENTAL=0
 else
        LAST_REL=${BASE}.${LAST}
 fi
-echo "creating stable release $RELEASE (base $BASE last version $LAST_REL)"
-echo "[ret] to continue ^C to quit"
+echo "# About to create stable release $RELEASE (base $BASE last version $LAST_REL)"
+echo "# "
+
+BASE_COMMIT="$(git cat-file tag v${BASE} | grep object | cut -d" " -f2)"
+LAST_COMMIT="$(git cat-file tag v${LAST_REL} | grep object | cut -d" " -f2)"
+RELEASE_COMMIT="$(git cat-file tag v${RELEASE} | grep object | cut -d" " -f2)"
+#echo "# BASE_COMMIT=$BASE_COMMIT"
+#echo "# LAST_COMMIT=$LAST_COMMIT"
+#echo "# RELEASE_COMMIT=$RELEASE_COMMIT"
+#echo "#"
+
+echo -n "# [ret] to continue"
 read
 
 RELDIR="../release-$RELEASE"
 mkdir $RELDIR
 
-# apply patches
-quilt series | while read PATCH
-do
-       cat $PATCH >> $RELDIR/apply.mbox
-done
-git-applymbox $RELDIR/apply.mbox
-rm $RELDIR/apply.mbox
+echo "# building tree in $RELDIR"
 
-# update EXTRAVERSION
-vim +/^EXTRAVERSION Makefile
+# build release materials, tarball, base patch, incr patch, changelog
+#git archive --format=tar --prefix=linux-$RELEASE/ HEAD | gzip -9 > $RELDIR/linux-${RELEASE}.tar.gz
+#git diff-tree -p $BASE_COMMIT $RELEASE_COMMIT | gzip -9 > $RELDIR/patch-${RELEASE}.gz
+#if [ $INCREMENTAL -ne 0 ]; then
+#      git diff-tree -p $LAST_COMMIT $RELEASE_COMMIT | gzip -9 > $RELDIR/patch-${LAST_REL}-${REL}.gz
+#fi
+#zcat $RELDIR/patch-${LAST_REL}-${REL}.gz | diffstat -p1 > $RELDIR/diffstat-${LAST_REL}-${REL} 2>/dev/null
 
-# check that the EXTRAVERSION change is all that's outstanding
-echo
-echo "**** About to commit ****"
-echo
-git-diff-files -p
+git archive --format=tar --prefix=linux-$RELEASE/ $RELEASE_COMMIT > $RELDIR/linux-${RELEASE}.tar
+git diff-tree -p $BASE_COMMIT $RELEASE_COMMIT > $RELDIR/patch-${RELEASE}
+if [ $INCREMENTAL -ne 0 ]; then
+       git diff-tree -p $LAST_COMMIT $RELEASE_COMMIT > $RELDIR/patch-${LAST_REL}-${REL}
+fi
+cat $RELDIR/patch-${LAST_REL}-${REL} | diffstat -p1 > $RELDIR/diffstat-${LAST_REL}-${REL} 2>/dev/null
+git log ${LAST_COMMIT}..${RELEASE_COMMIT} > $RELDIR/ChangeLog-$RELEASE
+< $RELDIR/ChangeLog-$RELEASE git shortlog > $RELDIR/shortlog-$RELEASE
 
-echo "[ret] to continue"
-read
+# sign all the needed files
+gpg -a -b ${RELDIR}/linux-${RELEASE}.tar
+gpg -a -b ${RELDIR}/patch-${RELEASE}
+gpg -a -b ${RELDIR}/ChangeLog-${RELEASE}
+if [ $INCREMENTAL -ne 0 ]; then
+       gpg -a -b ${RELDIR}/patch-${LAST_REL}-${REL}
+fi
 
-# commit EXTRAVERSION change
-git-update-index Makefile
-git commit -m "Linux $RELEASE"
 
-# tag it
-git tag -u "${GIT_GPG_KEY}" -m "This is the $RELEASE stable release" v$RELEASE
+echo "# "
+HOST="gregkh@geb.kernel.org"
+SCRIPT="${RELDIR}/upload_v${RELEASE}"
+touch ${SCRIPT}
 
-# build release materials, tarball, base patch, incr patch, changelog
-git-tar-tree HEAD linux-${RELEASE} | gzip -9 > ${RELDIR}/linux-${RELEASE}.tar.gz
-git-diff-tree -p v${BASE} HEAD | gzip -9 > ${RELDIR}/patch-${RELEASE}.gz
-git-diff-tree -p v${LAST_REL} HEAD | gzip -9 > ${RELDIR}/patch-${LAST_REL}-${REL}.gz
-zcat ${RELDIR}/patch-${LAST_REL}-${REL}.gz | diffstat -p1 > ${RELDIR}/diffstat-${LAST_REL}-${REL} 2>/dev/null
-git log v${LAST_REL}..HEAD > ${RELDIR}/ChangeLog-${RELEASE}
-< ${RELDIR}/ChangeLog-${RELEASE} git-shortlog > ${RELDIR}/shortlog-${RELEASE}
-
-echo "ready to upload files"
-echo "scp -r ${RELDIR} master.kernel.org:"
-echo "don't forget to update LATEST-IS"
+if [ $LONGTERM -eq 1 ]; then
+       echo "# This is a longterm release"
+       echo "# finalize the release:"
+       echo "cd ${RELDIR}"
+       echo "kup --host=${HOST} 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}
+       echo "kup --host=${HOST} put ChangeLog-${RELEASE} ChangeLog-${RELEASE}.asc      /pub/linux/kernel/v${VER}/longterm/v${BASE}/" | tee -a ${SCRIPT}
+       echo "kup --host=${HOST} put patch-${RELEASE}     patch-${RELEASE}.asc     /pub/linux/kernel/v${VER}/longterm/v${BASE}/patch-${RELEASE}.gz" | tee -a ${SCRIPT}
+       if [ $INCREMENTAL -ne 0 ]; then
+               echo "kup --host=${HOST} 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}
+       fi
+#      echo "mv $RELDIR/linux-${RELEASE}.tar.gz ~/v2.6/longterm/v${BASE}/"
+#      echo "mv $RELDIR/ChangeLog-${RELEASE} ~/v2.6/longterm/v${BASE}/"
+#      echo "mv $RELDIR/patch-${RELEASE}.gz ~/v2.6/longterm/v${BASE}/"
+#      echo "cp $RELDIR/patch-${LAST_REL}-${REL}.gz ~/v2.6/longterm/v${BASE}/incr/"
+#      echo "mv $RELDIR/patch-${LAST_REL}-${REL}.gz ~"
+#      echo "mv $RELDIR/diffstat-${LAST_REL}-${REL} ~"
+#      echo "mv $RELDIR/shortlog-${RELEASE} ~"
+else
+       echo "# This is a stable release"
+       echo "# finalize it:"
+       echo "cd ${RELDIR}"
+       echo "kup --host=${HOST} 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}
+       echo "kup --host=${HOST} put ChangeLog-${RELEASE} ChangeLog-${RELEASE}.asc      /pub/linux/kernel/v${VER}/" | tee -a ${SCRIPT}
+       echo "kup --host=${HOST} put patch-${RELEASE}     patch-${RELEASE}.asc     /pub/linux/kernel/v${VER}/patch-${RELEASE}.gz" | tee -a ${SCRIPT}
+       if [ $INCREMENTAL -ne 0 ]; then
+               echo "kup --host=${HOST} put patch-${LAST_REL}-${REL} patch-${LAST_REL}-${REL}.asc /pub/linux/kernel/v${VER}/incr/patch-${LAST_REL}-${REL}.gz" | tee -a ${SCRIPT}
+       fi
+#      echo "mv $RELDIR/patch-${LAST_REL}-${REL}.gz ~"
+#      echo "mv $RELDIR/diffstat-${LAST_REL}-${REL} ~"
+#      echo "mv $RELDIR/shortlog-${RELEASE} ~"
+#      LATEST=`ls ~/v${VER}/LATEST-IS*`
+#      LATEST=`basename $LATEST`
+#      echo "# current LATEST-IS is '$LATEST' is that what it should be?"
+#      echo "# mv ~/v${VER}/${LATEST} ~/v${VER}/LATEST-IS-${RELEASE}"
+fi