From 916d8335e3d0d69c425084cb98008adaf3d25380 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 5 Jul 2025 02:54:16 +0000 Subject: [PATCH] Support build with sccache in podman --- cookbook | 2 +- mk/config.mk | 19 ++++++++++++++++++- podman/rustinstall.sh | 5 +++++ relibc | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/cookbook b/cookbook index 1f238c0f9..f7f69579e 160000 --- a/cookbook +++ b/cookbook @@ -1 +1 @@ -Subproject commit 1f238c0f912cab65079fc2681cb94fde90b27790 +Subproject commit f7f69579e55e7c967e8205c2cb248fc9ef5310bf diff --git a/mk/config.mk b/mk/config.mk index 1dc21d9b5..ceb2df0ad 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -31,6 +31,9 @@ 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 +## only do this by default if this is inside podman +SCCACHE_BUILD?=$(shell [ -f /run/.containerenv ] && echo 1 || echo 0) ## The containerfile to use for the Podman base image CONTAINERFILE?=podman/redox-base-containerfile @@ -41,11 +44,18 @@ 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 endif +ifeq ($(SCCACHE_BUILD),1) +ifeq (,$(shell command -v sccache)) + $(info sccache not found in PATH) + SCCACHE_BUILD=0 +endif +endif + UNAME := $(shell uname) ifeq ($(UNAME),Darwin) FUMOUNT=umount @@ -112,6 +122,13 @@ RANLIB=$(GNU_TARGET)-gcc-ranlib READELF=$(GNU_TARGET)-readelf STRIP=$(GNU_TARGET)-strip +ifeq ($(SCCACHE_BUILD),1) + export CC_WRAPPER:=sccache + export RUSTC_WRAPPER:=$(CC_WRAPPER) + CC=$(CC_WRAPPER) $(GNU_TARGET)-gcc + CXX=$(CC_WRAPPER) $(GNU_TARGET)-g++ +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..2210dcc20 100755 --- a/podman/rustinstall.sh +++ b/podman/rustinstall.sh @@ -4,6 +4,11 @@ # in Podman after the image has been built curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable + +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' +export RUSTC_WRAPPER=sccache + 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 diff --git a/relibc b/relibc index 1550bb54b..84d410084 160000 --- a/relibc +++ b/relibc @@ -1 +1 @@ -Subproject commit 1550bb54b5eb5e13e31c311ae8c116e6b009831b +Subproject commit 84d410084571e456031f48650b75b1b2f628550d