From 4ac4593192fda74ba065d5421ae3551b811c9973 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Thu, 3 Jul 2025 13:21:08 +0000 Subject: [PATCH] Support build with sccache in podman --- mk/config.mk | 19 ++++++++++++++++++- podman/rustinstall.sh | 3 +++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/mk/config.mk b/mk/config.mk index 1dc21d9b5..c1b43a7a7 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -31,6 +31,8 @@ HOST_CARGO=env -u RUSTUP_TOOLCHAIN -u CC -u TARGET cargo REDOXFS_MKFS_FLAGS?= ## Set to 1 to enable Podman build, any other value will disable it PODMAN_BUILD?=1 +## Enable sccache to speed up cargo builds +SSCACHE_BUILD?=1 ## The containerfile to use for the Podman base image CONTAINERFILE?=podman/redox-base-containerfile @@ -41,9 +43,17 @@ export REDOX_MAKE=make ifneq ($(PODMAN_BUILD),1) HOST_TARGET := $(shell env -u RUSTUP_TOOLCHAIN rustc -vV | grep host | cut -d: -f2 | tr -d " ") ifneq ($(HOST_TARGET),x86_64-unknown-linux-gnu) - # The binary prefix is only built for x86_64 Linux hosts + $(info The binary prefix is only built for x86_64 Linux hosts) PREFIX_BINARY=0 endif + +ifeq ($(SSCACHE_BUILD),1) +ifeq (,$(shell command -v sccache)) + $(info sccache not found in PATH) + SSCACHE_BUILD=0 +endif +endif + endif UNAME := $(shell uname) @@ -112,6 +122,13 @@ RANLIB=$(GNU_TARGET)-gcc-ranlib READELF=$(GNU_TARGET)-readelf STRIP=$(GNU_TARGET)-strip +ifeq ($(SSCACHE_BUILD),1) + CC_WRAPPER:=sccache + CC=$(CC_WRAPPER) $(GNU_TARGET)-gcc + CXX=$(CC_WRAPPER) $(GNU_TARGET)-g++ + export RUSTC_WRAPPER:=$(CC_WRAPPER) +endif + ## Rust cross compile variables export AR_$(subst -,_,$(TARGET)):=$(AR) export CC_$(subst -,_,$(TARGET)):=$(CC) diff --git a/podman/rustinstall.sh b/podman/rustinstall.sh index 2fce22bdb..def5c2b53 100755 --- a/podman/rustinstall.sh +++ b/podman/rustinstall.sh @@ -7,3 +7,6 @@ curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable cargo +stable install --force --version 0.1.1 cargo-config cargo +stable install --force --version 1.16.0 just cargo +stable install --force --version 0.27.0 cbindgen + +SCCACHE_PATH=https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-$(uname -m)-unknown-linux-musl.tar.gz +curl -sSL $(SCCACHE_PATH) | tar -xz -C ~/.cargo/bin --strip-components=1 --wildcards '*/sccache'