summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
l---------bin/build+upload-all-packages1
l---------bin/build+upload-package1
-rwxr-xr-xbin/build-all-packages59
-rwxr-xr-xbin/build-package278
-rwxr-xr-xbin/gitcreate26
-rwxr-xr-xbin/gitrevno28
-rwxr-xr-xbin/pkgneedsbuild47
-rwxr-xr-xbin/tarballrelease43
-rwxr-xr-xbin/updatebuildmain34
l---------bin/upload-all-packages1
l---------bin/upload-package1
-rw-r--r--home/.buildscripts/itzks.conf18
-rw-r--r--home/.buildscripts/nwt.conf21
-rw-r--r--home/.buildscripts/x2go.conf20
-rw-r--r--home/.dupload.conf.itzks37
-rw-r--r--home/.dupload.conf.nwt37
-rw-r--r--home/.dupload.conf.x2go37
-rw-r--r--home/.pbuilderrc7
18 files changed, 693 insertions, 3 deletions
diff --git a/bin/build+upload-all-packages b/bin/build+upload-all-packages
new file mode 120000
index 0000000..b8c12b0
--- /dev/null
+++ b/bin/build+upload-all-packages
@@ -0,0 +1 @@
+build-all-packages \ No newline at end of file
diff --git a/bin/build+upload-package b/bin/build+upload-package
new file mode 120000
index 0000000..2b48fdc
--- /dev/null
+++ b/bin/build+upload-package
@@ -0,0 +1 @@
+build-package \ No newline at end of file
diff --git a/bin/build-all-packages b/bin/build-all-packages
new file mode 100755
index 0000000..86e72be
--- /dev/null
+++ b/bin/build-all-packages
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+# Copyright (C) 2011 by Mike Gabriel <mike.gabriel@das-netzwerkteam.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.
+
+COMPONENT_MAIN="main"
+COMPONENT_NIGHTLY="nightly"
+
+LIB_PACKAGES_NIGHTLY=
+LIB_PACKAGES_MAIN=
+APP_PACKAGES_NIGHTLY=
+APP_PACKAGES_MAIN=
+
+PREFIX=$(echo `basename $0` | cut -d"-" -f1)
+test -f ~/.buildscripts/$PREFIX.conf && . ~/.buildscripts/$PREFIX.conf || { echo "$0 has no valid context prefix..."; exit -1; }
+
+test -z $1 && { echo "usage: $(basename $0) [{$COMPONENT_MAIN,$COMPONENT_NIGHTLY}]"; exit -1; }
+
+COMPONENT=${1:-""}
+
+# build the newest code... (nightly-builds)
+[ "x$COMPONENT" = "x$COMPONENT_NIGHTLY" ] || [ -z $COMPONENT ] && {
+ echo -e $LIB_PACKAGES_NIGHTLY $APP_PACKAGES_NIGHTLY | while read pkg comp checkout; do
+ if [ "x$(basename $0)" = "x$PREFIX-build-all-packages" ]; then
+ $PREFIX-build-package $pkg $comp $checkout
+ elif [ "x$(basename $0)" = "x$PREFIX-upload-all-packages" ]; then
+ $PREFIX-upload-package $pkg $comp $checkout
+ elif [ "x$(basename $0)" = "x$PREFIX-build+upload-all-packages" ]; then
+ $PREFIX-build-package $pkg $comp $checkout && $PREFIX-upload-package $pkg $comp $checkout
+ fi
+ done
+}
+
+# build all packages tagged as build-main
+[ "x$COMPONENT" = "x$COMPONENT_MAIN" ] || [ -z $COMPONENT ] && {
+ echo -e $LIB_PACKAGES_MAIN $APP_PACKAGES_MAIN | while read pkg comp checkout; do
+ if [ "x$(basename $0)" = "x$PREFIX-build-all-packages" ]; then
+ $PREFIX-build-package $pkg $comp $checkout
+ elif [ "x$(basename $0)" = "x$PREFIX-upload-all-packages" ]; then
+ $PREFIX-upload-package $pkg $comp $checkout
+ elif [ "x$(basename $0)" = "x$PREFIX-build+upload-all-packages" ]; then
+ $PREFIX-build-package $pkg $comp $checkout && $PREFIX-upload-package $pkg $comp $checkout
+ fi
+ done
+}
diff --git a/bin/build-package b/bin/build-package
new file mode 100755
index 0000000..8a1f94f
--- /dev/null
+++ b/bin/build-package
@@ -0,0 +1,278 @@
+#!/bin/bash
+
+# Copyright (C) 2011 by Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+#
+# This programme 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 programme 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.
+
+GIT_USER="gituser"
+GIT_HOSTNAME="git.mydomain.org"
+
+DEBEMAIL="firstname.lastname@mydomain.org"
+DEBFULLNAME="Firstname Lastname"
+GPG_KEY=
+DISTS_SUPPORTED="debian ubuntu"
+BUILDS_FOR="\
+debian: squeeze wheezy sid\n\
+ubuntu: lucid precise\n\
+"
+
+COMPONENT_MAIN="main"
+COMPONENT_NIGHTLY="nightly"
+REPOS_SERVER="packages.mydomain.org"
+PACKAGES_WITHOUT_OTHERMIRROR="keyring"
+
+test -z $1 && { echo "usage: $(basename $0) [<subpath>/]<git-project> {main,main/<codename>,nightly,nightly/<codename>} [<git-checkout>]"; exit -1; }
+
+PREFIX=$(echo `basename $0` | cut -d"-" -f1)
+test -f ~/.buildscripts/$PREFIX.conf && . ~/.buildscripts/$PREFIX.conf || { echo "$0 has no valid context prefix..."; exit -1; }
+
+set -ex
+
+set_vars() {
+ USE_SUDO="yes"
+ PDEBUILD="pdebuild --pbuilder qemubuilder"
+ TEMP_BASE="$HOME/tmp/"
+ mkdir -p "$TEMP_BASE"
+ chmod 2770 "$TEMP_BASE"
+
+ # first argv is the name of the Git project
+ PROJECT_PATH="$1"
+ PROJECT_PATH=${PROJECT_PATH/%.git/}
+ PROJECT="$(basename $PROJECT_PATH)"
+
+ # grab repository component area from command line (2nd argv) or guess it
+ ARGV2_COMPONENT="$(echo "$2/" | cut -d"/" -f1)"
+ ARGV2_CODENAME="$(echo "$2/" | cut -d"/" -f2)"
+ COMPONENT="${ARGV2_COMPONENT:-${COMPONENT:-$COMPONENT_NIGHTLY}}"
+ CODENAMES="${ARGV2_CODENAME:-${CODENAMES}}"
+ [ -n "$ARGV2_CODENAME" ] && FORCE_BUILD=0 || FORCE_BUILD=-1
+ if [ "x$COMPONENT" = "x$COMPONENT_MAIN" ]; then
+ CHECKOUT="${3:-build-main}"
+ elif [ "x$COMPONENT" = "x$COMPONENT_NIGHTLY" ]; then
+ CHECKOUT="${3:-master}"
+ DATE="~${DATE:-$(date +%Y%m%d)}"
+ else
+ echo "error: no such package component area for this Git project. Aborting..."
+ exit -1
+ fi
+ # the DATE might be given as ,,today'' from the command line
+ [ "x$DATE" = "xtoday" ] && DATE="~$(date +%Y%m%d)"
+
+ # setting paths
+ PROJECT_DIR="$HOME/build/$COMPONENT/$PROJECT"
+ PKGDIST="$HOME/pkg-dist/$COMPONENT/$PROJECT"
+
+ # build for other architectures than amd64/i386
+ EXTRA_ARCHS="${EXTRA_ARCHS:-}"
+ EXTRA_ARCHS_ONLY="${EXTRA_ARCHS_ONLY:-}"
+
+ # creating paths
+ mkdir -p "$TEMP_BASE"
+ mkdir -p "$PROJECT_DIR"
+ mkdir -p "$PKGDIST"
+
+ return 0
+}
+
+prepare_workspace() {
+ # in any case remove the BUILDS_FOR file
+ rm -f "$PROJECT_DIR/BUILDS_FOR"
+
+ # make sure our local working copy is up to date...
+
+ if [ -d "$PROJECT_DIR/.git" ]; then
+ cd "$PROJECT_DIR" && git reset --hard
+ git checkout --force $CHECKOUT || git checkout --force -b $CHECKOUT
+ git pull origin $CHECKOUT
+ # and again, get the $CHECKOUT refspec in pure state
+ git reset --hard
+ else
+ cd "$(dirname $PROJECT_DIR)"
+ git clone git://$GIT_HOSTNAME/$PROJECT_PATH.git
+ cd "$PROJECT"
+ git checkout --force $CHECKOUT || git checkout --force -b $CHECKOUT;
+ fi
+ cd "$PROJECT_DIR"
+
+ # by default we build for all current debian versions
+ test -f BUILDS_FOR || echo -e "$BUILDS_FOR" > BUILDS_FOR
+ return 0
+}
+
+clear_pkgdist() {
+ # pkgdist directory cleanup
+ cat "$PROJECT_DIR/BUILDS_FOR" | egrep -v '(^$|^#.*$)' | while read line; do
+ l_DIST="$(echo ${line/: /:} | cut -d":" -f1 | tr [:upper:] [:lower:])"
+ l_CODENAMES="${CODENAMES:-$(echo ${line/: /:} | cut -d":" -f2- | tr [:upper:] [:lower:])}"
+ echo "$DISTS_SUPPORTED" | grep $l_DIST >/dev/null && {
+ for l_CODENAME in $l_CODENAMES; do
+
+ # in case we build a special CODENAME (squeeze, wheezy, lucid, ...) do skip
+ # the wrong distribution here...
+ test -z $CODENAMES || echo $line | grep $CODENAMES || break
+
+ if [ "x$EXTRA_ARCHS_ONLY" = "x" ]; then
+ for l_ARCH in amd64 i386; do
+ mkdir -p "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_*.changes"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_*.upload"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_*.build"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_*.dsc"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_*.tar.gz"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/*.deb"
+ done
+ fi
+ for l_EXTRA_ARCH in $EXTRA_ARCHS; do
+ mkdir -p "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_*.changes"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_*.upload"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_*.build"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_*.dsc"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_*.tar.gz"
+ rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/*.deb"
+ done
+ done
+ }
+ done
+ return 0
+}
+
+build_packages() {
+ # use pbuilder for building all variants of this package
+ cat "$PROJECT_DIR/BUILDS_FOR" | egrep -v '(^$|^#.*$)' | while read line; do
+ l_DIST="$(echo ${line/: /:} | cut -d":" -f1 | tr [:upper:] [:lower:])"
+ l_CODENAMES="${CODENAMES:-$(echo ${line/: /:} | cut -d":" -f2- | tr [:upper:] [:lower:])}"
+ echo "$DISTS_SUPPORTED" | grep $l_DIST >/dev/null && {
+ for l_CODENAME in $l_CODENAMES; do
+
+ # in case we build a special CODENAME (squeeze, wheezy, lucid, ...) do skip
+ # the wrong distribution here...
+ test -z $CODENAMES || echo $line | grep $CODENAMES || break
+
+ TEMP_DIR="$(mktemp -d --tmpdir=$TEMP_BASE)"
+ mkdir -p "$TEMP_DIR/$PROJECT"
+ chmod 2770 "$TEMP_DIR" -Rf
+
+ cd "$PROJECT_DIR"
+ git clone --local "$PROJECT_DIR" "$TEMP_DIR/$PROJECT/"
+ cd "$TEMP_DIR/$PROJECT"
+ git checkout $CHECKOUT || git checkout master
+ GITREV=$(gitrevno)
+ # we always build native packages for our repos
+ test -f debian/source/format && cat debian/source/format | egrep '^3.0.*\(quilt\)$' >/dev/null && {
+ echo "3.0 (native)" > debian/source/format
+ }
+ # translate the version name for Debian releases
+ [ "x$l_CODENAME" = "xsid" ] && VERSION=unstable
+ [ "x$l_CODENAME" = "xwheezy" ] && VERSION=testing
+ [ "x$l_CODENAME" = "xsqueeze" ] && VERSION=stable
+ [ "x$l_CODENAME" = "xlenny" ] && VERSION=oldstable
+
+ # modify the section for non-main package builds
+ [ "x$COMPONENT" != "xmain" ] || {
+ mv debian/control debian/control.tmp
+ cat debian/control.tmp | sed "s#Section:[\ ]*\(.*\)#Section: $COMPONENT/\1#g" > debian/control
+ }
+
+ # modify changelog for this build
+ dch --distribution $VERSION --force-distribution -l "+$l_CODENAME~$COMPONENT$DATE~$GITREV~build" "Auto-built $l_DIST $l_CODENAME package for $REPOS_SERVER repository."
+ mkdir -p $PKGDIST/$l_DIST/$l_CODENAME/{amd64,i386}
+ OTHERMIRROR=""
+ echo $PACKAGE_WITHOUT_OTHERMIRROR | grep $PROJECT >/dev/null || OTHERMIRROR="deb http://$REPOS_SERVER/$l_DIST $l_CODENAME $COMPONENT"
+
+ [ "x$USE_SUDO" != "xyes" ] && {
+ [ "x$EXTRA_ARCHS_ONLY" = "x" ] && {
+ cat debian/control | egrep 'Architecture.*(all|any|amd64)' >/dev/null && {
+ DIST=$l_DIST CODENAME=$l_CODENAME ARCH=amd64 $PDEBUILD --auto-debsign --debsign-k $GPG_KEY --buildresult "$PKGDIST/$l_DIST/$l_CODENAME/amd64" 0<&-
+ }
+ cat debian/control | egrep 'Architecture.*(any|i386)' >/dev/null && {
+ DIST=$l_DIST CODENAME=$l_CODENAME ARCH=i386 $PDEBUILD --auto-debsign --debsign-k $GPG_KEY --buildresult "$PKGDIST/$l_DIST/$l_CODENAME/i386" -- --binary-arch 0<&-
+ }
+ }
+ for extra_arch in $EXTRA_ARCHS; do
+ mkdir -p "$PKGDIST/$l_DIST/$l_CODENAME/$extra_arch"
+ cat debian/control | egrep "Architecture.*(any|$extra_arch)" >/dev/null && {
+ DIST=$l_DIST CODENAME=$l_CODENAME ARCH=$extra_arch $PDEBUILD --auto-debsign --debsign-k $GPG_KEY --buildresult "$PKGDIST/$l_DIST/$l_CODENAME/$extra_arch" -- --binary-arch 0<&-
+ }
+ done
+ }
+ [ "x$USE_SUDO" = "xyes" ] && {
+ [ "x$EXTRA_ARCHS_ONLY" = "x" ] && {
+ cat debian/control | egrep 'Architecture.*(all|any|amd64)' >/dev/null && {
+ sudo DIST=$l_DIST CODENAME=$l_CODENAME ARCH=amd64 OTHERMIRROR="$OTHERMIRROR" $PDEBUILD --auto-debsign --debsign-k $GPG_KEY --buildresult $PKGDIST/$l_DIST/$l_CODENAME/amd64 0<&-
+ }
+ cat debian/control | egrep 'Architecture.*(any|i386)' >/dev/null && {
+ sudo DIST=$l_DIST CODENAME=$l_CODENAME ARCH=i386 OTHERMIRROR="$OTHERMIRROR" $PDEBUILD --auto-debsign --debsign-k $GPG_KEY --buildresult $PKGDIST/$l_DIST/$l_CODENAME/i386 -- --binary-arch 0<&-
+ }
+ }
+ for extra_arch in $EXTRA_ARCHS; do
+ mkdir -p "$PKGDIST/$l_DIST/$l_CODENAME/$extra_arch"
+ cat debian/control | egrep "Architecture.*(any|$extra_arch)" >/dev/null && {
+ sudo DIST=$l_DIST CODENAME=$l_CODENAME ARCH=$extra_arch OTHERMIRROR="$OTHERMIRROR" $PDEBUILD --auto-debsign --debsign-k $GPG_KEY --buildresult "$PKGDIST/$l_DIST/$l_CODENAME/$extra_arch" -- --binary-arch 0<&-
+ }
+ done
+ }
+ rm -Rf "$TEMP_DIR"
+ done
+ }
+ done
+ return 0
+}
+
+upload_packages() {
+ # dupload the new packages to the reprepro repository
+ cd "$PKGDIST"
+ cat "$PROJECT_DIR/BUILDS_FOR" | egrep -v '(^$|^#.*$)' | while read line; do
+ l_DIST=$(echo ${line/: /:} | cut -d":" -f1 | tr [:upper:] [:lower:])
+ l_CODENAMES=${CODENAMES:-$(echo ${line/: /:} | cut -d":" -f2- | tr [:upper:] [:lower:])}
+ for l_CODENAME in $l_CODENAMES; do
+
+ # in case we build a special CODENAME (squeeze, wheezy, lucid, ...) do skip
+ # the wrong distribution here...
+ test -z $CODENAMES || echo $line | grep $CODENAMES || break
+
+ if [ "x$EXTRA_ARCHS_ONLY" = "x" ]; then
+ for l_ARCH in amd64 i386; do
+ cd "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH"
+ ls "$PROJECT_*.changes" &>/dev/null && dupload -c ~/.dupload.conf.$PREFIX --to $PREFIX-$l_DIST-$l_CODENAME "$PROJECT_*.changes"
+ cd -
+ done
+ fi
+ for l_EXTRA_ARCH in $EXTRA_ARCHS; do
+ cd "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH"
+ ls "$PROJECT_*.changes" &>/dev/null && dupload -c ~/.dupload.conf.$PREFIX --to $PREFIX-$l_DIST-$l_CODENAME "$PROJECT_*.changes"
+ cd -
+ done
+ done
+ done
+ cd -
+ return 0
+}
+
+### MAIN ###
+set_vars $@ && {
+ if [ "x$(basename $0)" = "x$PREFIX-build-package" ] || [ "x$(basename $0)" = "x$PREFIX-build+upload-package" ]; then
+ cd $PROJECT_DIR && pkgneedsbuild $CHECKOUT || [ "$FORCE_BUILD" -eq 0 ] && {
+ prepare_workspace && {
+ clear_pkgdist
+ build_packages
+ }
+ }
+ fi
+ if [ "x$(basename $0)" = "x$PREFIX-upload-package" ] || [ "x$(basename $0)" = "x$PREFIX-build+upload-package" ]; then
+ upload_packages
+ fi
+}
diff --git a/bin/gitcreate b/bin/gitcreate
new file mode 100755
index 0000000..3d93faf
--- /dev/null
+++ b/bin/gitcreate
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+set -xe
+
+GIT_USER=
+GIT_HOSTNAME=
+GIT_SSH_PORT=22
+
+PREFIX=$(echo `basename $0` | cut -d"-" -f1)
+. ~/.buildscripts/$PREFIX.conf
+
+
+for pkg in "$@"; do
+ subdir=$(dirname $pkg)/
+ pkg=$(basename $pkg)
+ ssh -l$GIT_USER $GIT_HOSTNAME "cd ~/git && ./setup-repository ${subdir}${pkg} '$pkg upstream project'"
+ ssh -l$GIT_USER $GIT_HOSTNAME "cd ~/git && ./update-repository-posixacls ${subdir}${pkg}"
+ test -d "$pkg" && cd "$pkg"
+ echo "$pkg: MASTER BRANCH" && git push ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg} master
+ git branch | grep upstream &>/dev/null && echo "$pkg: RELEASE BRANCH" && git push ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg} upstream
+ git branch | grep pristine-tar &>/dev/null && echo "$pkg: PRISTINE-TAR" && git push ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg} pristine-tar
+ echo "$pkg: PUSHING TAGS" && git push --tags ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg}
+ git remote | grep origin >/dev/null || git remote add origin ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg}
+ git remote add ${PREFIX}-public ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg}
+ cd ..
+done
diff --git a/bin/gitrevno b/bin/gitrevno
new file mode 100755
index 0000000..2f121ff
--- /dev/null
+++ b/bin/gitrevno
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+
+# Copyright (C) 2010-2011 by Mike Gabriel <mike.gabriel@das-netzwerkteam.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
+
+import subprocess
+_proc = subprocess.Popen('git log --no-color --date=iso',
+ shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+try:
+ GIT_REVISION_DATE = str(len([ x for x in _proc.communicate()[0].splitlines() if x.startswith('Date:')]))
+except IndexError:
+ GIT_REVISION_DATE = 'unknown'
+
+print GIT_REVISION_DATE
diff --git a/bin/pkgneedsbuild b/bin/pkgneedsbuild
new file mode 100755
index 0000000..2a192eb
--- /dev/null
+++ b/bin/pkgneedsbuild
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+# Copyright (C) 2010-2011 by Mike Gabriel <mike.gabriel@das-netzwerkteam.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
+
+set -xe
+
+CHECKOUT=${1:-master}
+
+[ -d .git ] && {
+
+ TIMESTAMP=$(date +%s)
+ CURRENT_BRANCH=$(git branch | grep "*" | awk '{print $2}')
+
+ # switch to branch given as $CHECKOUT, if it does not exist locally, create it...
+ git checkout $CHECKOUT &>/dev/null || git checkout -b $CHECKOUT >/dev/null
+
+ # switch to a tmp branch...
+ git checkout -b tmp-$TIMESTAMP &>/dev/null
+
+ # pull $CHECKOUT from origin into the tmp branch
+ LANG=en_US.UTF-8 git pull origin $CHECKOUT 2>/dev/null | egrep "^Already up-to-date.$" &>/dev/null && {
+ # drop the tmp branch
+ git checkout $CURRENT_BRANCH &>/dev/null
+ git branch -D tmp-$TIMESTAMP >/dev/null
+ exit 1
+ } || {
+ # drop the tmp branch
+ git checkout $CURRENT_BRANCH &>/dev/null
+ git branch -D tmp-$TIMESTAMP >/dev/null
+ exit 0
+ }
+} || exit 0
diff --git a/bin/tarballrelease b/bin/tarballrelease
new file mode 100755
index 0000000..1b58077
--- /dev/null
+++ b/bin/tarballrelease
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# Copyright (C) 2011 by Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+#
+# This is free software; you can redistribute it and/or modify
+# it under the tBerms 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...
+
+set -e
+
+RELEASE="$1"
+test -n "$RELEASE" || { echo "usage: $(basename "$0") <release-version> [<checkout>]"; exit 1; }
+
+CHECKOUT="${2:-master}"
+
+PROJECT="$(basename $PWD)"
+TARGETDIR=".."
+
+MANIFEST="$(mktemp)"
+TEMP_DIR="$(mktemp -d)"
+
+echo $MANIFEST
+
+trap "rm -f \"${MANIFEST}\"; rm -rf \"${TEMP_DIR}\"" 0
+git clone . "$TEMP_DIR/${PROJECT}_$RELEASE"
+( set -e; cd "$TEMP_DIR/${PROJECT}_$RELEASE/" && git checkout ${CHECKOUT} 2>/dev/null || true )
+( set -e; cd "$TEMP_DIR" && rm -Rf "${PROJECT}_$RELEASE/.git"* )
+( set -e; cd "$TEMP_DIR" && find "${PROJECT}_$RELEASE" -type f | sed 's/^\.*\/*//' | sort > "$MANIFEST" )
+mkdir -p "$TARGETDIR/_releases_/source/${PROJECT}/"
+tar c -C "$TEMP_DIR" --owner 0 --group 0 --numeric-owner --no-recursion --files-from "$MANIFEST" | gzip -n > "$TARGETDIR/_releases_/source/${PROJECT}/${PROJECT}_$RELEASE.tar.gz"
diff --git a/bin/updatebuildmain b/bin/updatebuildmain
new file mode 100755
index 0000000..f4f4917
--- /dev/null
+++ b/bin/updatebuildmain
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Copyright (C) 2010-2011 by Mike Gabriel <mike.gabriel@das-netzwerkteam.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
+
+set -e
+
+GITPROJECT=$(basename $(pwd))
+REF=$1
+
+# we need to be within a working copy (base folder) and we need a <REF>!!!
+test -z $1 || test -d ./.git || {
+ echo "usage: $(basename $0) <REF>"
+ echo "Call this command from within the base folder of a Git project's working copy..."
+ exit -1
+}
+
+# update the build-main branch with our newest blessed reference
+git branch build-main &>/dev/null || true
+git push origin $REF:build-main
diff --git a/bin/upload-all-packages b/bin/upload-all-packages
new file mode 120000
index 0000000..b8c12b0
--- /dev/null
+++ b/bin/upload-all-packages
@@ -0,0 +1 @@
+build-all-packages \ No newline at end of file
diff --git a/bin/upload-package b/bin/upload-package
new file mode 120000
index 0000000..2b48fdc
--- /dev/null
+++ b/bin/upload-package
@@ -0,0 +1 @@
+build-package \ No newline at end of file
diff --git a/home/.buildscripts/itzks.conf b/home/.buildscripts/itzks.conf
new file mode 100644
index 0000000..f1df69d
--- /dev/null
+++ b/home/.buildscripts/itzks.conf
@@ -0,0 +1,18 @@
+# buildscripts configuration for ITZKS build server
+GIT_USER=itzks
+GIT_HOSTNAME=code.it-zukunft-schule.de
+GIT_SSH_PORT=32032
+
+DEBEMAIL=itzks-packages@it-zukunft-schule.de
+DEBFULLNAME="ITZKS Packages"
+GPG_KEY="E41B37C658842183"
+
+DISTS_SUPPORTED="debian ubuntu"
+BUILDS_FOR="\
+debian: lenny squeeze wheezy sid\n\
+ubuntu: lucid precise"
+
+COMPONENT_MAIN="main"
+COMPONENT_NIGHTLY="nightly"
+REPOS_SERVER="packages.it-zukunft-schule.de"
+PACKAGE_WITHOUT_OTHERMIRROR="itzks-keyring"
diff --git a/home/.buildscripts/nwt.conf b/home/.buildscripts/nwt.conf
new file mode 100644
index 0000000..845377d
--- /dev/null
+++ b/home/.buildscripts/nwt.conf
@@ -0,0 +1,21 @@
+# buildscripts configuration for NWT build server
+
+GIT_USER=nwt
+GIT_HOSTNAME=code.das-netzwerkteam.de
+GIT_SSH_PORT=32032
+
+DEBEMAIL=debian@das-netzwerkteam.de
+DEBFULLNAME="NWT Packages"
+GPG_KEY="4DC41CF116990FF8"
+DISTS_SUPPORTED="debian ubuntu"
+BUILDS_FOR="\
+debian: lenny squeeze wheezy sid\n\
+ubuntu: lucid precise"
+
+COMPONENT_MAIN="main"
+COMPONENT_NIGHTLY="nightly"
+REPOS_SERVER="packages.das-netzwerkteam.de"
+PACKAGE_WITHOUT_OTHERMIRROR="nwt-keyring"
+
+
+
diff --git a/home/.buildscripts/x2go.conf b/home/.buildscripts/x2go.conf
new file mode 100644
index 0000000..e8e9dcd
--- /dev/null
+++ b/home/.buildscripts/x2go.conf
@@ -0,0 +1,20 @@
+# buildscripts configuration for X2Go build server
+
+GIT_USER=x2go
+GIT_HOSTNAME=code.x2go.org
+GIT_SSH_PORT=32032
+
+DEBEMAIL=git-admin@x2go.org
+DEBFULLNAME="X2go Git Administrator"
+GPG_KEY="F4A7678C9C6B0B2B"
+DISTS_SUPPORTED="debian"
+BUILDS_FOR="\
+debian: squeeze wheezy sid"
+
+COMPONENT_MAIN="main"
+COMPONENT_NIGHTLY="heuler"
+REPOS_SERVER="packages.x2go.org"
+PACKAGE_WITHOUT_OTHERMIRROR="x2go-keyring"
+
+
+
diff --git a/home/.dupload.conf.itzks b/home/.dupload.conf.itzks
new file mode 100644
index 0000000..7e25854
--- /dev/null
+++ b/home/.dupload.conf.itzks
@@ -0,0 +1,37 @@
+package config;
+
+### itzks/DEBIAN
+$cfg{"itzks-debian-sid"} = {
+ fqdn => "packages.it-zukunft-schule.de",
+ login => "itzks-admin",
+ method => "scpb",
+ incoming => "/srv/sites/it-zukunft-schule.de/packages/debian/incoming/sid",
+ queuedir => "/srv/sites/it-zukunft-schule.de/packages/debian/upload/sid",
+ dinstall_runs => 1,
+};
+$cfg{"itzks-debian-wheezy"} = {
+ fqdn => "packages.it-zukunft-schule.de",
+ login => "itzks-admin",
+ method => "scpb",
+ incoming => "/srv/sites/it-zukunft-schule.de/packages/debian/incoming/wheezy",
+ queuedir => "/srv/sites/it-zukunft-schule.de/packages/debian/upload/wheezy",
+ dinstall_runs => 1,
+};
+$cfg{"itzks-debian-squeeze"} = {
+ fqdn => "packages.it-zukunft-schule.de",
+ login => "itzks-admin",
+ method => "scpb",
+ incoming => "/srv/sites/it-zukunft-schule.de/packages/debian/incoming/squeeze",
+ queuedir => "/srv/sites/it-zukunft-schule.de/packages/debian/upload/squeeze",
+ dinstall_runs => 1,
+};
+$cfg{"itzks-debian-lenny"} = {
+ fqdn => "packages.it-zukunft-schule.de",
+ login => "itzks-admin",
+ method => "scpb",
+ incoming => "/srv/sites/it-zukunft-schule.de/packages/debian/incoming/lenny",
+ queuedir => "/srv/sites/it-zukunft-schule.de/packages/debian/upload/lenny",
+ dinstall_runs => 1,
+};
+
+1;
diff --git a/home/.dupload.conf.nwt b/home/.dupload.conf.nwt
new file mode 100644
index 0000000..d4ba622
--- /dev/null
+++ b/home/.dupload.conf.nwt
@@ -0,0 +1,37 @@
+package config;
+
+### nwt/DEBIAN
+$cfg{"nwt-debian-sid"} = {
+ fqdn => "packages.das-netzwerkteam.de",
+ login => "nwt-admin",
+ method => "scpb",
+ incoming => "/srv/sites/das-netzwerkteam.de/packages/debian/incoming/sid",
+ queuedir => "/srv/sites/das-netzwerkteam.de/packages/debian/upload/sid",
+ dinstall_runs => 1,
+};
+$cfg{"nwt-debian-wheezy"} = {
+ fqdn => "packages.das-netzwerkteam.de",
+ login => "nwt-admin",
+ method => "scpb",
+ incoming => "/srv/sites/das-netzwerkteam.de/packages/debian/incoming/wheezy",
+ queuedir => "/srv/sites/das-netzwerkteam.de/packages/debian/upload/wheezy",
+ dinstall_runs => 1,
+};
+$cfg{"nwt-debian-squeeze"} = {
+ fqdn => "packages.das-netzwerkteam.de",
+ login => "nwt-admin",
+ method => "scpb",
+ incoming => "/srv/sites/das-netzwerkteam.de/packages/debian/incoming/squeeze",
+ queuedir => "/srv/sites/das-netzwerkteam.de/packages/debian/upload/squeeze",
+ dinstall_runs => 1,
+};
+$cfg{"nwt-debian-lenny"} = {
+ fqdn => "packages.das-netzwerkteam.de",
+ login => "nwt-admin",
+ method => "scpb",
+ incoming => "/srv/sites/das-netzwerkteam.de/packages/debian/incoming/lenny",
+ queuedir => "/srv/sites/das-netzwerkteam.de/packages/debian/upload/lenny",
+ dinstall_runs => 1,
+};
+
+1;
diff --git a/home/.dupload.conf.x2go b/home/.dupload.conf.x2go
new file mode 100644
index 0000000..8e68292
--- /dev/null
+++ b/home/.dupload.conf.x2go
@@ -0,0 +1,37 @@
+package config;
+
+### X2go/DEBIAN
+$cfg{"x2go-debian-sid"} = {
+ fqdn => "code.x2go.org",
+ login => "x2go-admin",
+ method => "scpb",
+ incoming => "/srv/sites/x2go.org/packages/debian/incoming/sid",
+ queuedir => "/srv/sites/x2go.org/packages/debian/upload/sid",
+ dinstall_runs => 1,
+};
+$cfg{"x2go-debian-wheezy"} = {
+ fqdn => "code.x2go.org",
+ login => "x2go-admin",
+ method => "scpb",
+ incoming => "/srv/sites/x2go.org/packages/debian/incoming/wheezy",
+ queuedir => "/srv/sites/x2go.org/packages/debian/upload/wheezy",
+ dinstall_runs => 1,
+};
+$cfg{"x2go-debian-squeeze"} = {
+ fqdn => "code.x2go.org",
+ login => "x2go-admin",
+ method => "scpb",
+ incoming => "/srv/sites/x2go.org/packages/debian/incoming/squeeze",
+ queuedir => "/srv/sites/x2go.org/packages/debian/upload/squeeze",
+ dinstall_runs => 1,
+};
+$cfg{"x2go-debian-lenny"} = {
+ fqdn => "code.x2go.org",
+ login => "x2go-admin",
+ method => "scpb",
+ incoming => "/srv/sites/x2go.org/packages/debian/incoming/lenny",
+ queuedir => "/srv/sites/x2go.org/packages/debian/upload/lenny",
+ dinstall_runs => 1,
+};
+
+1;
diff --git a/home/.pbuilderrc b/home/.pbuilderrc
index 74992ea..ca86228 100644
--- a/home/.pbuilderrc
+++ b/home/.pbuilderrc
@@ -7,7 +7,7 @@ BASEDIRECTORY="/srv/pbuilder/cache"
DIST=${DIST:-debian}
CODENAME=${CODENAME:-sid}
ARCH=${ARCH:-amd64}
-COMPONENT="${COMPONENT:-heuler}"
+COMPONENT="${COMPONENT:-nightly}"
# pbuilder options
BASETGZ="$BASEDIRECTORY/base-$DIST-$CODENAME-$ARCH.tgz"
@@ -15,8 +15,9 @@ DISTRIBUTION="$CODENAME"
BUILDRESULT="$BASEDIRECTORY/$DIST-$CODENAME-$ARCH/result/"
APTCACHE="$BASEDIRECTORY/$DIST-$CODENAME-$ARCH/aptcache/"
-BUILDRESULTUID=x2go-admin
-BUILDRESULTGID=x2go
+BUILDRESULTUID=$(id -u)
+BUILDRESULTGID=$(id -g)
+
# this needs to be disabled
CCACHEDIR=
APTCACHEHARDLINK="yes"