This is an automated email from the ASF dual-hosted git repository.
mousius pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new a9b1d5b Add sccache to docker images (#9844)
a9b1d5b is described below
commit a9b1d5b7f52c9998e61af757c966276e69da6fa0
Author: David Riazati <[email protected]>
AuthorDate: Wed Jan 19 10:48:59 2022 -0800
Add sccache to docker images (#9844)
---
docker/Dockerfile.ci_arm | 11 +++++++++++
docker/Dockerfile.ci_cpu | 8 ++++++++
docker/Dockerfile.ci_gpu | 8 ++++++++
docker/Dockerfile.ci_lint | 4 ++++
docker/Dockerfile.ci_qemu | 8 ++++++++
docker/install/ubuntu_install_rust.sh | 12 +-----------
...u_install_rust.sh => ubuntu_install_sccache.sh} | 22 +++++-----------------
..._install_rust.sh => ubuntu_install_wasmtime.sh} | 18 ++----------------
tests/scripts/ci.py | 9 +++++++++
9 files changed, 56 insertions(+), 44 deletions(-)
diff --git a/docker/Dockerfile.ci_arm b/docker/Dockerfile.ci_arm
index 49c60f8..73ff0ae 100644
--- a/docker/Dockerfile.ci_arm
+++ b/docker/Dockerfile.ci_arm
@@ -26,6 +26,17 @@ RUN apt-get install -y ca-certificates gnupg2
COPY install/ubuntu_install_core.sh /install/ubuntu_install_core.sh
RUN bash /install/ubuntu_install_core.sh
+# Rust env
+COPY install/ubuntu_install_rust.sh /install/ubuntu_install_rust.sh
+RUN bash /install/ubuntu_install_rust.sh
+ENV RUSTUP_HOME /opt/rust
+ENV CARGO_HOME /opt/rust
+ENV PATH $PATH:$CARGO_HOME/bin
+
+# sccache
+COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh
+RUN bash /install/ubuntu_install_sccache.sh
+
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
RUN bash /install/ubuntu_install_llvm.sh
diff --git a/docker/Dockerfile.ci_cpu b/docker/Dockerfile.ci_cpu
index b279f32..962d738 100644
--- a/docker/Dockerfile.ci_cpu
+++ b/docker/Dockerfile.ci_cpu
@@ -53,6 +53,10 @@ ENV RUSTUP_HOME /opt/rust
ENV CARGO_HOME /opt/rust
ENV PATH $PATH:$CARGO_HOME/bin
+# wasmtime
+COPY install/ubuntu_install_wasmtime.sh /install/ubuntu_install_wasmtime.sh
+RUN bash /install/ubuntu_install_wasmtime.sh
+
# AutoTVM deps
COPY install/ubuntu_install_redis.sh /install/ubuntu_install_redis.sh
RUN bash /install/ubuntu_install_redis.sh
@@ -126,3 +130,7 @@ ENV PATH
/opt/arm/gcc-arm-none-eabi/bin:/opt/arm/FVP_Corstone_SSE-300/models/Lin
# PaddlePaddle deps
COPY install/ubuntu_install_paddle.sh /install/ubuntu_install_paddle.sh
RUN bash /install/ubuntu_install_paddle.sh
+
+# sccache
+COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh
+RUN bash /install/ubuntu_install_sccache.sh
diff --git a/docker/Dockerfile.ci_gpu b/docker/Dockerfile.ci_gpu
index 47abfdc..d9ca255 100644
--- a/docker/Dockerfile.ci_gpu
+++ b/docker/Dockerfile.ci_gpu
@@ -101,6 +101,10 @@ ENV RUSTUP_HOME /opt/rust
ENV CARGO_HOME /opt/rust
ENV PATH $PATH:$CARGO_HOME/bin
+# wasmtime
+COPY install/ubuntu_install_wasmtime.sh /install/ubuntu_install_wasmtime.sh
+RUN bash /install/ubuntu_install_wasmtime.sh
+
# AutoTVM deps
COPY install/ubuntu_install_redis.sh /install/ubuntu_install_redis.sh
RUN bash /install/ubuntu_install_redis.sh
@@ -117,6 +121,10 @@ RUN bash /install/ubuntu_install_universal.sh
COPY install/ubuntu_install_papi.sh /install/ubuntu_install_papi.sh
RUN bash /install/ubuntu_install_papi.sh "cuda rocm"
+# sccache
+COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh
+RUN bash /install/ubuntu_install_sccache.sh
+
# Environment variables
ENV PATH=/usr/local/nvidia/bin:${PATH}
ENV PATH=/usr/local/cuda/bin:${PATH}
diff --git a/docker/Dockerfile.ci_lint b/docker/Dockerfile.ci_lint
index 3cd15e0..08d3ebf 100644
--- a/docker/Dockerfile.ci_lint
+++ b/docker/Dockerfile.ci_lint
@@ -41,6 +41,10 @@ ENV RUSTUP_HOME /opt/rust
ENV CARGO_HOME /opt/rust
ENV PATH $PATH:$CARGO_HOME/bin
+# wasmtime
+COPY install/ubuntu_install_wasmtime.sh /install/ubuntu_install_wasmtime.sh
+RUN bash /install/ubuntu_install_wasmtime.sh
+
# java deps for rat
COPY install/ubuntu_install_java.sh /install/ubuntu_install_java.sh
RUN bash /install/ubuntu_install_java.sh
diff --git a/docker/Dockerfile.ci_qemu b/docker/Dockerfile.ci_qemu
index c523a9c..bba4584 100644
--- a/docker/Dockerfile.ci_qemu
+++ b/docker/Dockerfile.ci_qemu
@@ -43,6 +43,10 @@ RUN bash /install/ubuntu_install_rust.sh
ENV RUSTUP_HOME /opt/rust
ENV CARGO_HOME /opt/rust
+# wasmtime
+COPY install/ubuntu_install_wasmtime.sh /install/ubuntu_install_wasmtime.sh
+RUN bash /install/ubuntu_install_wasmtime.sh
+
# AutoTVM deps
COPY install/ubuntu_install_redis.sh /install/ubuntu_install_redis.sh
RUN bash /install/ubuntu_install_redis.sh
@@ -59,6 +63,10 @@ RUN bash /install/ubuntu_install_tensorflow.sh
COPY install/ubuntu_install_tflite.sh /install/ubuntu_install_tflite.sh
RUN bash /install/ubuntu_install_tflite.sh
+# sccache
+COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh
+RUN bash /install/ubuntu_install_sccache.sh
+
# Zephyr SDK deps
COPY install/ubuntu_install_zephyr.sh /install/ubuntu_install_zephyr.sh
COPY install/ubuntu_init_zephyr_project.sh
/install/ubuntu_init_zephyr_project.sh
diff --git a/docker/install/ubuntu_install_rust.sh
b/docker/install/ubuntu_install_rust.sh
index c07c003..58f8256 100755
--- a/docker/install/ubuntu_install_rust.sh
+++ b/docker/install/ubuntu_install_rust.sh
@@ -16,10 +16,7 @@
# specific language governing permissions and limitations
# under the License.
-set -e
-set -u
-set -o pipefail
-
+set -euxo pipefail
export RUSTUP_HOME=/opt/rust
export CARGO_HOME=/opt/rust
@@ -29,12 +26,5 @@ export PATH=$CARGO_HOME/bin:$PATH
rustup component add rustfmt
rustup component add clippy
-# install wasmtime
-apt-get install -y --no-install-recommends libc6-dev-i386
-export WASMTIME_HOME=/opt/wasmtime
-curl https://wasmtime.dev/install.sh -sSf | bash
-export PATH="${WASMTIME_HOME}/bin:${PATH}"
-rustup target add wasm32-wasi
-
# make rust usable by all users
chmod -R a+w /opt/rust
diff --git a/docker/install/ubuntu_install_rust.sh
b/docker/install/ubuntu_install_sccache.sh
old mode 100755
new mode 100644
similarity index 57%
copy from docker/install/ubuntu_install_rust.sh
copy to docker/install/ubuntu_install_sccache.sh
index c07c003..79ce153
--- a/docker/install/ubuntu_install_rust.sh
+++ b/docker/install/ubuntu_install_sccache.sh
@@ -20,21 +20,9 @@ set -e
set -u
set -o pipefail
+cargo install sccache
-export RUSTUP_HOME=/opt/rust
-export CARGO_HOME=/opt/rust
-# this rustc is one supported by the installed version of rust-sgx-sdk
-curl -s -S -L https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path
--profile minimal --default-toolchain stable
-export PATH=$CARGO_HOME/bin:$PATH
-rustup component add rustfmt
-rustup component add clippy
-
-# install wasmtime
-apt-get install -y --no-install-recommends libc6-dev-i386
-export WASMTIME_HOME=/opt/wasmtime
-curl https://wasmtime.dev/install.sh -sSf | bash
-export PATH="${WASMTIME_HOME}/bin:${PATH}"
-rustup target add wasm32-wasi
-
-# make rust usable by all users
-chmod -R a+w /opt/rust
+# The docs specifically recommend hard links:
https://github.com/mozilla/sccache#known-caveats
+mkdir /opt/sccache
+ln "$(which sccache)" /opt/sccache/cc
+ln "$(which sccache)" /opt/sccache/c++
diff --git a/docker/install/ubuntu_install_rust.sh
b/docker/install/ubuntu_install_wasmtime.sh
old mode 100755
new mode 100644
similarity index 69%
copy from docker/install/ubuntu_install_rust.sh
copy to docker/install/ubuntu_install_wasmtime.sh
index c07c003..d1285b3
--- a/docker/install/ubuntu_install_rust.sh
+++ b/docker/install/ubuntu_install_wasmtime.sh
@@ -16,25 +16,11 @@
# specific language governing permissions and limitations
# under the License.
-set -e
-set -u
-set -o pipefail
+set -euxo pipefail
-
-export RUSTUP_HOME=/opt/rust
-export CARGO_HOME=/opt/rust
-# this rustc is one supported by the installed version of rust-sgx-sdk
-curl -s -S -L https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path
--profile minimal --default-toolchain stable
-export PATH=$CARGO_HOME/bin:$PATH
-rustup component add rustfmt
-rustup component add clippy
-
-# install wasmtime
+# install wasmtime (note: requires ubuntu_install_rust.sh to run first)
apt-get install -y --no-install-recommends libc6-dev-i386
export WASMTIME_HOME=/opt/wasmtime
curl https://wasmtime.dev/install.sh -sSf | bash
export PATH="${WASMTIME_HOME}/bin:${PATH}"
rustup target add wasm32-wasi
-
-# make rust usable by all users
-chmod -R a+w /opt/rust
diff --git a/tests/scripts/ci.py b/tests/scripts/ci.py
index 4161133..c9c3cc2 100644
--- a/tests/scripts/ci.py
+++ b/tests/scripts/ci.py
@@ -147,6 +147,15 @@ def docker(name: str, image: str, scripts: List[str], env:
Dict[str, str]):
"""
check_docker()
+ if os.getenv("USE_SCCACHE", "0") == "1":
+ scripts = [
+ "sccache --start-server",
+ ] + scripts
+ # Set the C/C++ compiler so CMake picks them up in the build
+ env["CC"] = "/opt/sccache/cc"
+ env["CXX"] = "/opt/sccache/c++"
+ env["SCCACHE_CACHE_SIZE"] = os.getenv("SCCACHE_CACHE_SIZE", "50G")
+
docker_bash = REPO_ROOT / "docker" / "bash.sh"
command = [docker_bash, "--name", name]
for key, value in env.items():