diff options
Diffstat (limited to 'scripts/command')
20 files changed, 395 insertions, 212 deletions
diff --git a/scripts/command/docker-run b/scripts/command/docker-run new file mode 100644 index 000000000..386c68145 --- /dev/null +++ b/scripts/command/docker-run @@ -0,0 +1,26 @@ +#!/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_RUN_OPTS="--rm" +DOCKER_RUN_OPTS+=" -w $DOCKER_HOME" + +docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME "$@" +EXITCODE=$? + +docker_cleanup + +exit $EXITCODE diff --git a/scripts/command/docker_run.sh b/scripts/command/docker-shell index f4834f2ff..f4834f2ff 100755 --- a/scripts/command/docker_run.sh +++ b/scripts/command/docker-shell diff --git a/scripts/command/docker_build_cross_arm_neurun.sh b/scripts/command/docker_build_cross_arm_neurun.sh new file mode 100755 index 000000000..4e1022a34 --- /dev/null +++ b/scripts/command/docker_build_cross_arm_neurun.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker + +HOST_HOME=$SCRIPT_ROOT/../.. + +DOCKER_VOLUMES+=" -v $HOST_HOME:$DOCKER_HOME" + +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 TARGET_OS=linux" + +DOCKER_RUN_OPTS="--rm" +DOCKER_RUN_OPTS+=" -w $DOCKER_HOME" + +# prepare rootfs +if [[ ! -d $ROOTFS_DIR ]]; then + echo "cannot find rootfs" + exit 1 +fi + +DOCKER_VOLUMES+=" -v $ROOTFS_DIR/:/opt/rootfs" + +CMD="export OPTIONS=\" -DBUILD_NEURUN=ON -DBUILD_NN_RUNTIME=OFF \" && make acl && make && make install && make build_test_suite" + +docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME sh -c "$CMD" +BUILD_RESULT=$? + +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME + +exit $BUILD_RESULT diff --git a/scripts/command/docker_build_cross_arm_ubuntu.sh b/scripts/command/docker_build_cross_arm_ubuntu.sh index fb3ac81c5..5da2bd6c3 100755 --- a/scripts/command/docker_build_cross_arm_ubuntu.sh +++ b/scripts/command/docker_build_cross_arm_ubuntu.sh @@ -2,37 +2,43 @@ SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source $SCRIPT_ROOT/common.sh +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker 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_RUN_OPTS="--rm" DOCKER_RUN_OPTS+=" -w $DOCKER_HOME" -DOCKER_RUN_OPTS+=" -it" -CMD="export TARGET_ARCH=armv7l && export CROSS_BUILD=1 && export BENCHMARK_ACL_BUILD=1 && make acl && make && make install" +# prepare rootfs +if [[ ! -d $ROOTFS_DIR ]]; then + echo "cannot find rootfs" + exit 1 +fi + +if [[ ! -z $ENV_FILE ]]; then + DOCKER_ENV_VARS+=" --env-file ${ENV_FILE} " +fi + +DOCKER_VOLUMES+=" -v $ROOTFS_DIR:/opt/rootfs" + +if [ -n "$DOCKER_INTERACTIVE" ]; then + DOCKER_RUN_OPTS+=" -it" + CMD="/bin/bash" +else + CMD="export BENCHMARK_ACL_BUILD=1 && make acl && 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 +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME exit $BUILD_RESULT diff --git a/scripts/command/docker_build_cross_arm_ubuntu_without_aclbuild.sh b/scripts/command/docker_build_cross_arm_ubuntu_without_aclbuild.sh index dcaaa97a8..b75be173d 100755 --- a/scripts/command/docker_build_cross_arm_ubuntu_without_aclbuild.sh +++ b/scripts/command/docker_build_cross_arm_ubuntu_without_aclbuild.sh @@ -2,19 +2,13 @@ SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source $SCRIPT_ROOT/common.sh +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker 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" @@ -48,15 +42,7 @@ 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 +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME exit $BUILD_RESULT diff --git a/scripts/command/docker_build_tizen_cross.sh b/scripts/command/docker_build_tizen_cross.sh index a37a58cd9..3a45cfd4f 100755 --- a/scripts/command/docker_build_tizen_cross.sh +++ b/scripts/command/docker_build_tizen_cross.sh @@ -1,22 +1,14 @@ #!/bin/bash -# default DOCKER_IMAGE_NAME=nnfw_docker -DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker} -echo "Using docker image $DOCKER_IMAGE_NAME" - SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HOST_HOME=$SCRIPT_ROOT/../.. -DOCKER_HOME=/home +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker -GIT_SSL_NO_VERIFY=1 +HOST_HOME=$SCRIPT_ROOT/../.. 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" @@ -38,11 +30,7 @@ CMD="make && make install && make build_test_suite" docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME sh -c "$CMD" BUILD_RESULT=$? -# change owner of root dir and delete rootfs dir -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 sh -c "$CMD" +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME exit $BUILD_RESULT diff --git a/scripts/command/docker_build_ubuntu_coverity.sh b/scripts/command/docker_build_ubuntu_coverity.sh new file mode 100755 index 000000000..455303257 --- /dev/null +++ b/scripts/command/docker_build_ubuntu_coverity.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker + +HOST_HOME=$SCRIPT_ROOT/../.. + +DOCKER_VOLUMES+=" -v $HOST_HOME:$DOCKER_HOME" + +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" + +TMP_DIR=$HOST_HOME/tmp + +if [ ! -d $COVERITY_ANALYZER_DIR ]; then + echo "cannot find coverity-analyzer" + exit 1 +fi + +which $COVERITY_ANALYZER_DIR/bin/cov-analyze +if [[ $? -ne 0 ]]; then + echo "cannot find coverity-analyzer" + exit 1 +fi + +pushd $HOST_HOME + +# prepare rootfs +if [[ ! -d $ROOTFS_DIR ]]; then + echo "cannot find rootfs" + exit 1 +fi + +DOCKER_VOLUMES+=" -v $COVERITY_ANALYZER_DIR:/opt/cov-analyzer" +DOCKER_VOLUMES+=" -v $ROOTFS_DIR:/opt/rootfs" +DOCKER_VOLUMES+=" -v $COVERITY_OUT:/opt/cov-out" + +if [ -n "$DOCKER_INTERACTIVE" ]; then + DOCKER_RUN_OPTS+=" -it" + CMD="/bin/bash" +else + CMD="make acl tflite && /opt/cov-analyzer/bin/cov-configure --template --compiler arm-linux-gnueabihf-gcc && /opt/cov-analyzer/bin/cov-build --dir /opt/cov-out make runtime testbuild" +fi + +docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME sh -c "$CMD" +BUILD_RESULT=$? + +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME + +# Reset host name (configuration of coverity is done in docker container) +$COVERITY_ANALYZER_DIR/bin/cov-manage-emit --dir $COVERITY_OUT reset-host-name + +# Analyze build result +$COVERITY_ANALYZER_DIR/bin/cov-analyze \ + --dir $COVERITY_OUT --jobs auto --all --disable-test-metrics --security \ + --concurrency --enable-constraint-fpp --fnptr-models --enable SIZECHECK \ + --checker-option STRING_OVERFLOW:report_fixed_size_dest:no --checker-option OVERRUN:allow_symbol:no \ + --checker-option PASS_BY_VALUE:unmodified_threshold:1024 --checker-option PASS_BY_VALUE:size_threshold:1024 \ + -co NULL_RETURNS:stat_threshold:70 --enable INTEGER_OVERFLOW --enable INCOMPATIBLE_CAST \ + --enable IDENTICAL_BRANCHES --enable UNINTENDED_INTEGER_DIVISION + +popd + +exit $BUILD_RESULT diff --git a/scripts/command/docker_build_ubuntu_svace.sh b/scripts/command/docker_build_ubuntu_svace.sh index a17e4da38..49f1ee336 100755 --- a/scripts/command/docker_build_ubuntu_svace.sh +++ b/scripts/command/docker_build_ubuntu_svace.sh @@ -1,19 +1,14 @@ #!/bin/bash SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker} -HOST_HOME=$SCRIPT_ROOT/../.. -DOCKER_HOME=/home +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker -GIT_SSL_NO_VERIFY=1 +HOST_HOME=$SCRIPT_ROOT/../.. 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" @@ -37,12 +32,6 @@ fi pushd $HOST_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" @@ -57,28 +46,19 @@ fi DOCKER_VOLUMES+=" -v $SVACE_ANALYZER_DIR:/opt/svace-analyzer" 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 tflite && /opt/svace-analyzer/bin/svace init && /opt/svace-analyzer/bin/svace build make runtime testbuild" + CMD="make acl tflite && /opt/svace-analyzer/bin/svace init && /opt/svace-analyzer/bin/svace build make runtime testbuild" 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 +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME $SVACE_ANALYZER_DIR/bin/svace analyze --warning $SVACE_POLICY_FILE diff --git a/scripts/command/docker_coverage_report.sh b/scripts/command/docker_coverage_report.sh index 577f5db37..c9294fe48 100755 --- a/scripts/command/docker_coverage_report.sh +++ b/scripts/command/docker_coverage_report.sh @@ -1,38 +1,24 @@ #!/bin/bash -DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker} - SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HOST_HOME=$SCRIPT_ROOT/../.. -DOCKER_HOME=/home +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker -GIT_SSL_NO_VERIFY=1 +HOST_HOME=$SCRIPT_ROOT/../.. 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_RUN_OPTS="--rm" DOCKER_RUN_OPTS+=" -w $DOCKER_HOME" - +DOCKER_ENV_VARS+=" -e DOCKER_HOME=${DOCKER_HOME}" docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME sh -c "./scripts/command/gen_coverage_report.sh" 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 +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME exit $BUILD_RESULT diff --git a/scripts/command/docker_cross_test_coverage_build.sh b/scripts/command/docker_cross_test_coverage_build.sh index f954c481c..784b84605 100755 --- a/scripts/command/docker_cross_test_coverage_build.sh +++ b/scripts/command/docker_cross_test_coverage_build.sh @@ -1,35 +1,22 @@ #!/bin/bash -DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker} - SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HOST_HOME=$SCRIPT_ROOT/../.. -DOCKER_HOME=/home +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker -GIT_SSL_NO_VERIFY=1 +HOST_HOME=$SCRIPT_ROOT/../.. 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_ENV_VARS+=" -e COVERAGE_BUILD=1" 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" @@ -37,27 +24,18 @@ if [[ ! -d $ROOTFS_DIR ]]; then 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 && make && make install && make build_coverage_suite" + CMD="make acl && make && make install && make build_coverage_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 +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME exit $BUILD_RESULT diff --git a/scripts/command/docker_env_neurun b/scripts/command/docker_env_neurun new file mode 100644 index 000000000..53b3bbc83 --- /dev/null +++ b/scripts/command/docker_env_neurun @@ -0,0 +1 @@ +OPTIONS=-DBUILD_NEURUN=ON diff --git a/scripts/command/docker_env_pureacl_tflite_benchmark_model b/scripts/command/docker_env_pureacl_tflite_benchmark_model new file mode 100644 index 000000000..b1c40e16a --- /dev/null +++ b/scripts/command/docker_env_pureacl_tflite_benchmark_model @@ -0,0 +1,2 @@ +OPTIONS=-DBUILD_PURE_ARM_COMPUTE=ON -DBUILD_TFLITE_BENCHMARK_MODEL=ON +BUILD_TYPE=Release diff --git a/scripts/command/docker_gbs_build.sh b/scripts/command/docker_gbs_build.sh index 03979e6ee..dcd989ebb 100755 --- a/scripts/command/docker_gbs_build.sh +++ b/scripts/command/docker_gbs_build.sh @@ -1,13 +1,17 @@ #!/bin/bash -MY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -NNFW_ROOT=$MY_PATH/../.. -DOCKER_NNFW_HOME=/home/nnfw +SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker_tizen + +HOST_HOME=$SCRIPT_ROOT/../.. +DOCKER_NNFW_HOME=${DOCKER_HOME} DOCKER_RPM_HOME=/home/rpm if [ "${GBS_RPM_DIR}" == "" ]; then - GBS_RPM_DIR=$NNFW_ROOT/Product/out/rpm + GBS_RPM_DIR=$HOST_HOME/Product/out/rpm mkdir -p ${GBS_RPM_DIR} fi @@ -18,7 +22,7 @@ then fi -DOCKER_VOLUMES+=" -v ${GBS_RPM_DIR}:${DOCKER_RPM_HOME} -v $NNFW_ROOT:${DOCKER_NNFW_HOME}" +DOCKER_VOLUMES+=" -v ${GBS_RPM_DIR}:${DOCKER_RPM_HOME} -v $HOST_HOME:${DOCKER_NNFW_HOME}" DOCKER_RUN_OPTS+=" --rm" DOCKER_RUN_OPTS+=" -w ${DOCKER_NNFW_HOME}" @@ -27,10 +31,8 @@ CMD="gbs -c ${DOCKER_NNFW_HOME}/scripts/command/gbs.conf build -A armv7l --profi docker run $DOCKER_RUN_OPTS $DOCKER_VOLUMES ${DOCKER_ENV_VARS:-} ${DOCKER_IMAGE} sh -c "$CMD" BUILD_RESULT=$? -# change owner of root dir and delete rootfs dir -NNFW_OWNER_UID=$(stat -c "%u" $NNFW_ROOT) -NNFW_OWNER_GID=$(stat -c "%g" $NNFW_ROOT) +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_NNFW_HOME +restore_ownership $HOST_HOME $DOCKER_RPM_HOME -CMD="chown -R $NNFW_OWNER_UID:$NNFW_OWNER_GID ${DOCKER_NNFW_HOME} && chown -R $NNFW_OWNER_UID:$NNFW_OWNER_GID ${DOCKER_RPM_HOME}" -docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE sh -c "$CMD" exit $BUILD_RESULT diff --git a/scripts/command/docker_run_test.sh b/scripts/command/docker_run_test.sh index 75edd3428..f6605b144 100755 --- a/scripts/command/docker_run_test.sh +++ b/scripts/command/docker_run_test.sh @@ -1,29 +1,17 @@ #!/bin/bash -# default DOCKER_IMAGE_NAME=nnfw_docker -DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker} -echo "Using docker image $DOCKER_IMAGE_NAME" +SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -if [ -z "`docker images | grep $DOCKER_IMAGE_NAME`" ]; then - echo "Need docker image!" - exit 1 -fi - -HOST_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )" - -DOCKER_PATH=/home/npuci/nnfw +# DOCKER_HOME and DOCKER_ENV_VARS +source $SCRIPT_ROOT/nnfw_docker -export GIT_SSL_NO_VERIFY=1 +HOST_HOME=$SCRIPT_ROOT/../.. DOCKER_VOLUMES=" -v /dev/null:/dev/raw1394" -DOCKER_VOLUMES+=" -v $HOST_PATH:$DOCKER_PATH" - -DOCKER_ENV_VARS+=" -e http_proxy" -DOCKER_ENV_VARS+=" -e no_proxy" -DOCKER_ENV_VARS+=" -e GIT_SSL_NO_VERIFY" +DOCKER_VOLUMES+=" -v $HOST_HOME:$DOCKER_HOME" DOCKER_RUN_OPTS="--rm" -DOCKER_RUN_OPTS+=" -w $DOCKER_PATH" +DOCKER_RUN_OPTS+=" -w $DOCKER_HOME" CMD="make install" @@ -36,15 +24,7 @@ docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME 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 NPU_Compiler to owner of NPU_Compiler. -NPU_COMPILER_OWNER_UID=$(stat -c "%u" $HOST_PATH) -NPU_COMPILER_OWNER_GID=$(stat -c "%g" $HOST_PATH) - -CMD="chown -R $NPU_COMPILER_OWNER_UID:$NPU_COMPILER_OWNER_GID $DOCKER_PATH" -docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME $CMD +source $SCRIPT_ROOT/../docker_helper +restore_ownership $HOST_HOME $DOCKER_HOME exit $BUILD_RESULT diff --git a/scripts/command/format-checker.sh b/scripts/command/format-checker.sh index 5186b7476..75c345dd0 100755 --- a/scripts/command/format-checker.sh +++ b/scripts/command/format-checker.sh @@ -1,13 +1,23 @@ #!/bin/bash -function check_tools() { +function pushd () { + command pushd "$@" > /dev/null +} + +function popd () { + command popd "$@" > /dev/null +} + +function check_cpp_tool() { which clang-format-3.9 if [[ $? -ne 0 ]]; then echo "Error: clang-format-3.9 is not available." echo " Please install clang-format-3.9." exit 1 fi +} +function check_python_tool() { which yapf if [[ $? -ne 0 ]]; then echo "Error: yapf is not available." @@ -18,63 +28,82 @@ function check_tools() { function check_cpp_files() { DIRECTORIES_TO_BE_TESTED=$1 + DIRECTORIES_NOT_TO_BE_TESTED=$2 # Check c++ files - CPP_FILES_IN_COMPILER=$(find "${DIRECTORIES_TO_BE_TESTED[@]}" -iname '*.h' -o -iname '*.cpp' -o -iname '*.cc') - - if [[ ${#CPP_FILES_IN_COMPILER} -eq 0 ]]; then - echo "No cpp files to be checked" - return - fi - - CPP_FILES_TO_BE_TESTED=$(git ls-files $CPP_FILES_IN_COMPILER) - if [[ ${#CPP_FILES_TO_BE_TESTED} -eq 0 ]]; then - echo "No changed cpp files to be checked" - return - fi - - clang-format-3.9 -i $CPP_FILES_TO_BE_TESTED + for TEST_DIR in ${DIRECTORIES_TO_BE_TESTED[@]}; do + pushd $TEST_DIR + CPP_FILES_TO_CHECK=$(git ls-files '*.h' '*.cpp' '*.cc') + ARR=($CPP_FILES_TO_CHECK) + for s in ${DIRECTORIES_NOT_TO_BE_TESTED[@]}; do + if [[ $s = $TEST_DIR* ]]; then + skip=${s#$TEST_DIR/}/ + ARR=(${ARR[*]//$skip*}) + fi + done + CPP_FILES_TO_CHECK=${ARR[*]} + if [[ ${#CPP_FILES_TO_CHECK} -ne 0 ]]; then + clang-format-3.9 -i $CPP_FILES_TO_CHECK + fi + popd + done } function check_python_files() { DIRECTORIES_TO_BE_TESTED=$1 + DIRECTORIES_NOT_TO_BE_TESTED=$2 # Check python files - PYTHON_FILES_IN_COMPILER=$(find "${DIRECTORIES_TO_BE_TESTED[@]}" -iname '*.py') - - if [[ ${#PYTHON_FILES_IN_COMPILER} -eq 0 ]]; then - echo "No python files to be checked" - return - fi - - PYTHON_FILES_TO_BE_TESTED=$(git ls-files $PYTHON_FILES_IN_COMPILER) - if [[ ${#PYTHON_FILES_TO_BE_TESTED} -eq 0 ]]; then - echo "No changed python files to be checked" - return - fi - - yapf -i --style='{based_on_style: pep8, column_limit: 90}' $PYTHON_FILES_TO_BE_TESTED + for TEST_DIR in ${DIRECTORIES_TO_BE_TESTED[@]}; do + pushd $TEST_DIR + PYTHON_FILES_TO_CHECK=$(git ls-files '*.py') + ARR=($PYTHON_FILES_TO_CHECK) + for s in ${DIRECTORIES_NOT_TO_BE_TESTED[@]}; do + if [[ $s = $TEST_DIR* ]]; then + skip=${s#$TEST_DIR/}/ + ARR=(${ARR[*]//$skip*}) + fi + done + PYTHON_FILES_TO_CHECK=${ARR[*]} + if [[ ${#PYTHON_FILES_TO_CHECK} -ne 0 ]]; then + yapf -i --style='{based_on_style: pep8, column_limit: 90}' $PYTHON_FILES_TO_CHECK + fi + popd + done } echo "Make sure commit all changes before running this checker." -check_tools +__Check_CPP=${CHECK_CPP:-"1"} +__Check_PYTHON=${CHECK_PYTHON:-"1"} DIRECTORIES_TO_BE_TESTED=() +DIRECTORIES_NOT_TO_BE_TESTED=() for DIR_TO_BE_TESTED in $(find -name '.FORMATCHECKED' -exec dirname {} \;); do DIRECTORIES_TO_BE_TESTED+=("$DIR_TO_BE_TESTED") done +for DIR_NOT_TO_BE_TESTED in $(find -name '.FORMATDENY' -exec dirname {} \;); do + DIRECTORIES_NOT_TO_BE_TESTED+=("$DIR_NOT_TO_BE_TESTED") +done + if [[ ${#DIRECTORIES_TO_BE_TESTED[@]} -eq 0 ]]; then echo "No directories to be checked" exit 0 fi -check_cpp_files $DIRECTORIES_TO_BE_TESTED -check_python_files $DIRECTORIES_TO_BE_TESTED +if [[ $__Check_CPP -ne 0 ]]; then + check_cpp_tool + check_cpp_files $DIRECTORIES_TO_BE_TESTED $DIRECTORIES_NOT_TO_BE_TESTED +fi + +if [[ $__Check_PYTHON -ne 0 ]]; then + check_python_tool + check_python_files $DIRECTORIES_TO_BE_TESTED $DIRECTORIES_NOT_TO_BE_TESTED +fi -git diff > format.patch +git diff --ignore-submodules > format.patch PATCHFILE_SIZE=$(stat -c%s format.patch) if [[ $PATCHFILE_SIZE -ne 0 ]]; then echo "[FAILED] Format checker failed and update code to follow convention." diff --git a/scripts/command/gen_coverage_report.sh b/scripts/command/gen_coverage_report.sh index 32177919a..cff7594cd 100755 --- a/scripts/command/gen_coverage_report.sh +++ b/scripts/command/gen_coverage_report.sh @@ -3,11 +3,14 @@ # This file is based on https://github.sec.samsung.net/STAR/nncc/pull/80 SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -NNFW_ROOT=$SCRIPT_ROOT/../.. +HOST_HOME=$SCRIPT_ROOT/../.. LCOV_PATH=$(command -v lcov) GENHTML_PATH=$(command -v genhtml) + +SRC_PREFIX=${SRC_PREFIX:-${DOCKER_HOME}} + if [[ -z "${LCOV_PATH}" ]]; then echo "ERROR: 'lcov' is not found" exit 255 @@ -21,7 +24,7 @@ fi OUTPUT_PATH="$1" if [[ -z "${OUTPUT_PATH}" ]]; then - OUTPUT_PATH="$NNFW_ROOT/coverage" + OUTPUT_PATH="$HOST_HOME/coverage" fi if [[ -e "${OUTPUT_PATH}" ]]; then @@ -40,17 +43,17 @@ FINAL_COVERAGE_INFO_PATH="${OUTPUT_PATH}/coverage.info" HTML_PATH="${OUTPUT_PATH}/html" COVERTURA_PATH="${OUTPUT_PATH}/nnfw_coverage.xml" -"${LCOV_PATH}" -c -d "${NNFW_ROOT}" -o "${RAW_COVERAGE_INFO_PATH}" -"${LCOV_PATH}" -e "${RAW_COVERAGE_INFO_PATH}" -o "${LIBS_COVERAGE_INFO_PATH}" '/home/libs/*' -"${LCOV_PATH}" -e "${RAW_COVERAGE_INFO_PATH}" -o "${INCLUDE_COVERAGE_INFO_PATH}" '/home/include/*' -"${LCOV_PATH}" -e "${RAW_COVERAGE_INFO_PATH}" -o "${RUNTIMES_COVERAGE_INFO_PATH}" '/home/runtimes/*' -"${LCOV_PATH}" -e "${RAW_COVERAGE_INFO_PATH}" -o "${TOOLS_COVERAGE_INFO_PATH}" '/home/tools/*' +"${LCOV_PATH}" -c -d "${HOST_HOME}" -o "${RAW_COVERAGE_INFO_PATH}" +"${LCOV_PATH}" -e "${RAW_COVERAGE_INFO_PATH}" -o "${LIBS_COVERAGE_INFO_PATH}" "${SRC_PREFIX}/libs/*" +"${LCOV_PATH}" -e "${RAW_COVERAGE_INFO_PATH}" -o "${INCLUDE_COVERAGE_INFO_PATH}" "${SRC_PREFIX}/include/*" +"${LCOV_PATH}" -e "${RAW_COVERAGE_INFO_PATH}" -o "${RUNTIMES_COVERAGE_INFO_PATH}" "${SRC_PREFIX}/runtimes/*" +"${LCOV_PATH}" -e "${RAW_COVERAGE_INFO_PATH}" -o "${TOOLS_COVERAGE_INFO_PATH}" "${SRC_PREFIX}/tools/*" "${LCOV_PATH}" -a "${LIBS_COVERAGE_INFO_PATH}" -a "${INCLUDE_COVERAGE_INFO_PATH}" \ -a "${RUNTIMES_COVERAGE_INFO_PATH}" -a "${TOOLS_COVERAGE_INFO_PATH}" \ -o "${FINAL_COVERAGE_INFO_PATH}" -"${LCOV_PATH}" -r "${FINAL_COVERAGE_INFO_PATH}" -o "${FINAL_COVERAGE_INFO_PATH}" '/home/runtimes/tests/*' -"${LCOV_PATH}" -r "${FINAL_COVERAGE_INFO_PATH}" -o "${FINAL_COVERAGE_INFO_PATH}" '/home/runtimes/nn/depend/*' -"${GENHTML_PATH}" "${FINAL_COVERAGE_INFO_PATH}" --output-directory "${HTML_PATH}" +"${LCOV_PATH}" -r "${FINAL_COVERAGE_INFO_PATH}" -o "${FINAL_COVERAGE_INFO_PATH}" "${SRC_PREFIX}/runtimes/tests/*" +"${LCOV_PATH}" -r "${FINAL_COVERAGE_INFO_PATH}" -o "${FINAL_COVERAGE_INFO_PATH}" "${SRC_PREFIX}/runtimes/nn/depend/*" +"${GENHTML_PATH}" "${FINAL_COVERAGE_INFO_PATH}" --output-directory "${HTML_PATH}" ${GENHTML_FLAG:-} tar -zcf "${OUTPUT_PATH}"/coverage_report.tar.gz "${HTML_PATH}" $SCRIPT_ROOT/lcov-to-covertura-xml.sh "${FINAL_COVERAGE_INFO_PATH}" -o "${COVERTURA_PATH}" diff --git a/scripts/command/nnfw_docker b/scripts/command/nnfw_docker new file mode 100644 index 000000000..211124105 --- /dev/null +++ b/scripts/command/nnfw_docker @@ -0,0 +1,14 @@ +DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker} + +echo "Using docker image $DOCKER_IMAGE_NAME" +if [[ "$(docker images -q $DOCKER_IMAGE_NAME 2> /dev/null)" == "" ]]; then + echo "Need docker image: $DOCKER_IMAGE_NAME" + exit 1 +fi + +DOCKER_HOME=/home/nnfw + +GIT_SSL_NO_VERIFY=1 +DOCKER_ENV_VARS+=" -e http_proxy" +DOCKER_ENV_VARS+=" -e no_proxy" +DOCKER_ENV_VARS+=" -e GIT_SSL_NO_VERIFY" diff --git a/scripts/command/nnfw_docker_tizen b/scripts/command/nnfw_docker_tizen new file mode 100644 index 000000000..f2fae9c97 --- /dev/null +++ b/scripts/command/nnfw_docker_tizen @@ -0,0 +1,14 @@ +DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker_tizen} + +echo "Using docker image $DOCKER_IMAGE_NAME" +if [[ "$(docker images -q $DOCKER_IMAGE_NAME 2> /dev/null)" == "" ]]; then + echo "Need docker image: $DOCKER_IMAGE_NAME" + exit 1 +fi + +DOCKER_HOME=/home/nnfw + +GIT_SSL_NO_VERIFY=1 +DOCKER_ENV_VARS+=" -e http_proxy" +DOCKER_ENV_VARS+=" -e no_proxy" +DOCKER_ENV_VARS+=" -e GIT_SSL_NO_VERIFY" diff --git a/scripts/command/run_coverity.sh b/scripts/command/run_coverity.sh new file mode 100755 index 000000000..2c4f9514b --- /dev/null +++ b/scripts/command/run_coverity.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# _COVERITY_USER, _COVERITY_PASSWORD, _COVERITY_STREAM and COVERITY_SCRIPT_DOWNLOAD_URL should be defined. +# XXX are used only in this script and _XXX are used in Coverity script. +if [ -z ${_COVERITY_STREAM+x} ]; then + echo "_COVERITY_STREAM is unset"; + exit 1 +else + echo "_COVERITY_STREAM is set to '$_COVERITY_STREAM'"; +fi + +if [ -z ${_COVERITY_USER+x} ]; then + echo "_COVERITY_USER is unset"; + exit 1 +else + echo "_COVERITY_USER is set to '$_COVERITY_USER'"; +fi + +if [ -z ${_COVERITY_PASSWORD+x} ]; then + echo "_COVERITY_PASSWORD is unset"; + exit 1 +else + echo "_COVERITY_PASSWORD is set to '$_COVERITY_PASSWORD'"; +fi + +if [ -z ${COVERITY_SCRIPT_DOWNLOAD_URL+x} ]; then + echo "COVERITY_SCRIPT_DOWNLOAD_URL is unset"; + exit 1 +else + echo "COVERITY_SCRIPT_DOWNLOAD_URL is set to '$COVERITY_SCRIPT_DOWNLOAD_URL'"; +fi + +# +# Set variables required for Coverity script +# + +SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HOST_HOME=$(readlink -f $SCRIPT_ROOT/../..) + +export _BUILD_PATH=$HOST_HOME +export _RUN_COVERITY_ROOT=$_BUILD_PATH/ci_coverity +mkdir -p $_RUN_COVERITY_ROOT + +export GBS_BUILDROOT=$_RUN_COVERITY_ROOT/GBS-ROOT/ +mkdir -p $GBS_BUILDROOT + +# Prepare gbs.conf for Coverity +sed -- 's/^buildroot = .*/buildroot = '${GBS_BUILDROOT//\//\\/}'/' < $SCRIPT_ROOT/gbs.conf > $SCRIPT_ROOT/gbs_coverity.conf +export _BUILD_CMD="gbs -c ${SCRIPT_ROOT}/gbs_coverity.conf build -A armv7l --profile=profile.tizen --clean-repo" +export _PROD_LOCATION=$GBS_BUILDROOT/local/repos/tizen/armv7l/RPMS + +export _COVERITY_BINARY_DIR=$_RUN_COVERITY_ROOT/coverity-binary +mkdir -p $_COVERITY_BINARY_DIR + +# Invoke Coverity script +pushd $_RUN_COVERITY_ROOT +wget $COVERITY_SCRIPT_DOWNLOAD_URL +popd +chmod +x $_RUN_COVERITY_ROOT/${COVERITY_SCRIPT_DOWNLOAD_URL##*/} +$_RUN_COVERITY_ROOT/${COVERITY_SCRIPT_DOWNLOAD_URL##*/} diff --git a/scripts/command/tizen_xu4_test.sh b/scripts/command/tizen_xu4_test.sh index bfebc352d..d56dae2b5 100755 --- a/scripts/command/tizen_xu4_test.sh +++ b/scripts/command/tizen_xu4_test.sh @@ -1,7 +1,7 @@ #!/bin/bash SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -NNFW_ROOT=$SCRIPT_ROOT/../.. +HOST_HOME=$SCRIPT_ROOT/../.. if [ -z "$TEST_ROOT" ]; then TEST_ROOT=/opt/usr/nnfw-test fi @@ -15,12 +15,16 @@ function Usage() echo "--unittest : run unittest" echo "--verification : run verification" echo "--framework : run framework" + echo "--gcov-dir : directory to save gcov files" } function prepare_rpm_test() { echo "======= Test with rpm packages(gbs build) =======" + # clean up + $SDB_CMD shell rm -rf $TEST_ROOT + $SDB_CMD shell mkdir -p $TEST_ROOT # install nnfw nnfw-test rpms for file in $RPM_DIR/* do @@ -29,7 +33,7 @@ function prepare_rpm_test() done # download tflite model files - pushd $NNFW_ROOT + pushd $HOST_HOME tests/framework/run_test.sh --download=on tar -zcf cache.tar.gz tests/framework/cache $SDB_CMD push cache.tar.gz $TEST_ROOT/. @@ -40,12 +44,16 @@ function prepare_rpm_test() function prepare_suite_test() { echo "======= Test with test-suite(cross build) =======" + # clean up + $SDB_CMD shell rm -rf $TEST_ROOT + $SDB_CMD shell mkdir -p $TEST_ROOT + # install test-suite $SDB_CMD push $TEST_SUITE_PATH $TEST_ROOT/$(basename $TEST_SUITE_PATH) $SDB_CMD shell tar -zxf $TEST_ROOT/$(basename $TEST_SUITE_PATH) -C $TEST_ROOT # download tflite model files - pushd $NNFW_ROOT + pushd $HOST_HOME tests/framework/run_test.sh --download=on tar -zcf cache.tar.gz tests/framework/cache $SDB_CMD push cache.tar.gz $TEST_ROOT/. @@ -77,6 +85,9 @@ do --framework) FRAMEWORK=on ;; + --gcov-dir=*) + GCOV_DIR=${i#*=} + ;; esac shift done @@ -133,3 +144,12 @@ if [ "$VERIFICATION" == "on" ]; then $SDB_CMD shell $TEST_ROOT/tools/test_driver/test_driver.sh --verification --artifactpath=$TEST_ROOT fi +# pull gcov files +if [ -n "$GCOV_DIR" ]; then + $SDB_CMD shell 'rm -rf /home/gcov && mkdir -p /home/gcov' + $SDB_CMD shell 'find / -type f \( -iname "*.gcda" -or -iname "*.gcno" \) -exec cp {} /home/gcov/. \;' + $SDB_CMD shell 'cd /home/ && tar -zcvf gcov.tar.gz ./gcov ' + cd $GCOV_DIR + sdb pull /home/gcov.tar.gz + tar -zxvf gcov.tar.gz +fi |