main: add release script
authorFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 16 Nov 2012 13:02:48 +0000 (14:02 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 16 Nov 2012 13:13:40 +0000 (14:13 +0100)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
CHANGELOG
release-howto.txt [deleted file]
release/.gitignore [new file with mode: 0644]
release/release.bash [new file with mode: 0755]
scripts/mk-tarball.sh [deleted file]

index e7319c7..970190e 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,3 @@
-This file states changes as of version 0.2.4:
-
-
 0.6.4 --------------------------------------------------------------------
 
 Bugfix and plugin release 0.6.4
diff --git a/release-howto.txt b/release-howto.txt
deleted file mode 100644 (file)
index 5ec2bdb..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-cheat sheet for making a (stable) release tarball.
-
-0. check if your name settings in .hgrc are correct. (have
-   your real name and email address in there).
-
-1. clone a fresh tree:
-
-   $ git clone git://olsr.org/olsrd.git
-   $ git checkout --track -b stable origin/stable
-
-2. check if the DEBUG settings in Makefile.inc are correct:
-
-   DEBUG ?= 1
-   NO_DEBUG_MESSAGES ?= 0
-
-   now check if it builds correct:
-
-   $ make uberclean build_all
-
-3. Update the changelog
-
-4. Change VERS in Makefile to your target release.
-   in this example the target release is 0.5.6-r5
-   Please also write a new version to:
-   gui/win32/Main/Frontend.rc (line 71, around "CAPTION [...]")
-   gui/win32/Inst/installer.nsi (line 57, around "MessageBox MB_YESNO [...]")
-
-   most likely this is carrying some pre-XXX-release tag.
-   
-   $ grep -E "^VERS" Makefile
-   VERS =          pre-0.6.1
-
-   change it to
-
-   VERS =          0.6.1
-
-5. commit
-
-6. make the release tarball
-
-   $ cd scripts/
-   $ ./mk-tarball.sh
-   [ ... ]
-   ### creating /tmp/olsrd-0.5.6-r5.tar.gz
-   6c996e94de06115d19dbbcaf6847051a  /tmp/olsrd-0.5.6-r5.tar.gz
-   ### creating /tmp/olsrd-0.5.6-r5.tar.bz2
-   e476819be5747758e3d6f579e4096bce  /tmp/olsrd-0.5.6-r5.tar.bz2
-
-7. check if everything is in the release tarball (ideally on a a
-   different machine) and try to build from the tarball.
-
-8. display the used tags:
-
-   $ git tag
-OLSRD_0_4_10
-OLSRD_0_4_8
-OLSRD_0_4_9
-OLSRD_0_5_0
-OLSRD_0_5_1
-OLSRD_0_5_2
-OLSRD_0_5_3
-OLSRD_0_5_4
-...
-
-   now tag the tree (please stick to the tagging scheme).
-
-   $ git tag -s OLSRD_0_6_0
-
-9. push
-
-10. upload the the .tgz and .bz2 tarballs to the http://www.olsr.org/downaload/0.5/
-   section and add a release article on the web.
-   Add a PGP signed textfile with the md5/sha1 sums to the webpage too
-
-11. Change VERS in Makefile.inc to your *next* target release.
-   in this example the next target release is pre-0.6.2
-   
-   Please also write a new version to:
-   gui/win32/Main/Frontend.rc (line 71, around "CAPTION [...]")
-   gui/win32/Inst/installer.nsi (line 57, around "MessageBox MB_YESNO [...]")
-
-   change it from:
-   
-   $ grep -E "^VERS" Makefile
-   VERS =          0.6.1
-
-   to
-
-   VERS =          pre-0.6.2
-
-   commit & push
-
-you are done, congratulations !
diff --git a/release/.gitignore b/release/.gitignore
new file mode 100644 (file)
index 0000000..dbd5feb
--- /dev/null
@@ -0,0 +1,4 @@
+/olsrd-*.tar.gz
+/olsrd-*.tar.bz2
+/MD5SUM-*
+/SHA256SUM-*
diff --git a/release/release.bash b/release/release.bash
new file mode 100755 (executable)
index 0000000..28044b4
--- /dev/null
@@ -0,0 +1,590 @@
+#!/bin/bash
+
+set -e
+set -u
+
+
+# ##############################################################################
+# # Settings
+# ##############################################################################
+
+# The digit representation of a version can be in the format 0.6.4 or 0.6.4.1
+declare versionRegexDigits="([[:digit:]]+.[[:digit:]]+.[[:digit:]]+)(.[[:digit:]]+)?"
+
+# The version for source code can be in the format:
+# - 0.6.4 or 0.6.4.1 or pre-0.6.4 or pre-0.6.4.1
+declare versionRegexSources="(|pre-)(${versionRegexDigits})"
+
+# The version for a release tag is in the format v0.6.4 or v0.6.4.1
+declare versionRegexReleaseTag="v(${versionRegexDigits})"
+
+# A release branch is in the format release-0.6.4 or release-0.6.4.1
+declare relBranchRegex="release-(${versionRegexDigits})"
+
+
+
+
+# ##############################################################################
+# # Functions
+# ##############################################################################
+
+#
+# Get the canonical path of a file or directory
+# This is the physical path without any links
+#
+# 1=the file or directory
+function pathCanonicalPath() {
+  local src="$(stringTrim "${1}")"
+
+  if [[ -h "${src}" ]] && [[ -d "${src}" ]]; then
+    # src is a link to a directory
+    pushd . &> /dev/null
+    cd -P "${src}" &> /dev/null
+    pwd -P
+    popd &> /dev/null
+    return
+  fi
+
+  # we're not dealing with a directory here
+  while [[ -h "${src}" ]]; do
+    # keep getting the link target while src is a link
+    src="$(ls -la "${src}" | \
+           sed -r 's#^.*?[[:space:]]+->[[:space:]]+(.*)$#\1#')"
+  done
+  # src is no longer a link here
+
+  pushd . &> /dev/null
+  cd -P "$(dirname "${src}")" &> /dev/null
+  echo "$(pwd -P)/$(basename "${src}")"
+  popd &> /dev/null
+}
+
+
+#
+# Trim a string: remove spaces from the beginning and end of the string
+#
+# 1=string to trim
+# return=trimmed string
+function stringTrim() {
+  if [[ -z "${1}" ]]; then
+    return
+  fi
+
+  # remove leading whitespace characters
+  local var="${1#${1%%[![:space:]]*}}"
+
+  # remove trailing whitespace characters
+  echo "${var%${var##*[![:space:]]}}"
+}
+
+
+#
+# Determine whether a given directory is a git repository directory
+#
+# 1=directory
+# return=0 not a git dir, 1 a git dir
+function gitIsGitDirectory() {
+  local place="$(stringTrim "${1}")"
+
+  local -i result=1
+  if [[ -d "${place}" ]]; then
+    pushd "${place}" &> /dev/null
+    set +e
+    git rev-parse --git-dir #&> /dev/null
+    result=${?}
+    set -e
+    popd &> /dev/null
+  fi
+
+  if [[ ${result} -ne 0 ]]; then
+    echo "0"
+  else
+    echo "1"
+  fi
+}
+
+
+#
+# Get the version digits from a release tag version
+#
+# 1=release tag version
+# return=version digits
+function getVersionDigitsFromReleaseTag() {
+  echo "$(stringTrim "${1}")" | sed -r "s/${versionRegexReleaseTag}/\1/"
+}
+
+
+#
+# Get the next version digits by incrementing the micro digit
+#
+# 1=version in format 0.6.4 or 0.6.4.1
+# return=incremented version in format 0.6.5
+function getNextVersionDigitsMicro() {
+  local version="$(stringTrim "${1}")"
+  local -a versionDigits=( ${version//\./ } )
+  local -i versionMicroNext=$(( ${versionDigits[2]} + 1 ))
+  echo "${versionDigits[0]}.${versionDigits[1]}.${versionMicroNext}"
+}
+
+
+#
+# Get the next version digits by incrementing the patchlevel digit
+#
+# 1=version in format 0.6.4 or 0.6.4.0
+# return=incremented version in format 0.6.4.1
+function getNextVersionDigitsPatchLevel() {
+  local version="$(stringTrim "${1}")"
+  local -a versionDigits=( ${version//\./ } )
+  local -i versionPatchLevelNext=1
+  if [[ ${#versionDigits[*]} -ne 3 ]]; then
+    versionPatchLevelNext=$(( ${versionDigits[3]} + 1 ))
+  fi
+  echo "${versionDigits[0]}.${versionDigits[1]}.${versionDigits[2]}.${versionPatchLevelNext}"
+}
+
+
+#
+# Adjust the branch name so that we can release 0.6.4.x from the
+# release-0.6.4 branch
+#
+# prevTagVersionDigits relBranchVersionDigits  relBranchVersionDigits (adjusted)
+#      0.6.4                   0.6.4                   0.6.4.1
+#      0.6.4                   0.6.5                   -
+#      0.6.4                   0.6.4.5                 -
+#      0.6.4                   0.6.5.5                 -
+#      0.6.4.5                 0.6.4                   0.6.4.6
+#      0.6.4.5                 0.6.5                   -
+#      0.6.4.5                 0.6.4.6                 -
+#      0.6.4.5                 0.6.5.6                 -
+function adjustBranchName() {
+  local -a prevTagVersionDigitsArray=( ${prevTagVersionDigits//\./ } )
+  local -a relBranchVersionDigitsArray=( ${relBranchVersionDigits//\./ } )
+  local -i prevTagVersionDigitsCount=${#prevTagVersionDigitsArray[*]}
+  local -i relBranchVersionDigitsCount=${#relBranchVersionDigitsArray[*]}
+  local prevTagVersionTrain="$(echo "$(stringTrim "${prevTagVersionDigits}")" | \
+                               sed -r "s/${versionRegexDigits}/\1/")"
+
+  if  [[ "${prevTagVersionDigits}" == "${relBranchVersionDigits}" ]] || \
+     ([[ "${prevTagVersionTrain}"  == "${relBranchVersionDigits}" ]] && \
+      [[ ${prevTagVersionDigitsCount}   -eq 4 ]] && \
+      [[ ${relBranchVersionDigitsCount} -eq 3 ]]); then
+    relBranchVersionDigits="$(getNextVersionDigitsPatchLevel "${prevTagVersionDigits}")"
+  fi
+}
+
+
+#
+# Check that the new version is incrementing
+#
+# 1=last version
+# 2=new version
+function checkVersionIncrementing() {
+  local lastVersion="$(stringTrim "${1}")"
+  local newVersion="$(stringTrim "${2}")"
+  local errorstr="* The new version ${newVersion} is not greater than the previous version ${lastVersion}"
+
+  local -a lastVersionDigits=( ${lastVersion//\./ } )
+  local -a newVersionDigits=( ${newVersion//\./ } )
+
+  # if the last version is in the format 0.6.4 then assume 0.6.4.0
+  if [[ ${#lastVersionDigits[*]} -ne 4 ]]; then
+    lastVersionDigits[3]=0
+  fi
+
+  # if the new version is in the format 0.6.4 then assume 0.6.4.0
+  if [[ ${#newVersionDigits[*]} -ne 4 ]]; then
+    newVersionDigits[3]=0
+  fi
+
+  # major
+  if [[ ${newVersionDigits[0]} -lt ${lastVersionDigits[0]} ]]; then
+    echo "${errorstr}"
+    exit 1
+  fi
+  if [[ ${newVersionDigits[0]} -gt ${lastVersionDigits[0]} ]]; then
+    return
+  fi
+
+  # minor
+  if [[ ${newVersionDigits[1]} -lt ${lastVersionDigits[1]} ]]; then
+    echo "${errorstr}"
+    exit 1
+  fi
+  if [[ ${newVersionDigits[1]} -gt ${lastVersionDigits[1]} ]]; then
+    return
+  fi
+
+  # micro
+  if [[ ${newVersionDigits[2]} -lt ${lastVersionDigits[2]} ]]; then
+    echo "${errorstr}"
+    exit 1
+  fi
+  if [[ ${newVersionDigits[2]} -gt ${lastVersionDigits[2]} ]]; then
+    return
+  fi
+
+  # patch level
+  if [[ ${newVersionDigits[3]} -lt ${lastVersionDigits[3]} ]]; then
+    echo "${errorstr}"
+    exit 1
+  fi
+  if [[ ${newVersionDigits[3]} -gt ${lastVersionDigits[3]} ]]; then
+    return
+  fi
+
+  # everything is equal
+  echo "${errorstr}"
+  exit 1
+}
+
+
+#
+# Commit the current changes, allow an empty commit, or amend (when the commit
+# message is the same as that of the last commit)
+#
+# 1=commit message
+function commitChanges() {
+  local -i allowEmpty=${1}
+  local msg="$(stringTrim "${2}")"
+
+  local lastMsg="$(git log -1 --format="%s")"
+  lastMsg="$(stringTrim "${lastMsg}")"
+  local extra=""
+  if [[ ${allowEmpty} -ne 0 ]]; then
+    extra="${extra} --allow-empty"
+  fi
+  if [[ "${msg}" == "${lastMsg}" ]]; then
+    extra="${extra} --amend"
+  fi
+  set +e
+  git commit -s -q ${extra} -m "${msg}" &> /dev/null
+  set -e
+}
+
+
+#
+# Update the version in all relevant files
+#
+# 1=the new version (in the format of versionRegexSources)
+function updateVersions() {
+  local newVersion="$(stringTrim "${1}")"
+
+  #
+  # Adjust debug settings in Makefile.inc
+  #
+  local src="Makefile.inc"
+  sed -ri \
+   -e 's/^[[:space:]]*DEBUG[[:space:]]*?=.*$/DEBUG ?= 1/' \
+   -e 's/^[[:space:]]*NO_DEBUG_MESSAGES[[:space:]]*?=.*$/NO_DEBUG_MESSAGES ?= 0/' \
+   "${src}"
+  set +e
+  git add "${src}"
+  set -e
+
+
+  #
+  # Adjust version in Makefile
+  #
+  local src="Makefile"
+  sed -ri "s/^([[:space:]]*VERS[[:space:]]*=[[:space:]]*)${versionRegexSources}[[:space:]]*\$/\1${newVersion}/" "${src}"
+  set +e
+  git add "${src}"
+  set -e
+
+
+  #
+  # Adjust version in win32 gui installer
+  #
+  local src="gui/win32/Inst/installer.nsi"
+  local grepStr="^([[:space:]]*MessageBox[[:space:]]+MB_YESNO[[:space:]]+\".+?[[:space:]]+olsr.org[[:space:]]+)${versionRegexSources}([[:space:]]+.+?\"[[:space:]]+IDYES[[:space:]]+NoAbort)[[:space:]]*$"
+  local replStr="\1${newVersion}\6"
+  sed -ri "s/${grepStr}/${replStr}/" "${src}"
+  set +e
+  git add "${src}"
+  set -e
+
+
+  #
+  # Adjust version in win32 gui front-end
+  #
+  local src="gui/win32/Main/Frontend.rc"
+  local grepStr="^([[:space:]]*CAPTION[[:space:]]+\"olsr.org[[:space:]]+Switch[[:space:]]+)${versionRegexSources}([[:space:]]*\")[[:space:]]*\$"
+  local replStr="\1${newVersion}\6"
+  sed -ri "s/${grepStr}/${replStr}/" "${src}"
+  set +e
+  git add "${src}"
+  set -e
+}
+
+
+#
+# Sign a text file
+#
+# 1=the text file
+function signTextFile() {
+  local txtFile="$(stringTrim "${1}")"
+  gpg -u "$(git config --get user.name)" --clearsign "${txtFile}"
+  mv "${txtFile}.asc" "${txtFile}"
+}
+
+
+
+
+# ##############################################################################
+# # Main
+# ##############################################################################
+
+declare script="$(pathCanonicalPath "${0}")"
+declare scriptDir="$(dirname "${script}")"
+declare baseDir="$(dirname "${scriptDir}")"
+unset script
+
+
+#
+# Check the number of arguments
+#
+if [[ ${#} -ne 0 ]]; then
+  echo "* Need no arguments"
+  exit 1
+fi
+
+
+#
+# Go into the root of the checkout and check some key files
+#
+cd "${baseDir}"
+if [[ "$(gitIsGitDirectory ".")" == "0" ]] || \
+   [[ ! -r ./Makefile.inc ]] || \
+   [[ ! -r ./files/olsrd.conf.default.full ]]; then
+  echo "* You do not appear to be running the script from an olsrd git checkout"
+  exit 1
+fi
+
+
+#
+# Check that a signing key is configured
+#
+declare gpgKeyId="$(git config --get user.signingkey)"
+if [[ -z "${gpgKeyId}" ]]; then
+  cat >&1 << EOF
+* No signing key is setup for git, please run
+    git config --global user.signingkey <key ID>
+
+  You can get keys and IDs by running 'gpg --list-keys'
+EOF
+  exit 1
+fi
+
+
+#
+# Check that the signing key is present
+#
+set +e
+gpg --list-key "${gpgKeyId}" &> /dev/null
+declare -i gpgKeyIdPresentResult=${?}
+set -e
+if [[ ${gpgKeyIdPresentResult} -ne 0 ]]; then
+  cat >&1 << EOF
+* Your signing key with ID ${gpgKeyId} is not found, please run
+    git config --global user.signingkey <key ID>
+  to setup a valid key ID.
+
+  You can get keys and IDs by running 'gpg --list-keys'
+EOF
+  exit 1
+fi
+
+
+#
+# Get the previous release tag and check
+#
+set +e
+declare prevRelTagVersion="$(git describe --abbrev=0 | \
+                             grep -E "^${versionRegexReleaseTag}$")"
+set -e
+if [[ -z "${prevRelTagVersion}" ]]; then
+  echo "* Could not find the previous release tag"
+  exit 1
+fi
+declare prevTagVersionDigits="$(getVersionDigitsFromReleaseTag "${prevRelTagVersion}")"
+
+
+#
+# Get the current branch and check that we're on a release branch
+#
+declare relBranch="$(git rev-parse --abbrev-ref HEAD)"
+declare relBranch="$(stringTrim "${relBranch}")"
+if [[ -z "$(echo "${relBranch}" | grep -E "^${relBranchRegex}\$")" ]]; then
+  echo "* You are not on a release branch (format: release-0.6.4 or release-0.6.4.1)"
+  exit 1
+fi
+
+
+#
+# Get the version to release from the current branch
+#
+declare relBranchVersionDigits="$(echo "${relBranch}" | \
+                                  sed -r "s/${relBranchRegex}/\1/")"
+
+adjustBranchName
+
+declare relTagVersion="v${relBranchVersionDigits}"
+declare relBranchVersionDigitsNextMicro="$(getNextVersionDigitsMicro "${relBranchVersionDigits}")"
+declare relBranchVersionDigitsNextPatchLevel="$(getNextVersionDigitsPatchLevel "${relBranchVersionDigits}")"
+
+
+#
+# Check that the version is incrementing
+#
+checkVersionIncrementing "${prevTagVersionDigits}" "${relBranchVersionDigits}"
+
+
+#
+# Confirm the release
+#
+cat >&1 << EOF
+
+
+* All checks pass, ready to release ${relBranchVersionDigits}.
+
+  * The previous version found is: ${prevTagVersionDigits}
+    Note: If this is not the version you were expecting, then maybe that
+          version wasn't merged into this branch.
+  * Continuing will DESTROY any modifications you currently have in your tree!
+
+EOF
+read -p "Press [enter] to continue or CTRL-C to exit..."
+echo ""
+echo ""
+
+
+#
+# Clean up the checkout
+#
+echo "Cleaning the git checkout..."
+git clean -fdq
+git reset -q --hard
+
+
+#
+# Update the versions for release
+#
+echo "Updating the version to ${relBranchVersionDigits}..."
+updateVersions "${relBranchVersionDigits}"
+commitChanges 1 "Release ${relTagVersion}"
+
+
+
+#
+# Generate the changelog
+#
+echo "Generating the changelog..."
+declare src="CHANGELOG"
+declare dst="mktemp -q -p . -t "${src}.XXXXXXXXXX""
+cat > "${dst}" << EOF
+${relBranchVersionDigits} -------------------------------------------------------------------
+
+EOF
+git rev-list --pretty=short "${prevRelTagVersion}..HEAD" | \
+  git shortlog -w80 -- >> "${dst}"
+cat "${src}" >> "${dst}"
+mv "${dst}" "${src}"
+set +e
+git add "${src}"
+set -e
+commitChanges 1 "Release ${relTagVersion}"
+
+
+#
+# Tag the release
+#
+echo "Tagging ${relTagVersion}..."
+set +e
+git tag -d "${relTagVersion}" &> /dev/null
+set -e
+git tag -s -m "OLSRd release ${relBranchVersionDigits}" "${relTagVersion}"
+
+
+#
+# Update the version to the next release
+#
+echo "Updating the version to pre-${relBranchVersionDigitsNextPatchLevel}..."
+updateVersions "pre-${relBranchVersionDigitsNextPatchLevel}"
+commitChanges 1 "Update version after release of ${relTagVersion}"
+
+
+#
+# Update the version (on the master branch) to the next release
+#
+echo "Updating the version to pre-${relBranchVersionDigitsNextMicro} on the master branch..."
+git checkout -q master
+git clean -fdq
+git reset -q --hard
+updateVersions "pre-${relBranchVersionDigitsNextMicro}"
+commitChanges 0 "Update version after release of ${relTagVersion}"
+git checkout -q "${relBranch}"
+git clean -fdq
+git reset -q --hard
+
+
+#
+# Make the release tarballs
+#
+echo "Generating the release tarballs..."
+declare tarFile="${scriptDir}/olsrd-${relBranchVersionDigits}.tar"
+declare tarGzFile="${tarFile}.gz"
+declare tarBz2File="${tarFile}.bz2"
+git archive --format=tar --output="${tarFile}" "${relTagVersion}"
+gzip   -c "${tarFile}" > "${tarGzFile}"
+bzip2  -c "${tarFile}" > "${tarBz2File}"
+rm -f "${tarFile}"
+echo "Generating the release tarball checksums..."
+declare md5File="${scriptDir}/MD5SUM-${relBranchVersionDigits}"
+declare sha256File="${scriptDir}/SHA256SUM-${relBranchVersionDigits}"
+md5sum    "${tarGzFile}" "${tarBz2File}" > "${md5File}"
+sha256sum "${tarGzFile}" "${tarBz2File}" > "${sha256File}"
+echo "Signing the release tarball checksums..."
+signTextFile "${md5File}"
+signTextFile "${sha256File}"
+
+
+echo "Done."
+
+
+echo ""
+echo ""
+echo "==================="
+echo "=   Git Updates   ="
+echo "==================="
+echo "Branch : master"
+echo "Branch : ${relBranch}"
+echo "Tag    : ${relTagVersion}"
+echo ""
+echo ""
+
+
+echo "==================="
+echo "= Generated Files ="
+echo "==================="
+cat >&1 << EOF
+${tarGzFile}
+${tarGzFile}
+${md5File}
+${sha256File}"
+EOF
+echo ""
+echo ""
+
+
+echo "==================="
+echo "= Manual Actions  ="
+echo "==================="
+echo "1. Check that everything is in order. For example, run:"
+echo "     gitk master ${relBranch} ${relTagVersion} "
+echo "2. Push. For example, run:"
+echo "     git push origin master ${relBranch} ${relTagVersion}"
+echo "3. Upload the generated files to"
+echo "     http://www.olsr.org/releases/${relBranchVersionDigits}"
+echo "4. Add a release article on olsr.org."
+echo ""
+
diff --git a/scripts/mk-tarball.sh b/scripts/mk-tarball.sh
deleted file mode 100755 (executable)
index 6cd2fae..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-# 
-# The olsr.org Optimized Link-State Routing daemon(olsrd)
-# Copyright (c) 2008, Hannes Gredler (hannes@gredler.at)
-# All rights reserved.
-# 
-# Redistribution and use in source and binary forms, with or without 
-# modification, are permitted provided that the following conditions 
-# are met:
-# 
-# * Redistributions of source code must retain the above copyright 
-#   notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright 
-#   notice, this list of conditions and the following disclaimer in 
-#   the documentation and/or other materials provided with the 
-#   distribution.
-# * Neither the name of olsr.org, olsrd nor the names of its 
-#   contributors may be used to endorse or promote products derived 
-#   from this software without specific prior written permission.
-# 
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
-# POSSIBILITY OF SUCH DAMAGE.
-# 
-# Visit http://www.olsr.org for more information.
-# 
-# If you find this software useful feel free to make a donation
-# to the project. For more information see the website or contact
-# the copyright holders.
-# 
-#
-# mk-tarball.sh 
-# Create a release tarball based on the current VERS variable in the Makefile.
-#
-
-# first determine the tarball name
-NAME=`grep -E "^VERS" ../Makefile | sed 's/^VERS..../olsrd-/;s/ *$//'`
-#empty the directory in case it exists already
-rm -rf /tmp/$NAME
-mkdir /tmp/$NAME
-# clean stuff up first
-cd ..;make uberclean
-# sync the stuff to a working directory
-rsync -a . /tmp/$NAME/ --exclude=.project --exclude=.cproject --exclude=.settings --exclude=.hg* --exclude=.git* --exclude=*.rej --exclude=*.orig --delete
-cd /tmp/
-echo "### creating /tmp/$NAME.tar.gz"
-tar -czf /tmp/$NAME.tar.gz $NAME
-md5sum /tmp/$NAME.tar.gz
-echo "### creating /tmp/$NAME.tar.bz2"
-tar -cjf /tmp/$NAME.tar.bz2 $NAME
-md5sum /tmp/$NAME.tar.bz2
-#clean up
-rm -rf /tmp/$NAME