ab65ab1dbe77dd64c7833577d32febb383d86566
[projects.git] / tools / make / configure
1 #!/bin/bash
2 set -e
3
4 function echo_usage {
5         echo "usage: configure <package> <revision> [options]"
6         echo "  -b <branch-rev>"
7         echo "  -a <arch>"
8 }
9
10 # to build a package you need ...
11 # <package>.co: checkout commands
12 # <package>.cp: copy step
13 # <package>.cpp (optional): commands to setup the C++ compile environment
14
15 if [ $# -lt 2 ]
16 then
17         echo_usage
18         exit 1
19 fi
20
21 paket=$1
22 build=$2
23 ARCH=""
24 cpp_build=0
25
26 # checkout build utilities
27 if [ ! -d projects ]; then
28         git clone https://github.com/wagner-tech/projects/
29 fi
30 ln -sf projects/tools/make/makefile .
31
32 # check standard files
33 if [ ! -x $paket.co ]
34 then
35         echo "file $paket.co missing or not executable."
36         exit 1
37 fi
38 if [ ! -x $paket.cp ]
39 then
40         echo "file $paket.cp missing or not executable."
41         exit 1
42 fi
43
44 # load util functions for C/C++ - build
45 if [ -f $paket.cpp ]
46 then
47         cpp_build=1
48         . Make/c_configure.sh
49 fi
50
51 # clean src tree and check out
52 if [ -e src ]
53 then
54         rm -rf src
55 fi
56 if [ -e $paket ]
57 then
58         rm -rf $paket
59 fi
60 rm *.stamp || true
61
62 mkdir -p src
63 cwd=$(pwd)
64
65 # checkout
66 pushd src
67 ../$paket.co $build
68 popd
69
70 # copy package control
71 control=$(find src -name $paket.control)
72 if [ -z "$control" ]
73 then
74         echo "control file not found"
75         exit 1
76 fi
77 sed "s/%BUILD%/$build/" $control >$paket.control
78 echo "$paket.control written."
79
80 # check for postinst
81 postinst=$(find src -name $paket.postinst)
82 if [ -n "$postinst" ]
83 then
84         ln -sf $postinst .
85 fi
86
87 # extract version
88 version=$(grep Version $paket.control |sed "s/Version: //")
89
90 # create generic make.pre, if not existing
91 if [ ! -f make.pre ]
92 then
93         cat  >>make.pre <<MAKE_PRE
94 # mBuild make.pre script (auto generated)
95 project = $paket
96 version = $version
97 COPY = ./$paket.cp
98 MAKE_PRE
99         echo "make.pre written."
100 fi
101