posaune
authorMichael Wagner <michael@wagnertech.de>
Fri, 6 Aug 2021 21:00:22 +0000 (23:00 +0200)
committerMichael Wagner <michael@wagnertech.de>
Fri, 6 Aug 2021 21:00:22 +0000 (23:00 +0200)
debian/mbuild.changelog
debian/mbuild.cp
doc/mbuild.8
doc/mconfigure.1
tools/make/create-conffiles [new file with mode: 0755]
tools/make/mconfigure
tools/make/rules

index 35c75c3..a1de934 100644 (file)
@@ -1,3 +1,8 @@
+projects (1.2-%BUILD%) unstable; urgency=medium
+  * support version numbers set by user (-v option)
+  * support version numbers set by project (-V option)
+ -- Michael Wagner <michael@wagnertech.de>  Tue, 06 Aug 2021 22:54:48 +0100
+  
 projects (1.1-%BUILD%) unstable; urgency=medium
   * support of cross compile environments with cmake
  -- Michael Wagner <michael@wagnertech.de>  Tue, 12 Jan 2021 22:54:48 +0100
 projects (1.1-%BUILD%) unstable; urgency=medium
   * support of cross compile environments with cmake
  -- Michael Wagner <michael@wagnertech.de>  Tue, 12 Jan 2021 22:54:48 +0100
index 0babef4..9e8f3b8 100755 (executable)
@@ -6,6 +6,7 @@ base=$1
 mkdir -p $base/usr/bin/
 cp tools/make/mconfigure $base/usr/bin/
 cp tools/make/treecopy $base/usr/bin/
 mkdir -p $base/usr/bin/
 cp tools/make/mconfigure $base/usr/bin/
 cp tools/make/treecopy $base/usr/bin/
+cp tools/make/make-conffile $base/usr/bin/
 
 mkdir -p $base/usr/share/mbuild/
 cp tools/make/rules $base/usr/share/mbuild/
 
 mkdir -p $base/usr/share/mbuild/
 cp tools/make/rules $base/usr/share/mbuild/
index 3c26a7c..b1d4ef6 100644 (file)
@@ -13,10 +13,17 @@ consists of 3 phases: configuration - compile - pack
 configuration
 is done by the
 .B mconfigure
 configuration
 is done by the
 .B mconfigure
-script. It determins the verion number from the git/subversion status. A
+script. The configuration step has the following tasks:
+
+Determination of version and build number. The version number can be set in a 
 .B PAKET.changelog
 .B PAKET.changelog
-file is needed. Per 
-default this script also performs compile and pack step.
+file, can be set by the -v option of
+.B mconfigure
+or be set by the project itself in the
+.B PAKET.prepare
+script. The build number is always taken from the CM system: With SVN it is the global version number, with
+GIT the build number is taken from the tag. On build a tag in the form project_version-build is expected. If not
+present a tag in the form v_version-build is searched. Verion may be 0.0 if set elsewhere.
 
 If a
 .B PAKET.prepare
 
 If a
 .B PAKET.prepare
@@ -35,7 +42,9 @@ file is present in the debian directory, it is called in the ~/build directory.
 compile
 To perform the compile step a
 .B PAKET.build
 compile
 To perform the compile step a
 .B PAKET.build
-script is needed in the 
+script or a
+.B PAKET.cmake
+file is needed in the 
 .B debian 
 directory.
 .TP
 .B debian 
 directory.
 .TP
@@ -52,7 +61,7 @@ directory.
 A standard copyright file is included. An user defined file can be used by copying it to debian/copyright
 in the PAKET.prepare script.
 .br
 A standard copyright file is included. An user defined file can be used by copying it to debian/copyright
 in the PAKET.prepare script.
 .br
-A standard README.debian file is included. An user defined file can be used by defining a debian/PAKET.README.debian.
+
 .SH FILES
 .TP
 PAKET.changelog
 .SH FILES
 .TP
 PAKET.changelog
@@ -71,6 +80,10 @@ Any executable script file executed in configure step in the ../build directory
 PAKET.build
 Any executable script file executing the build in the ../build directory
 .TP
 PAKET.build
 Any executable script file executing the build in the ../build directory
 .TP
+PAKET.cmake
+cmake file (CMakeLists.txt) for building C/C++ code. If a cross compile option is set in the mconfigure
+script, according definitions are included.
+.TP
 PAKET.cp
 An executable script file copying the artefacts to target paths preposed by $1:
 .br
 PAKET.cp
 An executable script file copying the artefacts to target paths preposed by $1:
 .br
