summaryrefslogtreecommitdiff
path: root/bin/itzks-build-package
diff options
context:
space:
mode:
Diffstat (limited to 'bin/itzks-build-package')
-rwxr-xr-xbin/itzks-build-package251
1 files changed, 0 insertions, 251 deletions
diff --git a/bin/itzks-build-package b/bin/itzks-build-package
deleted file mode 100755
index 2bbb3a1..0000000
--- a/bin/itzks-build-package
+++ /dev/null
@@ -1,251 +0,0 @@
-#!/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.
-
-test -z $1 && { echo "usage: <itzks-git-project> {main,main/<codename>,nightly,nightly/<codename>} [<git-checkout>]"; exit -1; }
-
-set -ex
-
-export GIT_SERVER="code.it-zukunft-schule.de"
-export DEBEMAIL=itzks-packages@it-zukunft-schule.de
-export DEBFULLNAME="ITZKS Packages"
-export GPG_KEY="E41B37C658842183"
-
-set_vars() {
- USE_SUDO="yes"
- PDEBUILD="pdebuild --pbuilder qemubuilder"
- TEMP_BASE="$HOME/tmp/"
- mkdir "$TEMP_BASE"
- chmod 2770 "$TEMP_BASE"
-
- # first argv is the name of the Git project
- PROJECT=$1
-
- # 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:-nightly}}
- CODENAMES=${ARGV2_CODENAME:-${CODENAMES}}
- [ -n "$ARGV2_CODENAME" ] && FORCE_BUILD=0 || FORCE_BUILD=-1
- if [ "x$COMPONENT" = "xmain" ]; then
- CHECKOUT=${3:-build-main}
- elif [ "x$COMPONENT" = "xnightly" ]; then
- CHECKOUT=${3:-master}
- DATE="~${DATE:-$(date +%Y%m%d)}"
- else
- echo "error: no such package component area for ITZKS packages. 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
- DIST_SUPPORTED="debian ubuntu"
- 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
-}
-
-clear_pkgdist() {
-
- # pkgdist directory cleanup
- cat $PROJECT_DIR/BUILDS_FOR | egrep -v '(^$|^#.*$)' | while read line; do
- l_DIST=$(echo $line | cut -d":" -f1 | tr [A-Z] [a-z])
- CODENAMES=${CODENAMES:-$(echo $line | cut -d":" -f2- | tr [A-Z] [a#-z])}
- echo "$DIST_SUPPORTED" | grep $l_DIST >/dev/null && {
- for l_CODENAME in $CODENAMES; do
- 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
-}
-
-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_SERVER/$PROJECT.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 || cat > BUILDS_FOR <<EOF
-debian: squeeze wheezy sid
-#ubuntu: lucid maverick natty
-EOF
- 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 [A-Z] [a-z])
- CODENAMES=${CODENAMES:-$(echo $line | cut -d":" -f2- | tr [A-Z] [a#-z])}
- echo "$DIST_SUPPORTED" | grep $l_DIST >/dev/null && {
- for l_CODENAME in $CODENAMES; do
- TEMP_DIR="$(mktemp -d --tmpdir=$TEMP_BASE)"
- mkdir -p $TEMP_DIR/$PROJECT
- chmod 2770 $TEMP_DIR -Rf
- git clone --local $PROJECT_DIR $TEMP_DIR/$PROJECT/
- cd $TEMP_DIR/$PROJECT
- git checkout $CHECKOUT || git checkout master
- GITREV=$(itzks-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 packages.it-zukunft-schule.de repository."
- mkdir -p $PKGDIST/$l_DIST/$l_CODENAME/{amd64,i386}
- OTHERMIRROR="deb http://packages.it-zukunft-schule.de/debian $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
- }
- 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
- }
- }
- 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
- }
- 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
- }
- 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
- }
- }
- 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
- }
- done
- }
- cd -
- rm -Rf $TEMP_DIR
- done
- echo
- }
- echo
- 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 [A-Z] [a-z])
- CODENAMES=${CODENAMES:-$(echo $line | cut -d":" -f2- | tr [A-Z] [a#-z])}
- for l_CODENAME in $CODENAMES; do
- 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 --to itzks-$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 --to itzks-$l_DIST-$l_CODENAME $PROJECT_*.changes
- cd -
- done
- done
- done
- cd -
- return 0
-}
-
-### MAIN ###
-set_vars $@ && {
- if [ "x$(basename $0)" = "xitzks-build-package" ] || [ "x$(basename $0)" = "xitzks-build+upload-package" ]; then
- cd $PROJECT_DIR && itzks-pkgneedsbuild $CHECKOUT || [ "$FORCE_BUILD" -eq 0 ] && {
- clear_pkgdist
- prepare_workspace && {
- build_packages
- }
- }
- fi
- if [ "x$(basename $0)" = "xitzks-upload-package" ] || [ "x$(basename $0)" = "xitzks-build+upload-package" ]; then
- upload_packages
- fi
-}