From 0bb8f5922ef70eef21d4025780235c4eed13544b Mon Sep 17 00:00:00 2001 From: He Sun Date: Mon, 2 Nov 2020 14:36:20 +0800 Subject: [PATCH] Use sccache to accelerate Rust build --- src/exec/Makefile | 10 ++++++++-- src/libos/Makefile | 10 ++++++++-- tools/docker/Dockerfile.centos7.5 | 3 ++- tools/docker/Dockerfile.centos8.1 | 3 ++- tools/docker/Dockerfile.ubuntu18.04 | 3 ++- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/exec/Makefile b/src/exec/Makefile index 3e8a022a..16d3baf1 100644 --- a/src/exec/Makefile +++ b/src/exec/Makefile @@ -8,12 +8,18 @@ EXEC_TARGET := $(RUST_OUT_DIR)/*occlum_exec* .PHONY: all clean +ifneq (, $(shell which sccache)) + RUSTC_WRAPPER := sccache +else + RUSTC_WRAPPER := +endif + all: $(SRC_FILES) ifeq ($(OCCLUM_RELEASE_BUILD), 1) - @RUSTC_BOOTSTRAP=1 cargo build --release --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) + @RUSTC_BOOTSTRAP=1 RUSTC_WRAPPER=$(RUSTC_WRAPPER) cargo build --release --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) @echo "CARGO (release) => exec" else - @RUSTC_BOOTSTRAP=1 cargo build --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) + @RUSTC_BOOTSTRAP=1 RUSTC_WRAPPER=$(RUSTC_WRAPPER) cargo build --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) @echo "CARGO (debug) => exec" endif diff --git a/src/libos/Makefile b/src/libos/Makefile index 8bea931c..d6c46912 100644 --- a/src/libos/Makefile +++ b/src/libos/Makefile @@ -106,13 +106,19 @@ $(LIBOS_CORE_A): $(LIBOS_CORE_RS_A) $(C_OBJS) $(CXX_OBJS) $(S_OBJS) $(EDL_C_OBJS @ar r $@ $(C_OBJS) $(CXX_OBJS) $(S_OBJS) $(EDL_C_OBJS) @echo "GEN => $@" +ifneq (, $(shell which sccache)) + RUSTC_WRAPPER := sccache +else + RUSTC_WRAPPER := +endif + ifeq ($(OCCLUM_RELEASE_BUILD), 1) $(LIBOS_CORE_RS_A): $(RUST_SRCS) - @RUSTC_BOOTSTRAP=1 cargo build --release --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) + @RUSTC_BOOTSTRAP=1 RUSTC_WRAPPER=$(RUSTC_WRAPPER) cargo build --release --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) @echo "CARGO (release) => $@" else $(LIBOS_CORE_RS_A): $(RUST_SRCS) - @RUSTC_BOOTSTRAP=1 cargo build --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) + @RUSTC_BOOTSTRAP=1 RUSTC_WRAPPER=$(RUSTC_WRAPPER) cargo build --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) @echo "CARGO (debug) => $@" endif diff --git a/tools/docker/Dockerfile.centos7.5 b/tools/docker/Dockerfile.centos7.5 index cb36469b..47dc8a35 100644 --- a/tools/docker/Dockerfile.centos7.5 +++ b/tools/docker/Dockerfile.centos7.5 @@ -93,7 +93,8 @@ ENV OCCLUM_RUST_VERSION=nightly-2020-04-07 RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain ${OCCLUM_RUST_VERSION} -y && \ rm -rf /root/.cargo/registry && rm -rf /root/.cargo/git && \ - cargo -V + cargo -V && \ + cargo install sccache # Install Occlum toolchain COPY toolchains/gcc /tmp/gcc diff --git a/tools/docker/Dockerfile.centos8.1 b/tools/docker/Dockerfile.centos8.1 index 1789d141..75e1e382 100644 --- a/tools/docker/Dockerfile.centos8.1 +++ b/tools/docker/Dockerfile.centos8.1 @@ -63,7 +63,8 @@ ENV OCCLUM_RUST_VERSION=nightly-2020-09-08 RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain ${OCCLUM_RUST_VERSION} -y && \ rm -rf /root/.cargo/registry && rm -rf /root/.cargo/git && \ - cargo -V + cargo -V && \ + cargo install sccache # Install Occlum toolchain COPY toolchains/gcc /tmp/gcc diff --git a/tools/docker/Dockerfile.ubuntu18.04 b/tools/docker/Dockerfile.ubuntu18.04 index 0d30a53e..291b4662 100644 --- a/tools/docker/Dockerfile.ubuntu18.04 +++ b/tools/docker/Dockerfile.ubuntu18.04 @@ -75,7 +75,8 @@ ENV OCCLUM_RUST_VERSION=nightly-2020-09-08 RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain ${OCCLUM_RUST_VERSION} -y && \ rm -rf /root/.cargo/registry && rm -rf /root/.cargo/git && \ - cargo -V + cargo -V && \ + cargo install sccache # Install Occlum toolchain COPY toolchains/gcc /tmp/gcc