index 01c3513..8df0edc 100644 (file)
@@ -15,9 +15,16 @@ that contains the files described in
 .B mbuild(8).
 .SH OPTIONS
 .TP
 .B mbuild(8).
 .SH OPTIONS
 .TP
+-a ARCH
+A multiarch cross compile is issued
+.TP
 -c
 select configuration step
 .TP
 -c
 select configuration step
 .TP
+-C TOOLSET
+Defines the cross compile toolset. TOOLSET can either be an absolute path or a directory expected
+in the /opt/cross directory
+.TP
 -d
 select compile step
 .TP
 -d
 select compile step
 .TP
@@ -26,6 +33,12 @@ select pack step
 .TP
 -o
 support old Debian 7 format
 .TP
 -o
 support old Debian 7 format
+.TP
+-v VERSION
+set version to VERSION
+.TP
+-V
+verion is set by the project in the prepare step
 .PP
 If no steps are selected all steps are performed.
 .SH SEE ALSO
 .PP
 If no steps are selected all steps are performed.
 .SH SEE ALSO
diff --git a/tools/make/create-conffiles b/tools/make/create-conffiles
new file mode 100755 (executable)
index 0000000..54567f9
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -e
+
+if [ $# -ne 1 ]; then
+       echo "usage: create-conffiles BASE_DIR"
+       exit 1
+fi
+
+cd $1
+mkdir -p DEBIAN
+for files in $(find etc -type f); do
+       echo "/$files" >> DEBIAN/conffiles
+done
+
index a8c7f6e..e5f11b3 100755 (executable)
@@ -9,6 +9,7 @@ function echo_usage {
        echo "  -d : compile"
        echo "  -p : pack default: do all"
        echo "  -v : set version"
        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"
 }
 
        echo "  -o : support old Debian 7 format"
 }
 
@@ -80,6 +81,11 @@ function set_build {
        then
                tag=$(git describe --tags --match "${paket}_*" 2>/dev/null) || true
                if test -z "$tag"
        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
                then
                        tag="0.0-0TOP"
                fi
@@ -119,6 +125,10 @@ function check_version {
        fi
 }
 
        fi
 }
 
+##############################################################################
+# Main program
+##############################################################################
+
 if [ ! -d debian ]
 then
        echo "run mconfigure in the project base directory with a debian directory in it!"
 if [ ! -d debian ]
 then
        echo "run mconfigure in the project base directory with a debian directory in it!"
@@ -128,42 +138,48 @@ fi
 configure=0
 compile=0
 pack=0
 configure=0
 compile=0
 pack=0
-while getopts "a:cC:dpov:" opt; do
-       case $opt in
-               a) ARCH=$OPTARG
-                       ;;
-               c) configure=1
-                       ;;
-               d)      compile=1
-                       ;;
-               C) cross=$OPTARG
-                       ;;
-               p)      pack=1
-                       ;;
-               o)      oldpack="-Zgzip"
-                       ;;
-               v)      optversion=$OPTARG
-                       ;;
-               \?) 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
 done
-shift $((OPTIND -1))
 
 
-if [ $# -lt 1 ]
+if [ -z "$paket" ]
 then
        echo_usage
        exit 1
 fi
 
 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"
 if [ -n "$ARCH" -a -n "$cross" ]
 then
        echo "invalid options: supply -a for multiarch or -C for explicit cross compile environment"
@@ -246,7 +262,6 @@ then
        fi
 
        # check for pre/post installation scripts
        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
        if [ -f $paket.preinst ]
        then
                echo "add_inst_tgt += debian/tmp/DEBIAN/preinst" >> rules.pre
index 1b2e042..6b7d688 100755 (executable)
@@ -60,6 +60,7 @@ sync: ../build
 
 copy: debian/$(paket).cp
        debian/$(paket).cp debian/tmp
 
 copy: debian/$(paket).cp
        debian/$(paket).cp debian/tmp
+       create-conffiles debian/tmp
        touch debian/tmp
 
 ../$(paket)_$(version)-$(build)_$(arch).deb:debian/tmp/DEBIAN/control $(std_inst_tgt) $(add_inst_tgt) debian/tmp
        touch debian/tmp
 
 ../$(paket)_$(version)-$(build)_$(arch).deb:debian/tmp/DEBIAN/control $(std_inst_tgt) $(add_inst_tgt) debian/tmp