#!/bin/bash set -e function echo_usage { echo "usage: mconfigure [options]" echo " -a " echo " -c : configure only, no compile, pack" echo " -d : compile only" echo " -p : pack only" } function set_build { if [ -e .svn ] then version="0.0" build=$(svnversion) build=${build/:/-} elif [ -e .git ] then tag=$(git describe --tags 2>/dev/null) || true if test -z "$tag" then tag="0.0-TOP" fi changes=$(git status -s |grep "^ *M") || true if test -n "$changes" then tag="${tag}M" fi version=${tag%%-*} build=${tag#*-} fi } function check_version { vline=$(head -1 debian/$paket.changelog) vline=${vline%-*} clversion=${vline#*(} if [ $version = "0.0" ] then version=$clversion return fi if [ "$clversion" != $version ] then echo "version mismatch: git: $version, changelog: $clversion" exit 1 fi } # to build a package you need ... # .cp (optional): copy step for package production # .cpp.sh (optional): commands to setup the C++ compile environment if [ $# -lt 1 ] then echo_usage exit 1 fi if [ ! -d debian ] then echo "run mconfigure in the project base directory with a debian directory in it!" exit 2 fi paket=$1 configure=1 compile=1 pack=1 while getopts ":ap" opt; do case $opt in a) ARCH=$OPTARG ;; c) compile=0 pack=0 ;; d) configure=0 pack=0 ;; p) configure=0 compile=0 ;; \?) echo "Invalid option: -$OPTARG" echo_usage exit 1 ;; :) echo "Option -$OPTARG requires an argument." echo_usage exit 1 ;; esac done if [ $configure -eq 1 ] then echo "export paket=$1" > debian/setenv.sh shift ARCH="" cpp_build=0 set_build check_version echo "export version=$version" >> debian/setenv.sh echo "export build=$build" >> debian/setenv.sh # get repository name tmp=$(pwd) pwd=${tmp##*/} pwd=${pwd,,*} echo "export pwd=$pwd" >> debian/setenv.sh echo "building $paket with build $version-$build" pushd debian >/dev/null ln -sf /usr/share/mbuild/rules . #if [ -e tmp ] #then # rm -rf tmp #fi #rm *.stamp 2>/dev/null || true #rm make.pre 2>/dev/null || true mkdir -p tmp/DEBIAN # load util functions for C/C++ - build if [ -f $paket.cpp.sh ] then cpp_build=1 . projects/tools/make/c_configure.sh . $paket.cpp.sh fi popd >/dev/null # copy package control if [ ! -f debian/control ] then control=$(find etc -name $paket.control) if [ -z "$control" ] then echo "warning: control file not found" echo " this file is necessary for any package production." else echo "Source: $pwd Section: main Priority: optional Maintainer: WagnerTech UG " > debian/control grep -v "Version:" $control |grep -v "Maintainer:" >> debian/control fi fi fi # check for copy file #if [ ! -f debian/$paket.cp ] #then # # search for copy file # copy=$(find . -name $paket.cp) # if [ -n "$copy" ] # then # echo "ln -sf ../$copy debian/" # ln -sf ../$copy debian/ # else # echo "warning: file $paket.cp missing or not executable:" # echo " this file is necessary for any package production." # fi #fi if [ $compile -eq 1 ] then # build artefacts . debian/setenv.sh debian/rules build fi if [ $pack -eq 1 ] then # build package . debian/setenv.sh debian/rules binary fi