From 249e0d06208faa8d8ef6cfb7b0ccd202bbb232fd Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Wed, 26 Aug 2020 11:09:20 -0700 Subject: [PATCH 01/21] improve docker/bash.sh workflow * properly quote command-line arguments * mount repo at $(pwd) by default; fixes problems when using git-worktree. --- docker/bash.sh | 34 ++++++++++++++++++++++++++-------- docker/with_the_same_user | 2 +- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/docker/bash.sh b/docker/bash.sh index 73bfb12268f3..5c425e2364ab 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -26,6 +26,23 @@ # Usage2: docker/bash.sh [COMMAND] # Execute command in the docker image, non-interactive # +interactive=0 +if [ "$1" == "-i" ]; then + interactive=1 + shift +fi + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +WORKSPACE="$(pwd)" + +if [ "$1" == "--repo-mount-point" ]; then + shift + REPO_MOUNT_POINT="$1" + shift +else + REPO_MOUNT_POINT="${WORKSPACE}" +fi + if [ "$#" -lt 1 ]; then echo "Usage: docker/bash.sh [COMMAND]" exit -1 @@ -47,8 +64,9 @@ else COMMAND=("$@") fi -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -WORKSPACE="$(pwd)" +if [ $interactive -eq 1 ]; then + CI_DOCKER_EXTRA_PARAMS=( "${CI_DOCKER_EXTRA_PARAMS[@]}" -it ) +fi # Use nvidia-docker if the container is GPU. if [[ ! -z $CUDA_VISIBLE_DEVICES ]]; then @@ -70,7 +88,7 @@ else fi if [[ "${DOCKER_IMAGE_NAME}" == *"ci"* ]]; then - CI_PY_ENV="-e PYTHONPATH=/workspace/python" + CI_PY_ENV="-e PYTHONPATH=${WORKSPACE_MOUNT_POINT}/python" else CI_PY_ENV="" fi @@ -94,12 +112,12 @@ fi # By default we cleanup - remove the container once it finish running (--rm) # and share the PID namespace (--pid=host) so the process inside does not have # pid 1 and SIGKILL is propagated to the process inside (jenkins can kill it). -${DOCKER_BINARY} run --rm --pid=host\ - -v ${WORKSPACE}:/workspace \ +${DOCKER_BINARY} run --rm --pid=host \ + -v ${WORKSPACE}:${REPO_MOUNT_POINT} \ -v ${SCRIPT_DIR}:/docker \ "${EXTRA_MOUNTS[@]}" \ - -w /workspace \ - -e "CI_BUILD_HOME=/workspace" \ + -w "${REPO_MOUNT_POINT}" \ + -e "CI_BUILD_HOME=${REPO_MOUNT_POINT}" \ -e "CI_BUILD_USER=$(id -u -n)" \ -e "CI_BUILD_UID=$(id -u)" \ -e "CI_BUILD_GROUP=$(id -g -n)" \ @@ -110,4 +128,4 @@ ${DOCKER_BINARY} run --rm --pid=host\ ${CI_DOCKER_EXTRA_PARAMS[@]} \ ${DOCKER_IMAGE_NAME} \ bash --login /docker/with_the_same_user \ - ${COMMAND[@]} + "${COMMAND[@]}" diff --git a/docker/with_the_same_user b/docker/with_the_same_user index 054edc18dfcc..2bcbb6f49201 100644 --- a/docker/with_the_same_user +++ b/docker/with_the_same_user @@ -57,4 +57,4 @@ JAVA_HOME=${JAVA_HOME} \ LD_LIBRARY_PATH=${LD_LIBRARY_PATH} \ PYTHONPATH=${PYTHONPATH} \ HOME=${CI_BUILD_HOME} \ -${COMMAND[@]} +"${COMMAND[@]}" From 05723a2661bbdcba4caec167b0ee801514e55d83 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Wed, 26 Aug 2020 11:12:43 -0700 Subject: [PATCH 02/21] fix sync bug --- docker/bash.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/bash.sh b/docker/bash.sh index 5c425e2364ab..259cf17f9449 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -88,7 +88,7 @@ else fi if [[ "${DOCKER_IMAGE_NAME}" == *"ci"* ]]; then - CI_PY_ENV="-e PYTHONPATH=${WORKSPACE_MOUNT_POINT}/python" + CI_PY_ENV="-e PYTHONPATH=${REPO_MOUNT_POINT}/python" else CI_PY_ENV="" fi From a39595463bd7e72b2f1884fcf0cdd45160f17f90 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Mon, 31 Aug 2020 12:49:58 -0700 Subject: [PATCH 03/21] fix no-arg bug with port forwards --- docker/bash.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/bash.sh b/docker/bash.sh index a83c30006b4b..0df80bfd79ac 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -58,7 +58,7 @@ if [ "$#" -eq 1 ]; then if [[ $(uname) == "Darwin" ]]; then # Docker's host networking driver isn't supported on macOS. # Use default bridge network and expose port for jupyter notebook. - CI_DOCKER_EXTRA_PARAMS=( "${CI_DOCKER_EXTRA_PARAMS[@]}" "-p 8888:8888" ) + CI_DOCKER_EXTRA_PARAMS=( "${CI_DOCKER_EXTRA_PARAMS[@]}" "-p" "8888:8888" ) else CI_DOCKER_EXTRA_PARAMS=( "${CI_DOCKER_EXTRA_PARAMS[@]}" "--net=host" ) fi From 29bca0d81df6f36bf1103c7bfadcaaaa6a05b7fb Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Mon, 31 Aug 2020 12:50:16 -0700 Subject: [PATCH 04/21] lookup docker image name shorthand --- docker/bash.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docker/bash.sh b/docker/bash.sh index 0df80bfd79ac..d2bc1bae64b1 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -27,6 +27,11 @@ # Execute command in the docker image, default non-interactive # With -i, execute interactively. # + +set -e + +source "$(dirname $0)/dev_common.sh" || exit 2 + interactive=0 if [ "$1" == "-i" ]; then interactive=1 @@ -49,7 +54,15 @@ if [ "$#" -lt 1 ]; then exit -1 fi -DOCKER_IMAGE_NAME=("$1") +DOCKER_IMAGE_NAME=$(lookup_image_name "$1" || echo) +if [ -z "${DOCKER_IMAGE_NAME}" ]; then + if echo "$1" | grep -qv '/'; then + echo "error: can't find shorthand image $1 in Jenkinsfile" + exit 2 + else + DOCKER_IMAGE_NAME="$1" + fi +fi CI_DOCKER_EXTRA_PARAMS=( ) if [ "$#" -eq 1 ]; then From 4480eb3a831288cfe6f8e9e4fa787b0eb22aa266 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Mon, 31 Aug 2020 12:58:10 -0700 Subject: [PATCH 05/21] add back dev_common from bad rebase --- docker/dev_common.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docker/dev_common.sh b/docker/dev_common.sh index 559a66469e37..5f3c7018742e 100644 --- a/docker/dev_common.sh +++ b/docker/dev_common.sh @@ -28,13 +28,23 @@ INVOCATION_PWD="$(pwd)" GIT_TOPLEVEL=$(cd $(dirname ${BASH_SOURCE[0]}) && git rev-parse --show-toplevel) +function lookup_image_name() { + local image_name=$(cat "${GIT_TOPLEVEL}/Jenkinsfile" | \ + grep -E "^$1 = " | \ + sed -E "s/$1 = \"([^\"]*)\"/\1/") + if [ -z "${image_name}" ]; then + return 2 + fi + + echo "${image_name}" +} + + function run_docker() { image_name="$1" # Name of the Jenkinsfile var to find shift - image_spec=$(cat "${GIT_TOPLEVEL}/Jenkinsfile" | \ - grep -E "^${image_name} = " | \ - sed -E "s/${image_name} = \"([^\"]*)\"/\1/") + image_spec=$(lookup_image_name "$1" || echo) if [ -z "${image_spec}" ]; then echo "${image_name}: not found in ${GIT_TOPLEVEL}/Jenkinsfile" >&2 exit 2 From 4a1747f04a9b806ec807d7fba55fe1d7c0664b93 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Mon, 31 Aug 2020 21:07:49 -0700 Subject: [PATCH 06/21] retrigger CI, can't repro failure locally From 8bba18fe97afef49af124ce41c825dff9c78555d Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Tue, 1 Sep 2020 10:39:19 -0700 Subject: [PATCH 07/21] escape image name to avoid sed error message --- docker/dev_common.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/dev_common.sh b/docker/dev_common.sh index 5f3c7018742e..c1b6b7e3a7b5 100644 --- a/docker/dev_common.sh +++ b/docker/dev_common.sh @@ -29,9 +29,10 @@ GIT_TOPLEVEL=$(cd $(dirname ${BASH_SOURCE[0]}) && git rev-parse --show-toplevel) function lookup_image_name() { + escaped_image_name=$(echo "$1" | sed -E 's/\//\\\//g') local image_name=$(cat "${GIT_TOPLEVEL}/Jenkinsfile" | \ - grep -E "^$1 = " | \ - sed -E "s/$1 = \"([^\"]*)\"/\1/") + grep -E "^${escaped_image_name} = " | \ + sed -E "s/${escaped_image_name} = \"([^\"]*)\"/\1/") if [ -z "${image_name}" ]; then return 2 fi From 205e76360884c016f4c374216c0ee55b0ea80b2d Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Tue, 1 Sep 2020 10:39:37 -0700 Subject: [PATCH 08/21] debug CI --- tests/scripts/task_rust.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/scripts/task_rust.sh b/tests/scripts/task_rust.sh index d7b9a5b74406..f48f498b25f0 100755 --- a/tests/scripts/task_rust.sh +++ b/tests/scripts/task_rust.sh @@ -18,8 +18,10 @@ set -e set -u +set -x export TVM_HOME="$(git rev-parse --show-toplevel)" +echo "TVM_HOME=${TVM_HOME}" export LD_LIBRARY_PATH="$TVM_HOME/lib:$TVM_HOME/build:${LD_LIBRARY_PATH:-}" export PYTHONPATH="$TVM_HOME/python" From c443a624df949f5343f2dde74cf3cb00b5011959 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Tue, 1 Sep 2020 13:05:55 -0700 Subject: [PATCH 09/21] more debugging --- rust/tvm-sys/build.rs | 2 ++ tests/scripts/task_rust.sh | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/rust/tvm-sys/build.rs b/rust/tvm-sys/build.rs index 01d2934855c9..b8381b3d4d6e 100644 --- a/rust/tvm-sys/build.rs +++ b/rust/tvm-sys/build.rs @@ -24,6 +24,8 @@ use std::path::PathBuf; use std::env; fn main() { + println!("cargo:warning=tvm_home is {:?}", option_env!("TVM_HOME")); + println!("cargo:warning=cargo_manifest_dir is {:?}", option_env!("CARGO_MANIFEST_DIR")); let tvm_home = option_env!("TVM_HOME").map(str::to_string).unwrap_or({ let crate_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")) .canonicalize() diff --git a/tests/scripts/task_rust.sh b/tests/scripts/task_rust.sh index f48f498b25f0..3494eac0ff21 100755 --- a/tests/scripts/task_rust.sh +++ b/tests/scripts/task_rust.sh @@ -38,12 +38,14 @@ export TVM_BIND_THREADS=0 export OMP_NUM_THREADS=1 cd $RUST_DIR -cargo fmt -- --check +#cargo fmt -- --check # First we test tvm-sys the core Rust bindings. cd $RUST_DIR/tvm-sys # First we test w/o the bindings feature on. -cargo build +pwd +RUST_BACKTRACE=1 cargo build +exit 2 cargo test --tests # Second we test w/ the bindings feature on. From b2f4ab82bcd8a33b6c0357e05503d8e898ce2760 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Tue, 1 Sep 2020 13:45:22 -0700 Subject: [PATCH 10/21] bisect... --- rust/tvm-sys/build.rs | 5 ++++- tests/scripts/task_rust.sh | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/rust/tvm-sys/build.rs b/rust/tvm-sys/build.rs index b8381b3d4d6e..11ad509dfc50 100644 --- a/rust/tvm-sys/build.rs +++ b/rust/tvm-sys/build.rs @@ -25,7 +25,10 @@ use std::env; fn main() { println!("cargo:warning=tvm_home is {:?}", option_env!("TVM_HOME")); - println!("cargo:warning=cargo_manifest_dir is {:?}", option_env!("CARGO_MANIFEST_DIR")); + println!( + "cargo:warning=cargo_manifest_dir is {:?}", + option_env!("CARGO_MANIFEST_DIR") + ); let tvm_home = option_env!("TVM_HOME").map(str::to_string).unwrap_or({ let crate_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")) .canonicalize() diff --git a/tests/scripts/task_rust.sh b/tests/scripts/task_rust.sh index 3494eac0ff21..e38cfcb6bb48 100755 --- a/tests/scripts/task_rust.sh +++ b/tests/scripts/task_rust.sh @@ -38,14 +38,13 @@ export TVM_BIND_THREADS=0 export OMP_NUM_THREADS=1 cd $RUST_DIR -#cargo fmt -- --check +cargo fmt -- --check # First we test tvm-sys the core Rust bindings. cd $RUST_DIR/tvm-sys # First we test w/o the bindings feature on. pwd RUST_BACKTRACE=1 cargo build -exit 2 cargo test --tests # Second we test w/ the bindings feature on. From 71352ce8ce050e1953b60a72adea19198450064e Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Tue, 1 Sep 2020 15:33:18 -0700 Subject: [PATCH 11/21] more debugging --- Jenkinsfile | 10 +++++----- rust/tvm-graph-rt/tests/test_tvm_basic/build.rs | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3ce5b604b86a..5a340e5c2a0f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -162,11 +162,11 @@ stage('Build') { make(ci_cpu, 'build', '-j2') pack_lib('cpu', tvm_multilib) timeout(time: max_time, unit: 'MINUTES') { - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" - sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" +# sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" +# sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh" +# sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_fsim.sh" +# sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_vta_tsim.sh" +# sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" sh "${docker_run} ${ci_cpu} ./tests/scripts/task_rust.sh" } } diff --git a/rust/tvm-graph-rt/tests/test_tvm_basic/build.rs b/rust/tvm-graph-rt/tests/test_tvm_basic/build.rs index ade9e0297c9e..1d3227c1dbea 100644 --- a/rust/tvm-graph-rt/tests/test_tvm_basic/build.rs +++ b/rust/tvm-graph-rt/tests/test_tvm_basic/build.rs @@ -29,7 +29,8 @@ fn main() { out_dir.push("lib"); if !out_dir.is_dir() { - std::fs::create_dir(&out_dir).unwrap(); + println!("cargo:warning=mkdir out_dir: {:?}", out_dir.to_str()); + std::fs::create_dir_all(&out_dir).unwrap(); } let obj_file = out_dir.join("test.o"); From aa8089a4617bf7aa6926f44ba3afe2788b87e244 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Tue, 1 Sep 2020 20:04:28 -0700 Subject: [PATCH 12/21] create_dir_all everywhere --- rust/tvm-graph-rt/tests/test_tvm_dso/build.rs | 1 + rust/tvm-graph-rt/tests/test_wasm32/build.rs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/rust/tvm-graph-rt/tests/test_tvm_dso/build.rs b/rust/tvm-graph-rt/tests/test_tvm_dso/build.rs index f1d9822b01a5..708d94b0d76e 100644 --- a/rust/tvm-graph-rt/tests/test_tvm_dso/build.rs +++ b/rust/tvm-graph-rt/tests/test_tvm_dso/build.rs @@ -21,6 +21,7 @@ use std::{env, path::Path, process::Command}; fn main() { let out_dir = env::var("OUT_DIR").unwrap(); + std::fs::create_dir_all(&out_dir).unwrap(); let output = Command::new(concat!( env!("CARGO_MANIFEST_DIR"), diff --git a/rust/tvm-graph-rt/tests/test_wasm32/build.rs b/rust/tvm-graph-rt/tests/test_wasm32/build.rs index 5c816c336825..e5b742e679df 100644 --- a/rust/tvm-graph-rt/tests/test_wasm32/build.rs +++ b/rust/tvm-graph-rt/tests/test_wasm32/build.rs @@ -26,7 +26,7 @@ fn main() -> Result<()> { out_dir.push("lib"); if !out_dir.is_dir() { - std::fs::create_dir(&out_dir).context("failed to create directory for WASM outputs")?; + std::fs::create_dir_all(&out_dir).context("failed to create directory for WASM outputs")?; } let obj_file = out_dir.join("test.o"); From 9a27e7a7b081d59c5610d783304e7f995d829259 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Fri, 4 Sep 2020 14:04:19 -0700 Subject: [PATCH 13/21] print more debugging --- rust/tvm/tests/basics/build.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rust/tvm/tests/basics/build.rs b/rust/tvm/tests/basics/build.rs index 99e412c5c46a..e8b860dfad28 100644 --- a/rust/tvm/tests/basics/build.rs +++ b/rust/tvm/tests/basics/build.rs @@ -18,6 +18,11 @@ */ fn main() { + println!("cargo:warning=tvm_home is {:?}", option_env!("TVM_HOME")); + println!( + "cargo:warning=cargo_manifest_dir is {:?}", + option_env!("CARGO_MANIFEST_DIR") + ); let out_dir = std::env::var("OUT_DIR").unwrap(); let tvm_mk_add = concat!(env!("CARGO_MANIFEST_DIR"), "/src/tvm_add.py"); From 55b86518ca32308d4456aa8b6698e599ee824292 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Fri, 4 Sep 2020 14:04:32 -0700 Subject: [PATCH 14/21] don't lookup in Jenkinsfile when image contains : --- docker/bash.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/bash.sh b/docker/bash.sh index d2bc1bae64b1..a4e7046d08c2 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -56,7 +56,7 @@ fi DOCKER_IMAGE_NAME=$(lookup_image_name "$1" || echo) if [ -z "${DOCKER_IMAGE_NAME}" ]; then - if echo "$1" | grep -qv '/'; then + if echo "$1" | grep -qvE ':|/'; then echo "error: can't find shorthand image $1 in Jenkinsfile" exit 2 else From 7557f312a363e0ea283d2b2724ac182c8af5b2a1 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Sun, 13 Sep 2020 11:13:48 -0700 Subject: [PATCH 15/21] test --- tests/scripts/task_python_docs_minimal.sh | 85 +++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 tests/scripts/task_python_docs_minimal.sh diff --git a/tests/scripts/task_python_docs_minimal.sh b/tests/scripts/task_python_docs_minimal.sh new file mode 100755 index 000000000000..c239abb7bc9d --- /dev/null +++ b/tests/scripts/task_python_docs_minimal.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +set -e +set -u + +source tests/scripts/setup-pytest-env.sh + +# to avoid CI CPU thread throttling. +export TVM_BIND_THREADS=0 +export OMP_NUM_THREADS=4 + +cleanup() +{ + rm -rf /tmp/$$.log.txt +} +trap cleanup 0 + +# cleanup old states +rm -rf docs/_build +mkdir -p docs/_build/html +rm -rf docs/gen_modules +rm -rf docs/doxygen + +# remove stale tutorials and always build from scratch. +rm -rf docs/tutorials +rm -rf docs/vta/tutorials + +# cleanup stale log files +find . -type f -path "*.log" | xargs rm -f +find . -type f -path "*.pyc" | xargs rm -f +make cython3 + +cd docs +PYTHONPATH=`pwd`/../python make html |& tee /tmp/$$.log.txt +if grep -E "failed to execute" < /tmp/$$.log.txt; then + echo "Some of sphinx-gallery item example failed to execute." + exit 1 +fi +cd .. + +# C++ doc +make doc +rm -f docs/doxygen/html/*.map docs/doxygen/html/*.md5 + +# Java doc +make javadoc + +# type doc +cd web +npm install +npm run typedoc +cd .. + +# Prepare the doc dir +rm -rf _docs +mv docs/_build/html _docs +rm -f _docs/.buildinfo +mkdir -p _docs/api +mv docs/doxygen/html _docs/api/doxygen +mv jvm/core/target/site/apidocs _docs/api/javadoc +mv web/dist/docs _docs/api/typedoc + +echo "Start creating the docs tarball.." +# make the tarball +tar -C _docs -czf docs.tgz . +echo "Finish creating the docs tarball" +du -h docs.tgz + +echo "Finish everything" From e8f0b61515b3e14e9eac4b1af75d21cdcb00aa16 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Thu, 1 Oct 2020 10:03:39 -0700 Subject: [PATCH 16/21] add bash and docs changes --- docker/bash.sh | 27 +++++++++++++++++++-------- docs/install/docker.rst | 3 ++- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/docker/bash.sh b/docker/bash.sh index 33506e683690..9fe9e84597e9 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -23,9 +23,10 @@ # Usage: docker/bash.sh # Starts an interactive session # -# Usage2: docker/bash.sh [-i] [COMMAND] +# Usage2: docker/bash.sh [-i|--interactive|--non-interactive] [COMMAND] # Execute command in the docker image, default non-interactive -# With -i, execute interactively. +# With -i or --interactive, or in their absence, a tty, execute interactively. +# With --non-interactive, execute non-interactively. # set -e @@ -33,10 +34,20 @@ set -e source "$(dirname $0)/dev_common.sh" || exit 2 interactive=0 -if [ "$1" == "-i" ]; then - interactive=1 - shift -fi +case "$1" in + "-i" | "--interactive") + interactive=1 + shift + ;; + "--non-interactive") + shift + ;; + *) + if [ -n "$(tty)" ]; then + interactive=1 + fi + ;; +esac SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" WORKSPACE="$(pwd)" @@ -50,8 +61,8 @@ else fi if [ "$#" -lt 1 ]; then - echo "Usage: docker/bash.sh [-i] [COMMAND]" - exit -1 + echo "Usage: $0 [-i|--interactive|--non-interactive] [COMMAND]" + exit 2 fi DOCKER_IMAGE_NAME=$(lookup_image_name "$1" || echo) diff --git a/docs/install/docker.rst b/docs/install/docker.rst index b77e122a7713..8656502bdca4 100644 --- a/docs/install/docker.rst +++ b/docs/install/docker.rst @@ -38,10 +38,11 @@ We can then use the following command to launch a docker image. /path/to/tvm/docker/bash.sh Here the image-name can be a local docker image name, e.g. `tvm.ci_cpu` after you have done the local build. +It can also be an alias (e.g. `ci_cpu`) defined in the `Jenkinsfile` at the root of the repository. This auxiliary script does the following things: -- Mount current directory to /workspace +- Mount current directory into the docker container (`-v $(pwd):$(pwd)`) - Switch user to be the same user that calls the bash.sh (so you can read/write host system) - Use the host-side network on Linux. Use the bridge network and expose port 8888 on macOS, because host networking driver isn't supported. (so you can use jupyter notebook) From 7fc2c69d662b108cf7da67e75ca156d5c0ea8d6c Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Thu, 1 Oct 2020 10:03:47 -0700 Subject: [PATCH 17/21] more debugging --- rust/tvm-sys/build.rs | 2 ++ tests/scripts/task_rust.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rust/tvm-sys/build.rs b/rust/tvm-sys/build.rs index 05806c0d5ce0..e985b61088a5 100644 --- a/rust/tvm-sys/build.rs +++ b/rust/tvm-sys/build.rs @@ -57,6 +57,8 @@ fn main() -> Result<()> { .to_string()) })?; + println!("cargo:warning=tvm_home={}; TVM_HOME={:?}; CARGO_MANIFEST_DIR={:?}", tvm_home, option_env!("TVM_HOME"), option_env!("CARGO_MANIFEST_DIR")); + if cfg!(feature = "bindings") { println!("cargo:rerun-if-env-changed=TVM_HOME"); println!("cargo:rustc-link-lib=dylib=tvm"); diff --git a/tests/scripts/task_rust.sh b/tests/scripts/task_rust.sh index e38cfcb6bb48..eecab59ab899 100755 --- a/tests/scripts/task_rust.sh +++ b/tests/scripts/task_rust.sh @@ -38,7 +38,7 @@ export TVM_BIND_THREADS=0 export OMP_NUM_THREADS=1 cd $RUST_DIR -cargo fmt -- --check +#cargo fmt -- --check # First we test tvm-sys the core Rust bindings. cd $RUST_DIR/tvm-sys From bea046f102052422d8a3e8b4e39dc6ac85c812cb Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Thu, 1 Oct 2020 10:53:09 -0700 Subject: [PATCH 18/21] allow tty program to error --- docker/bash.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/bash.sh b/docker/bash.sh index 9fe9e84597e9..87f87407b273 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -43,7 +43,7 @@ case "$1" in shift ;; *) - if [ -n "$(tty)" ]; then + if [ -n "$(tty || /bin/true)" ]; then interactive=1 fi ;; From d4aac5b229bc08f7d6f6442f319d0238dc2ace33 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Thu, 1 Oct 2020 12:46:07 -0700 Subject: [PATCH 19/21] fail check_asf_header when rat exits non-zero --- tests/lint/check_asf_header.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/lint/check_asf_header.sh b/tests/lint/check_asf_header.sh index cd5fe6474c76..abae016b4c79 100755 --- a/tests/lint/check_asf_header.sh +++ b/tests/lint/check_asf_header.sh @@ -31,7 +31,9 @@ if [ "$1" == "--local" ]; then filter_untracked=1 fi +set -o pipefail java -jar /bin/apache-rat.jar -E tests/lint/rat-excludes -d . | (grep -E "^== File" >"${rat_output}" || true) +set +o pipefail # Rat can't be configured to ignore untracked files, so filter them. if [ ${filter_untracked} -eq 1 ]; then From 1a9089f0dc4abae400a4ccb16c5745cb19b2c5e4 Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Thu, 1 Oct 2020 12:47:25 -0700 Subject: [PATCH 20/21] fix lint script --- docker/dev_common.sh | 2 +- docker/lint.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docker/dev_common.sh b/docker/dev_common.sh index c1b6b7e3a7b5..1076f28d245f 100644 --- a/docker/dev_common.sh +++ b/docker/dev_common.sh @@ -45,7 +45,7 @@ function run_docker() { image_name="$1" # Name of the Jenkinsfile var to find shift - image_spec=$(lookup_image_name "$1" || echo) + image_spec=$(lookup_image_name "${image_name}" || echo) if [ -z "${image_spec}" ]; then echo "${image_name}: not found in ${GIT_TOPLEVEL}/Jenkinsfile" >&2 exit 2 diff --git a/docker/lint.sh b/docker/lint.sh index 82bfdf343cb1..44bd4c755266 100755 --- a/docker/lint.sh +++ b/docker/lint.sh @@ -16,7 +16,6 @@ # specific language governing permissions and limitations # under the License. - source "$(dirname $0)/dev_common.sh" DEFAULT_STEPS=( file_type asf cpplint clang_format pylint jnilint cppdocs ) From 5efe378c3eae1a495cabdd4f8648d914d725172a Mon Sep 17 00:00:00 2001 From: Andrew Reusch Date: Thu, 1 Oct 2020 12:47:35 -0700 Subject: [PATCH 21/21] fix command-line parsing --- docker/bash.sh | 49 ++++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/docker/bash.sh b/docker/bash.sh index 87f87407b273..f1c1061618f6 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -33,32 +33,35 @@ set -e source "$(dirname $0)/dev_common.sh" || exit 2 -interactive=0 -case "$1" in - "-i" | "--interactive") - interactive=1 - shift - ;; - "--non-interactive") - shift - ;; - *) - if [ -n "$(tty || /bin/true)" ]; then - interactive=1 - fi - ;; -esac - SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" WORKSPACE="$(pwd)" +REPO_MOUNT_POINT="${WORKSPACE}" -if [ "$1" == "--repo-mount-point" ]; then - shift - REPO_MOUNT_POINT="$1" - shift -else - REPO_MOUNT_POINT="${WORKSPACE}" -fi + +interactive=0 +parsing_opts=1 +while [ ${parsing_opts} -eq 1 ]; do + case "$1" in + "-i" | "--interactive") + interactive=1 + shift + ;; + "--non-interactive") + shift + ;; + "--repo-mount-point") + shift + REPO_MOUNT_POINT="$1" + shift + ;; + *) + if [ -t 0 ]; then + interactive=1 + fi + parsing_opts=0 + ;; + esac +done if [ "$#" -lt 1 ]; then echo "Usage: $0 [-i|--interactive|--non-interactive] [COMMAND]"