#!/bin/bash set -e function echo_usage { echo "usage: mconfigure [options] " ./configure -I } function create_conf { if [ -f "debian/$paket.cmake" ] then echo "compile_type=CMAKE" > debian/$paket.conf elif [ -f "debian/$paket.build" ] then if [ -f "debian/$paket.cpp" ] then echo "compile_type=CPP" > debian/$paket.conf else echo "compile_type=OLD" > debian/$paket.conf fi else echo "compile_type=NONE" > debian/$paket.conf fi if [ -f "$paket.control" -a -f "$paket.cp" ] then echo "target_type=DEB" >> debian/$paket.conf else echo "target_type=FILE" >> debian/$paket.conf fi echo "$paket.conf created." } ############################################################################## # Main program ############################################################################## if [ ! -d debian ] then echo "run mconfigure in the project base directory with a debian directory in it!" exit 2 fi configure=0 configure_args="-i debian/tmp" while [ $OPTIND -le "$#" ] do if getopts "c" opt then case $opt in \?) $confirure_args="$configure_ars -$OPTARG" if [ $OPTARG="a" -o $OPTARG="C" -o $OPTARG="i" -o $OPTARG="v" ] then eval OPTIND=OPTIND+1 $confirure_args="$configure_ars ${!OPTIND}" fi ;; :) echo "Option -$OPTARG requires an argument." echo_usage exit 3 ;; esac else paket="${!OPTIND}" eval OPTIND=OPTIND+1 fi done if [ -z "$paket" ] then echo_usage exit 4 fi if [ ! -f debian/$paket.conf ] then # check if any files for $paket are present if ! ls debian/$paket.* 2>/dev/null then echo "$paket is no build target in this repository." exit 5 fi # build conf file echo "$paket.conf missing. We create it ..." create_conf fi if [ ! -e configure ] then ln -s /usr/share/mbuild/configure . fi # clean build directory if [ "$compile_type" != "NONE" ] then if [ -e ~/build ] then rm -rf ~/build mkdir ~/build fi configure_args="$configure_args -b" fi # perform configure . debian/$paket.conf if [ -n "$compile_dir" ] then configure_args="$configure_args -b $compile_dir" fi if [ -z "$compile_type" ] then echo "compile_type required in $paket.conf" exit 51 fi if [ "$target_type" == "FILE" ] then # no version needed configure_args="$configure_args -V" fi configure_args="$configure_args $paket" echo "Executing ./configure $configure_args ..." ./configure $configure_args if [ "$compile_type" != "NONE" ] then if grep -- "-prepare" debian/$paket.build >/dev/null then echo "prepare in .build no longer supported. Use .prebuild" exit 6 fi # sync build dir . debian/setenv.sh debian/rules sync make fi # pack prepare if [ "$target_type" == "DEB" ] then if [ ! -f debian/$paket.cp ] then echo "debian/$paket.cp missing for target type DEB" exit 9 fi if [ ! -f debian/$paket.control ] then echo "debian/$paket.control missing for target type DEB" exit 10 fi echo "PACK=binary" >> debian/rules.pre if grep "^Architecture: *all" debian/$paket.control >/dev/null then echo "arch = all" >> debian/rules.pre echo 'BINARY_INDEP = copy ../$(paket)_$(version)-$(build)_all.deb' >> debian/rules.pre else echo 'arch = ${DEB_HOST_ARCH}' >> debian/rules.pre echo "BINARY_ARCH = copy ../${paket}_$version-${build}_"'$(arch).deb' >> debian/rules.pre fi if ! [ -f debian/$paket.changelog ] then echo "changelog_source = debian/default.changelog" >> debian/rules.pre if [ -f debian/default.changelog ] then rm debian/default.changelog fi fi elif [ "$target_type" == "ZIP" ] then echo "PACK=zip" >> debian/rules.pre if [ ! -f debian/$paket.cp ] then echo "debian/$paket.cp missing for target type ZIP" exit 11 fi elif [ "$target_type" == "FILE" ] then echo "PACK=version" >> debian/rules.pre if [ "$compile_type" != "OLD" ] then if [ -z "$compile_target" ] then echo "compile_target is needed for target_type FILE" exit 12 fi echo "TARGET = $compile_target" >> debian/rules.pre fi else echo "Unknown target type: $target_type" exit 13 fi # build package debian/rules pack