summaryrefslogtreecommitdiff
path: root/scripts/command/docker_build_cross_arm_ubuntu_without_aclbuild.sh
blob: dcaaa97a8f8600950c53307d5a154047d3cc24d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/bash

SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

source $SCRIPT_ROOT/common.sh

HOST_HOME=$SCRIPT_ROOT/../..
DOCKER_HOME=/home

GIT_SSL_NO_VERIFY=1

DOCKER_VOLUMES+=" -v $HOST_HOME:$DOCKER_HOME"

DOCKER_ENV_VARS+=" -e http_proxy"
DOCKER_ENV_VARS+=" -e no_proxy"
DOCKER_ENV_VARS+=" -e GIT_SSL_NO_VERIFY"

DOCKER_ENV_VARS+=" -e TARGET_ARCH=armv7l"
DOCKER_ENV_VARS+=" -e CROSS_BUILD=1"
DOCKER_ENV_VARS+=" -e ROOTFS_DIR=/opt/rootfs"
DOCKER_ENV_VARS+=" -e EXT_ACL_FOLDER=/opt/libarmcl"

DOCKER_RUN_OPTS="--rm"
DOCKER_RUN_OPTS+=" -w $DOCKER_HOME"

# prepare armcl library
if [[ ! -d $ARMCL_DIR ]]; then
  echo "cannot find armcl"
  exit 1
fi

# prepare rootfs
if [[ ! -d $ROOTFS_DIR ]]; then
  echo "cannot find rootfs"
  exit 1
fi

DOCKER_VOLUMES+=" -v $ROOTFS_DIR:/opt/rootfs"
DOCKER_VOLUMES+=" -v $ARMCL_DIR:/opt/libarmcl"

if [ -n "$DOCKER_INTERACTIVE" ]; then
  DOCKER_RUN_OPTS+=" -it"
  CMD="/bin/bash"
else
  CMD="make external_acl && export BENCHMARK_ACL_BUILD=1 && make && make install && make build_test_suite"
fi

docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME sh -c "$CMD"
BUILD_RESULT=$?

# Newly created files during above docker run can have different ownership.
# This may cause some problems, for example, some jenkins slaves or developers
# can't remove built files due to lack of permission.
# To address this issue, let's change owner of all files
# in NNFW to owner of NNFW.
NNFW_OWNER_UID=$(stat -c "%u" $HOST_HOME)
NNFW_OWNER_GID=$(stat -c "%g" $HOST_HOME)

CMD="chown -R $NNFW_OWNER_UID:$NNFW_OWNER_GID $DOCKER_HOME"
docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME $CMD

exit $BUILD_RESULT