]> git.proxmox.com Git - mirror_smartmontools-debian.git/blobdiff - do_release
Correct maintscript syntax
[mirror_smartmontools-debian.git] / do_release
index 0a4beee5c0336442c7c3519af1f6d09137acf50e..f88d4a43a497c1cb096629e239e59454926b036f 100755 (executable)
@@ -1,26 +1,29 @@
 #!/bin/bash
 #
 # do a smartmontools release
-# (C) 2003-9 Bruce Allen <ballen4705@users.sourceforge.net>,
-#            Guido Guenther <agx@sigxcpu.org>
-#            Christian Franke <smartmontools-support@lists.sourceforge.net>
-# $Id: do_release 2970 2009-10-26 18:36:22Z chrfranke $
+# (C) 2003-11 Bruce Allen <ballen4705@users.sourceforge.net>,
+#             Guido Guenther <agx@sigxcpu.org>
+# (C) 2006-13 Christian Franke <smartmontools-support@lists.sourceforge.net>
+# $Id: do_release 3765 2013-02-05 17:17:13Z chrfranke $
 
 # Notes on generating releases:
 # (1) update NEWS
-# (2) update CHANGELOG -- put in release number
-# (3) update release number in configure.in 
+# (2) update ChangeLog -- put in release number
+# (3) update release number in configure.ac
 # (4) to test, run without '--commit'
 # (5) when satisfied, add option '--commit'
 
 set -e
 
+# Smartmontools Signing Key (through 2014)
+KEYID=0x8F6ED8AA
+
 inc_release()
 {
   MINOR=`echo $VERSION | cut -d. -f2`
   MAJOR=`echo $VERSION | cut -d. -f1`
   PERL_OLD=$MAJOR\\.$MINOR
-  ((MINOR++))
+  ((++MINOR))
   NEW_VERSION=$MAJOR.$MINOR
   PERL_NEW=$MAJOR\\.$MINOR     
   NEW_RELEASE="RELEASE_${NEW_VERSION//\./_}"
@@ -43,23 +46,37 @@ esac
 
 # Check workdir
 case "`/bin/pwd`" in
-  */trunk/smartmontools) ;;
-  *) echo "not run from trunk checkout"; exit 1 ;;
+  */trunk/smartmontools)      WDROOT="../..";    DIRPAT="trunk"      ;;
+  */branches/*/smartmontools) WDROOT="../../.."; DIRPAT="branches/*" ;;
+  *) echo "`/bin/pwd`: no trunk or branch working dir"; exit 1 ;;
 esac
 
-if [ ! -d ../../tags ]; then
+if [ ! -d "$WDROOT/tags" ]; then
   echo "tags directory missing"; exit 1
 fi
 
-REV=`(cd ../.. && svnversion)` || exit 1
-if [ -z "`echo "$REV" | sed -n '/^[0-9][0-9]*$/p'`" ]; then
-  echo "Working directory not clean: $REV"; exit 1
+REVX="`(cd $WDROOT && svnversion)`" || exit 1
+REV="${REVX/%[PM]/}"; REV="${REV/%[PM]/}"
+if [ -n "${REV//[0-9]/}" ]; then
+  echo "Working directory not clean: $REVX"; exit 1
+fi
+
+(cd $WDROOT && svn status) | while read s; do
+  case "`echo $s | tr -s ' '`" in
+    "M "$DIRPAT/smartmontools/ChangeLog)    echo "$s: OK";;
+    "M "$DIRPAT/smartmontools/NEWS)         echo "$s: OK";;
+    "M "$DIRPAT/smartmontools/configure.ac) echo "$s: OK";;
+    *) echo "$s: not allowed"; exit 1;;
+  esac
+done
+if [ $? -ne 0 ]; then
+  exit 1
 fi
 
 # Get release number
-VERSION=`sed -n 's|^AC_INIT[^,]*, *\([0-9.]*\) *,.*$|\1|p' configure.in`
+VERSION=`sed -n 's|^AC_INIT[^,]*, *\([0-9.]*\) *,.*$|\1|p' configure.ac`
 if [ -z "$VERSION" ]; then
-  echo "AC_INIT not found in configure.in"; exit 1
+  echo "AC_INIT not found in configure.ac"; exit 1
 fi
 VERSIONRC="$VERSION"
 RELEASE="RELEASE_${VERSION//\./_}"
@@ -69,28 +86,32 @@ if [ "$RC" ]; then
   RELEASE="${RELEASE}_${RC}"
 fi
 
-if [ -e "../../tags/$RELEASE" ]; then
+if [ -e "$WDROOT/tags/$RELEASE" ]; then
   echo "tags/$RELEASE exists"; exit 1
 fi
 
 echo "r$REV: Release $VERSIONRC $RELEASE"
-set -v
 
 # Update timestamp
 smartmontools_release_date=`date -u +"%Y-%m-%d"`
 smartmontools_release_time=`date -u +"%T %Z"`
-cat configure.in  | sed "s|smartmontools_release_date=.*|smartmontools_release_date=${smartmontools_release_date}|" > configure.tmp
-cat configure.tmp | sed "s|smartmontools_release_time=.*|smartmontools_release_time=\"${smartmontools_release_time}\"|" > configure.in
+cat configure.ac  | sed "s|smartmontools_release_date=.*|smartmontools_release_date=${smartmontools_release_date}|" > configure.tmp
+cat configure.tmp | sed "s|smartmontools_release_time=.*|smartmontools_release_time=\"${smartmontools_release_time}\"|" > configure.ac
 rm -f configure.tmp
 
+# Review changes
+svn diff
+echo "==================================================================="
+echo ">>> Continuing in 20 seconds ..."
+sleep 20
+set -v
+
 # Create tag and commit
-cd ../..
 if [ "$COMMIT" = "yes" ]; then
-  svn mkdir tags/$RELEASE
-  svn copy trunk/smartmontools tags/$RELEASE/smartmontools
-  svn commit -m "Release $VERSIONRC $RELEASE"
+  svn mkdir $WDROOT/tags/$RELEASE
+  svn copy ../smartmontools $WDROOT/tags/$RELEASE/smartmontools
+  svn commit -m "Release $VERSIONRC $RELEASE" $WDROOT
 fi
-cd trunk/smartmontools
 
 # Build
 ./autogen.sh
@@ -108,14 +129,18 @@ mv -f build/smartmontools-$VERSION.tar.gz $TARFILE
 rm -rvf build
 
 md5sum $TARFILE > $TARFILE.md5
-sha1sum $TARFILE > $TARFILE.sha1
 
 # Increase release number
-if [ -z "$RC" ]; then
+if [ -z "$RC" -a "$DIRPAT" = "trunk" ]; then
   inc_release
   if [ "$COMMIT" = "yes" ]; then
-    perl -p -i.bak -e "s/$PERL_OLD/$PERL_NEW/" configure.in
-    # svn commit -m "Bump release number to $NEW_VERSION" configure.in
+    perl -p -i.bak -e "s/$PERL_OLD/$PERL_NEW/" configure.ac
+    # svn commit -m "Bump release number to $NEW_VERSION" configure.ac
   fi
 fi
 
+# Sign tarball
+if [ -n "$KEYID" ] && gpg --list-secret-keys $KEYID >/dev/null 2>/dev/null; then
+  gpg --default-key $KEYID --armor --detach-sign ./smartmontools-$VERSIONRC.tar.gz
+fi
+