Imported Upstream version 1.8.0
[platform/core/ml/nnfw.git] / infra / scripts / docker_collect_nnpkg_resources.sh
1 #!/bin/bash
2
3 function join_by
4 {
5   local IFS="$1"; shift; echo "$*"
6 }
7
8 [[ "${BASH_SOURCE[0]}" != "${0}" ]] && echo "Please don't source ${BASH_SOURCE[0]}, execute it" && return
9
10 CURRENT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11 ROOT_PATH="$CURRENT_PATH/../../"
12
13 CONFIG_OPTIONS=""
14 # mount volume (or directory) for externals
15 if [ -n "$EXTERNAL_VOLUME" ]; then
16   DOCKER_OPTS+=" -v $EXTERNAL_VOLUME:/externals"
17   CONFIG_OPTIONS+=" -DNNAS_EXTERNALS_DIR=/externals"
18 else
19   echo "It will use default external path"
20 fi
21
22 # mount volume (or directory) for overlay
23 if [ -n "$OVERLAY_VOLUME" ]; then
24   DOCKER_OPTS+=" -v $OVERLAY_VOLUME:/overlay"
25   CONFIG_OPTIONS+=" -DNNCC_OVERLAY_DIR=/overlay"
26 else
27   echo "It will use default overlay path"
28 fi
29
30 # prepare tensorflow
31 if [ -d $TENSORFLOW_PREFIX ]; then
32   DOCKER_OPTS+=" -v $TENSORFLOW_PREFIX:/opt/tensorflow"
33   CONFIG_OPTIONS+=" -DTENSORFLOW_PREFIX=/opt/tensorflow"
34 fi
35
36 # prepare onnx
37 if [ -d $ONNXRUNTIME_PREFIX ]; then
38   DOCKER_OPTS+=" -v $ONNXRUNTIME_PREFIX:/opt/onnxruntime"
39   CONFIG_OPTIONS+=" -DONNXRUNTIME_PREFIX=/opt/onnxruntime"
40 fi
41
42 # docker image name
43 if [[ -z $DOCKER_IMAGE_NAME ]]; then
44   echo "It will use default docker image name"
45 fi
46
47 # Assume that build is already finished, and ready to test
48 NNAS_WORKSPACE=${NNAS_WORKSPACE:-build}
49 export NNCC_WORKSPACE=${NNAS_WORKSPACE}/nncc
50 export DOCKER_OPTS
51
52 if [[ -z "${ARCHIVE_PATH}" ]]; then
53   ARCHIVE_PATH=${NNAS_WORKSPACE}/archive
54 fi
55
56 set -e
57
58 pushd $ROOT_PATH > /dev/null
59
60 REQUIRED_UNITS=()
61 # Common Libraries
62 REQUIRED_UNITS+=("angkor" "cwrap" "pepper-str" "pepper-strcast" "pp" "stdex")
63 REQUIRED_UNITS+=("oops" "safemain" "foder" "arser" "vconone")
64 # Hermes Logging Framework
65 REQUIRED_UNITS+=("hermes" "hermes-std")
66 # loco IR and related utilities
67 REQUIRED_UNITS+=("loco" "locop" "locomotiv" "logo-core" "logo")
68 # Circle compiler library (.circle -> .circle)
69 REQUIRED_UNITS+=("luci")
70 # Flatbuffer I/O
71 REQUIRED_UNITS+=("mio-tflite" "mio-circle")
72 # Tools
73 REQUIRED_UNITS+=("tflite2circle" "circle2circle" "luci-interpreter")
74 REQUIRED_UNITS+=("souschef" "tflchef" "circlechef" "circle-verify")
75 # common-artifacts
76 REQUIRED_UNITS+=("common-artifacts")
77
78 # Reset whitelist to build all
79 ./nncc docker-run ./nncc configure -DENABLE_STRICT_BUILD=ON -DCMAKE_BUILD_TYPE=release \
80   -DBUILD_WHITELIST=$(join_by ";" "${REQUIRED_UNITS[@]}") \
81   $CONFIG_OPTIONS
82 ./nncc docker-run ./nncc build -j4
83
84 mkdir -p ${ARCHIVE_PATH}
85 TEMP_DIR=$(mktemp -d -t resXXXX)
86 rm -f ${TEMP_DIR}/*
87 mkdir -p ${TEMP_DIR}/nnpkg-tcs
88
89 # Copy nnpakcage only if it has its test data
90 for nnpkg in $NNCC_WORKSPACE/compiler/common-artifacts/*; do
91   if [ -d $nnpkg/metadata/tc ]; then
92     cp -r $nnpkg ${TEMP_DIR}/nnpkg-tcs
93   fi
94 done
95
96 tar -zcf ${ARCHIVE_PATH}/nnpkg-test-suite.tar.gz -C ${TEMP_DIR} ./
97 rm -rf ${TEMP_DIR}
98
99 echo "resouce generation end"
100 popd > /dev/null