aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdebian/roll-tarballs.sh142
1 files changed, 142 insertions, 0 deletions
diff --git a/debian/roll-tarballs.sh b/debian/roll-tarballs.sh
new file mode 100755
index 000000000..b7f0c3e34
--- /dev/null
+++ b/debian/roll-tarballs.sh
@@ -0,0 +1,142 @@
+#!/bin/bash
+
+# Copyright (C) 2011 by Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+# Copyright (C) 2012 by Reinhard Tartler <siretart@tauware.de>
+#
+# This is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Thanks to Jonas Smedegaard <dr@jones.dk> for inspiration...
+
+# Formatting/cleanups by siretart in December 2012
+
+set -e
+
+usage() {
+ echo "To be called at the project root of an nx-libs checkout"
+ echo "usage: $(basename "$0") {<release-version>,HEAD} {server|client}"
+ exit 1
+}
+
+PROJECT="nx-libs"
+
+test -d .git || usage
+test -f debian/Makefile.nx-libs || usage
+RELEASE="$1"
+test -n "${RELEASE}" || usage
+CHECKOUT="$2"
+test -n "$CHECKOUT" || usage
+
+if [ "x$CHECKOUT" = "xserver" ] || [ "x$CHECKOUT" = "xfull" ]; then
+ MODE="full"
+ CHECKOUT="redist-server/${RELEASE}"
+ RELEASE_SUFFIX='-full'
+elif [ "x$CHECKOUT" = "xclient" ] || [ "x$CHECKOUT" = "xlite" ]; then
+ MODE="lite"
+ CHECKOUT="redist-client/${RELEASE}"
+ RELEASE_SUFFIX='-lite'
+else
+ usage
+fi
+
+if [ x"$RELEASE" == "xHEAD" ]; then
+ CHECKOUT=HEAD
+fi
+
+if ! git rev-parse --verify -q "$CHECKOUT" >/dev/null; then
+ echo " '${RELEASE}' is not a valid release number because there is no git tag named $CHECKOUT."
+ echo " Please specify one of the following releases:"
+ echo "HEAD"
+ git tag -l | grep ^redist | cut -f2 -d/ | sort -u
+ exit 1
+fi
+
+TARGETDIR=".."
+
+MANIFEST="$(mktemp)"
+TEMP_DIR="$(mktemp -d)"
+
+trap "rm -f \"${MANIFEST}\"; rm -rf \"${TEMP_DIR}\"" 0
+
+# create local copy of Git project at temp location
+git archive --format=tar ${CHECKOUT} --prefix=${PROJECT}-${RELEASE}/ | ( cd $TEMP_DIR; tar xf - )
+
+echo "Created tarball for $CHECKOUT"
+
+cd "$TEMP_DIR/${PROJECT}-${RELEASE}/"
+
+mkdir -p doc/applied-patches
+
+# prepare patches for lite and full tarball
+if [ "x$MODE" = "xfull" ]; then
+ find debian/patches | sort | egrep "(debian/patches/[0-9]+_.*\.(full|full\+lite)\.patch)" | while read file
+ do
+ cp -v $file doc/applied-patches
+ echo ${file##*/} >> doc/applied-patches/series
+ done
+else
+ rm -Rf "nxcompshad"*
+ rm -Rf "nxcompext"*
+ rm -Rf "nx-X11"*
+ find debian/patches | sort | egrep "(debian/patches/[0-9]+_.*\.full\+lite\.patch)" | while read file
+ do
+ cp -v $file doc/applied-patches
+ echo ${file##*/} >> doc/applied-patches/series
+ done
+fi
+
+# apply all patches shipped in debian/patches and create a copy of them that we ship with the tarball
+if [ -s "doc/applied-patches/series" ]; then
+ QUILT_PATCHES=doc/applied-patches quilt --quiltrc /dev/null push -a -q
+else
+ echo "No patches applied at all. Very old release?"
+fi
+
+# very old release did not add any README
+for f in $(ls README* 2>/dev/null); do
+ mv -v $f doc/;
+done
+mv -v debian/changelog doc/changelog
+
+# copy the top-level makefile if no quilt patch created it before
+test -f Makefile || test -f debian/Makefile.nx-libs && cp -v debian/Makefile.nx-libs Makefile
+
+# remove folders that we do not want to roll into the tarball
+rm -Rf ".pc/"
+rm -Rf "debian/"
+
+# remove files, that we do not want in the tarballs (build cruft)
+rm -Rf nx*/configure nx*/autom4te.cache*
+
+cd $OLDPWD
+
+# create target location for tarball
+mkdir -p "$TARGETDIR/_releases_/source/${PROJECT}/"
+
+# roll the ball...
+cd "$TEMP_DIR"
+find "${PROJECT}-${RELEASE}" -type f | sort > "$MANIFEST"
+cd $OLDPWD
+
+tar c -C "$TEMP_DIR" \
+ --owner 0 \
+ --group 0 \
+ --numeric-owner \
+ --no-recursion \
+ --files-from "$MANIFEST" \
+ --gzip \
+ > "$TARGETDIR/_releases_/source/${PROJECT}/${PROJECT}-${RELEASE}${RELEASE_SUFFIX}.tar.gz" \
+
+echo "$TARGETDIR/_releases_/source/${PROJECT}/${PROJECT}-${RELEASE}${RELEASE_SUFFIX}.tar.gz is ready"