posaune
[projects.git] / tools / make / mconfigure
1 #!/bin/bash
2 set -e
3
4 function echo_usage {
5         echo "usage: mconfigure <package> [options]"
6         echo "  -a <arch>"
7 }
8
9 function set_build {
10         if [ -e .svn ]
11         then
12                 build=$(svnversion)
13         elif [ -e .git ]
14         then
15                 build=$(git describe --tags 2>/dev/null)
16                 test -n "$build" || build="TOP"
17                 changes=$(git status -s |grep "^ *M") || true
18                 test -z "$changes" || build="${build}M"
19         fi
20 }
21
22 # to build a package you need ...
23 # <package>.cp (optional): copy step for package production
24 # <package>.cpp.sh (optional): commands to setup the C++ compile environment
25
26 if [ $# -lt 1 ]
27 then
28         echo_usage
29         exit 1
30 fi
31
32 #TODO: check, if running in debian-dir
33
34 paket=$1
35 shift
36 ARCH=""
37 cpp_build=0
38 delete_src=1
39
40 set_build
41 echo "building $paket with build $build"
42
43 #while getopts ":a" opt; do
44 #       case $opt in
45 #               a) ARCH=$OPTARG
46 #                       ;;
47 #               \?) echo "Invalid option: -$OPTARG"
48 #                       echo_usage
49 #                       exit 1
50 #                       ;;
51 #               :) echo "Option -$OPTARG requires an argument."
52 #                       echo_usage
53 #                       exit 1
54 #                       ;;
55 #       esac
56 #done
57 #
58 ## clean dirs and check out
59 #if [ -d build -a $delete_src -eq 1 ]
60 #then
61 #       rm -rf build
62 #fi
63 #
64 #mkdir -p build
65 #pushd build >/dev/null
66 #
67 #ln -sf /usr/share/mbuild/makefile .
68
69 if [ -e $paket ]
70 then
71         rm -rf $paket
72 fi
73 rm *.stamp || true
74 rm make.pre || true
75
76 # load util functions for C/C++ - build
77 if [ -f $paket.cpp.sh ]
78 then
79         cpp_build=1
80         . projects/tools/make/c_configure.sh
81         . $paket.cpp.sh
82 fi
83
84 # copy package control
85 control=$(find .. -name $paket.control)
86 build_number=${build#*_}
87 if [ -z "$control" ]
88 then
89         echo "warning: control file not found"
90         echo "  this file is necessary for any package production."
91 else    
92         sed "s/%BUILD%/$build_number/" $control |sed "s/%ARCH%/$ARCH/" >$paket.control
93         echo "$paket.control written."
94
95         # extract version
96         version=$(grep Version $paket.control |sed "s/Version: //")
97 fi
98
99 # check for copy file
100 copy=$(find .. -name $paket.cp)
101 if [ -n "$copy" ]
102 then
103         ln -sf $copy .
104 else
105         echo "warning: file $paket.cp missing or not executable:"
106         echo "  this file is necessary for any package production."
107 fi
108
109 # check for installation scripts
110 files=$(find .. -name $paket.preinst)
111 files="$files $(find .. -name $paket.postinst)"
112 files="$files $(find .. -name $paket.prerm)"
113 files="$files $(find .. -name $paket.postrm)"
114 for file in $files
115 do
116         ln -sf $file .
117 done
118
119 # create generic make.pre, if not existing
120 #if [ ! -f make.pre ]
121 #then
122 #       cat  >>make.pre <<MAKE_PRE
123 ## mBuild make.pre script (auto generated)
124 #project = $paket
125 #COPY = ./$paket.cp
126 #MAKE_PRE
127 #       if [ -n "$ARCH" ]
128 #       then
129 #               echo "arch = $ARCH" >>make.pre
130 #               echo "_arch = _${ARCH}" >>make.pre
131 #       fi
132 #       echo "make.pre written."
133 #fi
134 #
135 ## append version to make.pre
136 #echo "version = $version" >> make.pre
137 #echo "build = $build" >> make.pre
138