posaune
[projects.git] / tools / make / mconfigure
index 08f9d44..244d19b 100755 (executable)
@@ -8,6 +8,8 @@ function echo_usage {
        echo "  -C <cross environment>"
        echo "  -d : compile"
        echo "  -p : pack default: do all"
+       echo "  -v : set version"
+       echo "  -V : version set by project"
        echo "  -o : support old Debian 7 format"
 }
 
@@ -79,6 +81,11 @@ function set_build {
        then
                tag=$(git describe --tags --match "${paket}_*" 2>/dev/null) || true
                if test -z "$tag"
+               then
+                       # try generic "v_" tag
+                       tag=$(git describe --tags --match "v_*" 2>/dev/null) || true
+               fi
+               if test -z "$tag"
                then
                        tag="0.0-0TOP"
                fi
@@ -118,6 +125,10 @@ function check_version {
        fi
 }
 
+##############################################################################
+# Main program
+##############################################################################
+
 if [ ! -d debian ]
 then
        echo "run mconfigure in the project base directory with a debian directory in it!"
@@ -127,40 +138,48 @@ fi
 configure=0
 compile=0
 pack=0
-while getopts "a:cC:dpo" opt; do
-       case $opt in
-               a) ARCH=$OPTARG
-                       ;;
-               c) configure=1
-                       ;;
-               d)      compile=1
-                       ;;
-               C) cross=$OPTARG
-                       ;;
-               p)      pack=1
-                       ;;
-               o)      oldpack="-Zgzip"
-                       ;;
-               \?) echo "Invalid option: -$OPTARG"
-                       echo_usage
-                       exit 1
-                       ;;
-               :) echo "Option -$OPTARG requires an argument."
-                       echo_usage
-                       exit 1
-                       ;;
-       esac
+while [ $OPTIND -le "$#" ]
+do
+       if getopts "a:cC:dpov:V" opt
+       then
+               case $opt in
+                       a) ARCH=$OPTARG
+                               ;;
+                       c) configure=1
+                               ;;
+                       d)      compile=1
+                               ;;
+                       C) cross=$OPTARG
+                               ;;
+                       p)      pack=1
+                               ;;
+                       o)      oldpack="-Zgzip"
+                               ;;
+                       v)      optversion=$OPTARG
+                               ;;
+                       V)      optversion="0.0"
+                               ;;
+                       \?) echo "Invalid option: -$OPTARG"
+                               echo_usage
+                               exit 1
+                               ;;
+                       :) echo "Option -$OPTARG requires an argument."
+                               echo_usage
+                               exit 1
+                               ;;
+               esac
+       else
+               paket="${!OPTIND}"
+               eval OPTIND=OPTIND+1
+       fi
 done
-shift $((OPTIND -1))
 
-if [ $# -lt 1 ]
+if [ -z "$paket" ]
 then
        echo_usage
        exit 1
 fi
 
-paket=$1
-
 if [ -n "$ARCH" -a -n "$cross" ]
 then
        echo "invalid options: supply -a for multiarch or -C for explicit cross compile environment"
@@ -215,7 +234,12 @@ then
        echo "oldpack=\"$oldpack\"" >> debian/setenv.sh
 
        set_build
-       check_version
+       if [ -z "$optversion" ]
+       then
+               check_version
+       else
+               version=$optversion
+       fi
        echo "version=$version" >> debian/setenv.sh
        echo "build=$build" >> debian/setenv.sh
 
@@ -225,7 +249,7 @@ then
 #      pwd=${pwd,,*}
 #      echo "pwd=$pwd" >> debian/rules.pre
 
-       echo "building $paket with build $version-$build"
+       echo "building $paket with version/build=$version-$build"
 
        pushd debian >/dev/null
        # ./debian -------------------------------------
@@ -238,7 +262,6 @@ then
        fi
 
        # check for pre/post installation scripts
-       echo "TODO: check for conffiles"
        if [ -f $paket.preinst ]
        then
                echo "add_inst_tgt += debian/tmp/DEBIAN/preinst" >> rules.pre
@@ -327,11 +350,19 @@ then
                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
+                       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 [ -f debian/$paket.cp ]
        then
                echo "PACK=zip" >> debian/rules.pre