Allow provide variant to builder with docker
[anna.git] / tools / build-with-docker
1 #!/bin/bash
2
3 #############
4 # VARIABLES #
5 #############
6
7 REPO_DIR="$(git rev-parse --show-toplevel 2>/dev/null)"
8 [ -z "$REPO_DIR" ] && { echo "You must execute under a valid git repository !" ; exit 1 ; }
9
10 VARIANT=${1:-Release}
11
12 #############
13 # FUNCTIONS #
14 #############
15
16 # $1: image directory
17 build_image() {
18   local imgdir=$1
19
20   local imgname=$(basename ${imgdir})
21   local imgtag=${TAG}
22
23   echo "Building ${imgname}:${imgtag} ..."
24   cd ${imgdir}
25
26   # Dockerfile for other contexts:
27   local dck_opt=
28   local preferred=Dockerfile.$(arch)
29   [ -f ${preferred} ] && { dck_opt="-f ${preferred}" ; echo "Selected '${preferred}' for current architecture." ; }
30   [ -z "${dck_opt}" -a ! -f Dockerfile ] && { echo "No Dockerfile for this directory. Ignoring ..." ; cd - >/dev/null ; return 1 ; }
31
32   docker build -t ${imgname}:${imgtag} ${dck_opt} .
33   [ $? -ne 0 ] && { echo "An error ocurred. Aborting ..." ; cd - >/dev/null ; return 1 ; }
34   cd - >/dev/null
35 }
36
37 #############
38 # EXECUTION #
39 #############
40
41 echo
42 echo "Remember usage: $0 [variant: Release|Debug], Release by default"
43 echo
44
45 TAG=$(${REPO_DIR}/tools/version)
46
47 # Build compilation image:
48 build_image ${REPO_DIR}/docker-images/anna-build-nodb # this image has neither oracle nor mysql installed
49
50 # Build source with previous compilation image:
51 docker run --rm -it -u $(id -u):$(id -g) -e VARIANT=${VARIANT} -v ${REPO_DIR}:/code -w /code anna-build-nodb:${TAG}
52