package_server revision 21155e63bac193abc764d791360132392eb79c4d
fa9e4066f08beec538e775443c5be79dd423fcabahrens#!/bin/bash
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Auto package Hets repository
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock# c.prodescu@jacobs-university.de
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock# jonathan.von_schroeder@gmail.com
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Christian.Maeder@dfki.de
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensMAIN_DISTRO="oneiric"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensAUTO_INSTALL=1
fa9e4066f08beec538e775443c5be79dd423fcabahrensOPTERR=0
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensHETS_REPO=https://github.com/spechub/Hets.git
fa9e4066f08beec538e775443c5be79dd423fcabahrensHETS_LIB_REPO=https://github.com/spechub/Hets-lib.git
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensPROGRAMATICA=programatica-1.0.0.5
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensDIRNAME="`dirname "$0"`"
99653d4ee642c6528e88224f12409a5f23060994eschrockOLD_PWD="`cd $DIRNAME && pwd`"
fa9e4066f08beec538e775443c5be79dd423fcabahrensDISTRO_DIR=$OLD_PWD/debian
46657f8d750bdb71753495ce2919170f126b8e34mmusante
fa9e4066f08beec538e775443c5be79dd423fcabahrensOPT_PREPARE=1
fa9e4066f08beec538e775443c5be79dd423fcabahrensOPT_CREATE=1
fa9e4066f08beec538e775443c5be79dd423fcabahrensOPT_TEST=1
fa9e4066f08beec538e775443c5be79dd423fcabahrensOPT_UPLOAD=1
fa9e4066f08beec538e775443c5be79dd423fcabahrensOPT_CLEAN=1
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensDATA_DIR=$OLD_PWD/data
fa9e4066f08beec538e775443c5be79dd423fcabahrensHETS_REPO_FOLDER=$DATA_DIR/hets-repo
fa9e4066f08beec538e775443c5be79dd423fcabahrensHETS_FOLDER=$DATA_DIR/hets
fa9e4066f08beec538e775443c5be79dd423fcabahrensHETS_OWL_TOOLS_FOLDER=$HETS_FOLDER/hets-owl-tools
fa9e4066f08beec538e775443c5be79dd423fcabahrensHETS_LIB_REPO_FOLDER=$DATA_DIR/hets-lib-repo
fa9e4066f08beec538e775443c5be79dd423fcabahrensRESULTS_DIR=$OLD_PWD/results
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenscd $DISTRO_DIR
99653d4ee642c6528e88224f12409a5f23060994eschrockfor f in *
fa9e4066f08beec538e775443c5be79dd423fcabahrensdo
fa9e4066f08beec538e775443c5be79dd423fcabahrens DISTROS="$f ${DISTROS}"
99653d4ee642c6528e88224f12409a5f23060994eschrockdone
99653d4ee642c6528e88224f12409a5f23060994eschrockcd $OLD_PWD
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensCURR_DISTRO=`cat /etc/*-release | grep DISTRIB_CODENAME | cut -d'=' -f2`
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensprint_help()
fa9e4066f08beec538e775443c5be79dd423fcabahrens{
99653d4ee642c6528e88224f12409a5f23060994eschrock echo "Usage: $0 [<option> ...] <command>"
99653d4ee642c6528e88224f12409a5f23060994eschrock echo ""
99653d4ee642c6528e88224f12409a5f23060994eschrock echo "Create & upload hets packages from the svn trunk."
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor echo "This scripts needs a few additional files."
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor# echo "If these are not present it will try to get them from svn."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ""
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Comands:"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " prepare - Prepare the base.tgz files needed by pbuilder
fa9e4066f08beec538e775443c5be79dd423fcabahrens (needed for testing, you only need to call it once -
fa9e4066f08beec538e775443c5be79dd423fcabahrens updating takes place automatically)"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " create - Create source packages from svn trunk"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " test - Test building source packages"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " upload - Upload packages to launchpad hets ppa"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " package - Do all the above i.e. create source packages,
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor test them and then upload them"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " clean - Remove any checkouts, build files etc."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ""
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Please note:
fa9e4066f08beec538e775443c5be79dd423fcabahrens * prepare and test need you to be either root
fa9e4066f08beec538e775443c5be79dd423fcabahrens or to be able to call sudo"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ""
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Options:"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " -h Print this help"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " -i Try to install dependencies of this script
fa9e4066f08beec538e775443c5be79dd423fcabahrens automatically using apt-get (note requires
fa9e4066f08beec538e775443c5be79dd423fcabahrens you to be root are to be able to call sudo)
fa9e4066f08beec538e775443c5be79dd423fcabahrens -a Execute commands for all available distros
fa9e4066f08beec538e775443c5be79dd423fcabahrens -s DISTRO
fa9e4066f08beec538e775443c5be79dd423fcabahrens Select distro for commands
fa9e4066f08beec538e775443c5be79dd423fcabahrens -c Select current distro for commands: $CURR_DISTRO
fa9e4066f08beec538e775443c5be79dd423fcabahrens -r REVISION
fa9e4066f08beec538e775443c5be79dd423fcabahrens use revision REVISION instead of the latest HETS revision"
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensensure_package_installed()
fa9e4066f08beec538e775443c5be79dd423fcabahrens{
fa9e4066f08beec538e775443c5be79dd423fcabahrens local PKG="$1"
fa9e4066f08beec538e775443c5be79dd423fcabahrens dpkg -s $PKG 1>/dev/null 2>/dev/null
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $? -eq 1 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $AUTO_INSTALL -eq 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ":: Installing $PKG"
fa9e4066f08beec538e775443c5be79dd423fcabahrens which apt-get 1>/dev/null 2>/dev/null
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $? -eq 1 ]; then
99653d4ee642c6528e88224f12409a5f23060994eschrock echo "Can't find apt-get ..."
99653d4ee642c6528e88224f12409a5f23060994eschrock echo "Giving up."
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit
99653d4ee642c6528e88224f12409a5f23060994eschrock fi
99653d4ee642c6528e88224f12409a5f23060994eschrock if [ $UID -eq 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens local CMD="apt-get install"
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
fa9e4066f08beec538e775443c5be79dd423fcabahrens which sudo 1>/dev/null 2>/dev/null
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $? -eq 1 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Can't find sudo and you're not root ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Giving up."
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens local CMD="sudo apt-get install"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens $CMD $PKG
fa9e4066f08beec538e775443c5be79dd423fcabahrens dpkg -s $PKG 1>/dev/null 2>/dev/null
99653d4ee642c6528e88224f12409a5f23060994eschrock if [ $? -eq 1 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Installing $PKG seems to have failed ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Giving up."
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ":: Package $PKG is now installed"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo ":: Package $PKG not installed"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo "Auto-install option not given ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Please install $PKG manually or try again with -i ..."
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock echo "Giving up."
99653d4ee642c6528e88224f12409a5f23060994eschrock exit 1
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock fi
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock else
99653d4ee642c6528e88224f12409a5f23060994eschrock echo ":: Package $PKG installed"
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock fi
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock}
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockexport_git_repo()
fa9e4066f08beec538e775443c5be79dd423fcabahrens{
fa9e4066f08beec538e775443c5be79dd423fcabahrens local SUFF="$1"
fa9e4066f08beec538e775443c5be79dd423fcabahrens local REPO="$2"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock local REPO_FOLDER="$3"
fa9e4066f08beec538e775443c5be79dd423fcabahrens local FOLDER="$4"
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor local TARGET_REV="$5"
99653d4ee642c6528e88224f12409a5f23060994eschrock local UPTODATE=1
fa9e4066f08beec538e775443c5be79dd423fcabahrens EXPORT_UPTODATE=1
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock if [ -d $REPO_FOLDER ]; then
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock (cd $REPO_FOLDER && git status 1>/dev/null 2>/dev/null)
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante if [ $? -eq 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ":: Updating previous checkout of $REPO"
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante (cd $REPO_FOLDER && git pull)
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante if [ $? -eq 0 ]; then
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante UPTODATE=0
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante fi
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante else
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante echo "$REPO_FOLDER exists ..."
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante echo "But it is not a git repository ..."
03a818bc5cc6f80c183dfb3334f4d0ff2ab36fccmmusante read -n1 -p " Delete it? (y/n) "
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock [[ $REPLY = [yY] ]] && { rm -rf $REPO_FOLDER; } || { echo "Giving up."; exit 1; }
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock fi
46657f8d750bdb71753495ce2919170f126b8e34mmusante fi
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock if [ $UPTODATE -eq 1 ]; then
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo ":: Checking out $REPO ..."
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante mkdir -p $REPO_FOLDER
fa9e4066f08beec538e775443c5be79dd423fcabahrens git clone $REPO $REPO_FOLDER >/dev/null
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $? -eq 1 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Check out failed ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Giving up."
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock exit 1
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock REVISION=`git --git-dir=$HETS_REPO_FOLDER/.git log -1 --format=%ct`
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock if [ ! $? -eq 0 ]; then
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo "Couldn't detect revision ..."
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante echo "Giving up."
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante exit 1
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante fi
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante if [ "$TARGET_REV" != "" ]; then
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante GIT_TARGET_REV=$TARGET_REV
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante (cd $REPO_FOLDER && git checkout $GIT_TARGET_REV)
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante if [ "`cat \"${DATA_DIR}/revision_${SUFF}\" 2>/dev/null`" == "$TARGET_REV" ]; then
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock EXPORT_UPTODATE=0
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock if [ "`cat \"${DATA_DIR}/revision_${SUFF}\" 2>/dev/null`" == "$REVISION" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens EXPORT_UPTODATE=0
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $EXPORT_UPTODATE -eq 1 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f $DATA_DIR/revision_$SUFF 2> /dev/null
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor echo ":: Exporting $REPO ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -rf $FOLDER
fa9e4066f08beec538e775443c5be79dd423fcabahrens mkdir -p $FOLDER
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $REPO_FOLDER
fa9e4066f08beec538e775443c5be79dd423fcabahrens git archive --format=tar master | (cd $FOLDER && tar -xf -)
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cd $OLD_PWD
99653d4ee642c6528e88224f12409a5f23060994eschrock if [ $? -eq 1 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Check out failed ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Giving up."
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit 1
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens git --git-dir=$HETS_REPO_FOLDER/.git log -1 --format=%ct > $DATA_DIR/revision_$SUFF
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Export of $REPO is up to date"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensSELECTED_DISTROS=""
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockHETS_REV=""
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockwhile getopts ":hias:cr:" opt; do
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock case $opt in
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock \?)
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Invalid option: -$OPTARG" >&2
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ""
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock print_help
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock exit 1
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock ;;
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock h)
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock print_help
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock exit
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens i)
fa9e4066f08beec538e775443c5be79dd423fcabahrens AUTO_INSTALL=0
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens a)
fa9e4066f08beec538e775443c5be79dd423fcabahrens SELECTED_DISTROS="$DISTROS $SELECTED_DISTROS"
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens s)
fa9e4066f08beec538e775443c5be79dd423fcabahrens if grep -q "$OPTARG" <<<$DISTROS; then
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock SELECTED_DISTROS="$OPTARG $SELECTED_DISTROS"
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Distribution $OPTARG not available ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Giving up."
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit 1
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock fi
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock ;;
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock c)
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock SELECTED_DISTROS="$CURR_DISTRO $SELECTED_DISTROS"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock ;;
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock r)
fa9e4066f08beec538e775443c5be79dd423fcabahrens HETS_REV="$OPTARG"
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens esac
fa9e4066f08beec538e775443c5be79dd423fcabahrensdone
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensSELECTED_DISTROS=`echo $SELECTED_DISTROS | tr ' ' '\n' | sort -u | tr '\n' ' '`
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensif echo "$SELECTED_DISTROS" | grep -q "^[[:space:]]*$" ; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "No Distro selected " >&2
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ""
99653d4ee642c6528e88224f12409a5f23060994eschrock print_help
99653d4ee642c6528e88224f12409a5f23060994eschrock exit 1
99653d4ee642c6528e88224f12409a5f23060994eschrockfi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
99653d4ee642c6528e88224f12409a5f23060994eschrockecho ":: Selected Distros are: $SELECTED_DISTROS"
99653d4ee642c6528e88224f12409a5f23060994eschrock
fa9e4066f08beec538e775443c5be79dd423fcabahrensshift $(($OPTIND - 1))
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensset_option()
fa9e4066f08beec538e775443c5be79dd423fcabahrens{
fa9e4066f08beec538e775443c5be79dd423fcabahrens OPTION=OPT_$1
fa9e4066f08beec538e775443c5be79dd423fcabahrens export $OPTION=0
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock
fa9e4066f08beec538e775443c5be79dd423fcabahrensfor arg in "$@"
8488aeb5df27784d479c16cde06a9e25cd9a1152taylordo
99653d4ee642c6528e88224f12409a5f23060994eschrock case `echo $arg | tr [:upper:] [:lower:]` in
fa9e4066f08beec538e775443c5be79dd423fcabahrens prepare)
fa9e4066f08beec538e775443c5be79dd423fcabahrens set_option "PREPARE"
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock create)
fa9e4066f08beec538e775443c5be79dd423fcabahrens set_option "CREATE"
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens test)
fa9e4066f08beec538e775443c5be79dd423fcabahrens set_option "TEST"
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens upload)
fa9e4066f08beec538e775443c5be79dd423fcabahrens set_option "UPLOAD"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock ;;
99653d4ee642c6528e88224f12409a5f23060994eschrock package)
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock set_option "CREATE"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock set_option "TEST"
fa9e4066f08beec538e775443c5be79dd423fcabahrens set_option "UPLOAD"
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
99653d4ee642c6528e88224f12409a5f23060994eschrock clean)
fa9e4066f08beec538e775443c5be79dd423fcabahrens set_option "CLEAN"
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens *)
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Unknown command $arg ..."
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante echo
fa9e4066f08beec538e775443c5be79dd423fcabahrens print_help
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor exit 1
99653d4ee642c6528e88224f12409a5f23060994eschrock esac
fa9e4066f08beec538e775443c5be79dd423fcabahrensdone
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock
fa9e4066f08beec538e775443c5be79dd423fcabahrensmkdir -p $OLD_PWD/logs/
fa9e4066f08beec538e775443c5be79dd423fcabahrens
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusanteif [ ! -d $RESULTS_DIR ]; then
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock mkdir -p $RESULTS_DIR
99653d4ee642c6528e88224f12409a5f23060994eschrockfi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusanteif [ $OPT_PREPARE -eq 0 ]; then
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante echo "=== Preparing base.tgz"
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante mkdir -p $OLD_PWD/pbuilder/
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante if [ $UID -eq 0 ]; then
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante CMD="pbuilder"
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante else
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante which sudo 1>/dev/null 2>/dev/null
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante if [ $? -eq 1 ]; then
181c2f42873ba1b0fdc4d0470593ad30176af1f0mmusante echo "Can't find sudo and you're not root ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Giving up."
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
99653d4ee642c6528e88224f12409a5f23060994eschrock CMD="sudo pbuilder"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock fi
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock for DIST in $SELECTED_DISTROS
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockdo
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo ":: Creating base.tgz for distro $DIST"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo "See $OLD_PWD/logs/pbuilder_${DIST}_base.tgz.log"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock $CMD create --basetgz "$OLD_PWD/pbuilder/${DIST}_base.tgz" --distribution $DIST --othermirror "deb http://archive.ubuntu.com/ubuntu $DIST main restricted universe multiverse|deb http://ppa.launchpad.net/hets/hets/ubuntu $DIST main" > "$OLD_PWD/logs/pbuilder_${DIST}_base.tgz.log`date +%s`"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo ":: Done"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockdone
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockfi
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockif [ $OPT_CLEAN -eq 0 ]; then
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo "=== Cleaning"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock rm -rf $OLD_PWD/data/
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockfi
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrockif [ $OPT_CREATE -eq 0 ]; then
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock echo "=== Creating source packages"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock ensure_package_installed git
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock ensure_package_installed "git-svn"
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock ensure_package_installed ant
99653d4ee642c6528e88224f12409a5f23060994eschrock ensure_package_installed "openjdk-7-jdk"
99653d4ee642c6528e88224f12409a5f23060994eschrock
99653d4ee642c6528e88224f12409a5f23060994eschrock export_git_repo "hets" "$HETS_REPO" "$HETS_REPO_FOLDER" "$HETS_FOLDER" "$HETS_REV"
99653d4ee642c6528e88224f12409a5f23060994eschrock
99653d4ee642c6528e88224f12409a5f23060994eschrock if [ $EXPORT_UPTODATE -eq 1 ]; then
99653d4ee642c6528e88224f12409a5f23060994eschrock rm -f $DATA_DIR/*.done 2> /dev/null
99653d4ee642c6528e88224f12409a5f23060994eschrock rm -f $DATA_DIR/revision_lib 2> /dev/null
99653d4ee642c6528e88224f12409a5f23060994eschrock fi
99653d4ee642c6528e88224f12409a5f23060994eschrock
99653d4ee642c6528e88224f12409a5f23060994eschrock HETS_VERSION=`cat $HETS_FOLDER/version_nr`
99653d4ee642c6528e88224f12409a5f23060994eschrock if [ ! $? -eq 0 ]; then
99653d4ee642c6528e88224f12409a5f23060994eschrock echo "Couldn't detect version ..."
99653d4ee642c6528e88224f12409a5f23060994eschrock echo "Giving up."
99653d4ee642c6528e88224f12409a5f23060994eschrock exit 1
99653d4ee642c6528e88224f12409a5f23060994eschrock fi
99653d4ee642c6528e88224f12409a5f23060994eschrock echo ":: Hets version is: $HETS_VERSION"
99653d4ee642c6528e88224f12409a5f23060994eschrock
99653d4ee642c6528e88224f12409a5f23060994eschrock HETS_REVISION=$REVISION
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ":: Revision is: $HETS_REVISION"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens HETS_FULL_VERSION="$HETS_VERSION"r"$HETS_REVISION"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ":: Full version is: $HETS_FULL_VERSION"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens export_git_repo "lib" "$HETS_LIB_REPO" "$HETS_LIB_REPO_FOLDER" "$HETS_FOLDER/hets-lib"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ":: Compiling Hets OWL Tools"
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ ! -f "$DATA_DIR/owl.done" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $HETS_FOLDER
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor make initialize_java 1>/dev/null || { echo Building Hets OWL Tools failed && echo Giving up. && exit 1; }
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cd $OLD_PWD
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor mkdir -p $HETS_OWL_TOOLS_FOLDER
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cd $HETS_FOLDER/OWL2
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cp -r OWL*.jar $HETS_OWL_TOOLS_FOLDER
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cd $OLD_PWD
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor mkdir -p $HETS_OWL_TOOLS_FOLDER/lib
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cp $HETS_FOLDER/OWL2/lib/*.jar $HETS_OWL_TOOLS_FOLDER/lib
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cp $HETS_FOLDER/CASL/Termination/AProVE.jar $HETS_FOLDER/hets-owl-tools
99653d4ee642c6528e88224f12409a5f23060994eschrock cp $HETS_FOLDER/DMU/OntoDMU.jar $HETS_FOLDER/hets-owl-tools
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor touch $DATA_DIR/owl.done
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm $DATA_DIR/clean.done 2> /dev/null
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor else
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor echo "Not necessary"
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ":: Clearing $HETS_FOLDER"
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor if [ ! -f $DATA_DIR/clean.done ]; then
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cd $HETS_FOLDER
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor make distclean 1>/dev/null 2>/dev/null
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor rm programatica 2>/dev/null
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor rm -rf GMP mini
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor mkdir -p programatica
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor wget http://www.informatik.uni-bremen.de/agbkb/forschung/formal_methods/CoFI/hets/src-distribution/$PROGRAMATICA.tar.gz
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor tar -xf $PROGRAMATICA.tar.gz
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor mv $PROGRAMATICA programatica/tools
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor rm -r $PROGRAMATICA.tar.gz
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cd $OLD_PWD
fa9e4066f08beec538e775443c5be79dd423fcabahrens touch $DATA_DIR/clean.done
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ ! -f $DATA_DIR/orig.done ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ":: Creating orig.tar.gz"
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $HETS_FOLDER
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo $HETS_REVISION >> rev.txt
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -rf $HETS_FOLDER/.gitignore
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -rf $HETS_FOLDER/OWL2/java/OwlApi
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -rf $HETS_FOLDER/utils/nightly
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -rf $HETS_FOLDER/utils/debian
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -rf $HETS_FOLDER/utils/macports
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor rm -rf $HETS_FOLDER/utils/ubuntu
8654d0253136055bd4cc2423d87378e8a37f2eb5perrin cd ..
fa9e4066f08beec538e775443c5be79dd423fcabahrens tar -czf $RESULTS_DIR/hets-server_$HETS_FULL_VERSION.orig.tar.gz hets
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $OLD_PWD
fa9e4066f08beec538e775443c5be79dd423fcabahrens touch $DATA_DIR/orig.done
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ".orig.tar.gz is up to date"
99653d4ee642c6528e88224f12409a5f23060994eschrock fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens for DIST in $SELECTED_DISTROS
fa9e4066f08beec538e775443c5be79dd423fcabahrensdo
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -rf $HETS_FOLDER
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "::Packaging for $DIST distroseries"
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $DATA_DIR
fa9e4066f08beec538e775443c5be79dd423fcabahrens tar -xf $RESULTS_DIR/hets-server_$HETS_FULL_VERSION.orig.tar.gz
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $OLD_PWD
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ::Creating debian folder $HETS_FOLDER and changelog
fa9e4066f08beec538e775443c5be79dd423fcabahrens mkdir -p $HETS_FOLDER/debian
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp -rf $OLD_PWD/debian-server/* $HETS_FOLDER/debian
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp -rf $OLD_PWD/debian/$DIST/* $HETS_FOLDER/debian
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor # Creating the changelog
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ "$DIST" = "$MAIN_DISTRO" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens ADDITIONAL=""
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
fa9e4066f08beec538e775443c5be79dd423fcabahrens ADDITIONAL="~$DIST"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "hets-server ($HETS_FULL_VERSION-0ubuntu1$ADDITIONAL) `basename $DIST`; urgency=low" > .changelog
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo >> .changelog
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " * Initial release, automatically generated." >> .changelog
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo >> .changelog
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " -- `cat changelog_name` <`cat changelog_email`> `date -R`" >> .changelog
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens #merging changelogs
fa9e4066f08beec538e775443c5be79dd423fcabahrens mv .changelog $HETS_FOLDER/debian/changelog
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ::Done
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ::Starting package building and signing;
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor ln -s $RESULTS_DIR/hets-server_$HETS_FULL_VERSION.orig.tar.gz $DATA_DIR/hets-server_$HETS_FULL_VERSION.orig.tar.gz
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor cd $HETS_FOLDER;
fa9e4066f08beec538e775443c5be79dd423fcabahrens debuild -S -sa
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo ::Done
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $OLD_PWD
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm $DATA_DIR/hets-server_$HETS_FULL_VERSION.orig.tar.gz
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp $DATA_DIR/hets-server_$HETS_FULL_VERSION* $RESULTS_DIR/
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm $DATA_DIR/hets-server_$HETS_FULL_VERSION*
fa9e4066f08beec538e775443c5be79dd423fcabahrensdone
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenscd $DATA_DIR
fa9e4066f08beec538e775443c5be79dd423fcabahrenstar -xf $RESULTS_DIR/hets-server_$HETS_FULL_VERSION.orig.tar.gz
fa9e4066f08beec538e775443c5be79dd423fcabahrenscd $OLD_PWD
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensfi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensif [ $OPT_UPLOAD -eq 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ ! $OPT_CREATE -eq 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "You need to (re-)create the packages for uploading"
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensecho "=== Uploading source packages"
fa9e4066f08beec538e775443c5be79dd423fcabahrensfor DIST in $SELECTED_DISTROS
fa9e4066f08beec538e775443c5be79dd423fcabahrensdo
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ "$DIST" = "$MAIN_DISTRO" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens ADDITIONAL=""
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
8488aeb5df27784d479c16cde06a9e25cd9a1152taylor ADDITIONAL="~$DIST"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ ! -f $RESULTS_DIR/hets-server_"$HETS_FULL_VERSION"-0ubuntu1"$ADDITIONAL"_source.changes ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "hets_$HETS_FULL_VERSION-0ubuntu1$ADDITIONAL.changes doesn't exist ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Maybe you need to call create first ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Giving up."
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo :: Upload hets-server_"$HETS_FULL_VERSION"-0ubuntu1"$ADDITIONAL"_source.changes
fa9e4066f08beec538e775443c5be79dd423fcabahrens # dput ppa:hets/hets $RESULTS_DIR/hets_"$HETS_FULL_VERSION"-0ubuntu1"$ADDITIONAL"_source.changes
fa9e4066f08beec538e775443c5be79dd423fcabahrensdone
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensfi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensif [ $OPT_TEST -eq 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Testing not yet implemented ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Giving up."
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit 1
8654d0253136055bd4cc2423d87378e8a37f2eb5perrinfi
afefbcddfd8caf5f3b2da510d9439471ab225040eschrock