From ab97e5aa510f48ce96f2fde8a0e0c5d3bd3a1bee Mon Sep 17 00:00:00 2001 From: icp Date: Fri, 13 Jan 2023 22:21:19 +0530 Subject: [PATCH] Enable usage of rust-sccache for cargo builds --- common/build-helper/rust.sh | 7 +++++++ common/xbps-src/shutils/chroot.sh | 4 ++-- etc/defaults.conf | 6 ++++++ xbps-src | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/common/build-helper/rust.sh b/common/build-helper/rust.sh index 22bfd980ba9e3..ca80e0d74e6cc 100644 --- a/common/build-helper/rust.sh +++ b/common/build-helper/rust.sh @@ -30,6 +30,13 @@ else unset CARGO_BUILD_TARGET fi +if [ -n "$XBPS_SCCACHE" ] && [ "$pkgname" != "rust-sccache" ]; then + hostmakedepends+=" rust-sccache" + export RUSTC_WRAPPER="/usr/bin/sccache" + export SCCACHE_DIR="${XBPS_HOSTDIR}/sccache" + export SCCACHE_IDLE_TIMEOUT=30 +fi + # prevent cargo stripping debug symbols export CARGO_PROFILE_RELEASE_STRIP=false diff --git a/common/xbps-src/shutils/chroot.sh b/common/xbps-src/shutils/chroot.sh index fc17dae4fdbe9..a85afc5b88cbf 100644 --- a/common/xbps-src/shutils/chroot.sh +++ b/common/xbps-src/shutils/chroot.sh @@ -96,8 +96,8 @@ PATH=/void-packages:/usr/bin exec env -i -- SHELL=/bin/sh PATH="\$PATH" DISTCC_HOSTS="\$XBPS_DISTCC_HOSTS" DISTCC_DIR="/host/distcc" \ ${XBPS_ARCH+XBPS_ARCH=$XBPS_ARCH} ${XBPS_CHECK_PKGS+XBPS_CHECK_PKGS=$XBPS_CHECK_PKGS} \ - CCACHE_DIR="/host/ccache" IN_CHROOT=1 LC_COLLATE=C LANG=en_US.UTF-8 TERM=linux HOME="/tmp" \ - PS1="[\u@$XBPS_MASTERDIR \W]$ " /bin/bash +h "\$@" + CCACHE_DIR="/host/ccache" SCCACHE_DIR="/host/sccache" IN_CHROOT=1 LC_COLLATE=C LANG=en_US.UTF-8 \ + TERM=linux HOME="/tmp" PS1="[\u@$XBPS_MASTERDIR \W]$ " /bin/bash +h "\$@" _EOF chmod 755 $XBPS_MASTERDIR/bin/xbps-shell diff --git a/etc/defaults.conf b/etc/defaults.conf index f70e4ea3d0067..422f851136258 100644 --- a/etc/defaults.conf +++ b/etc/defaults.conf @@ -55,6 +55,12 @@ XBPS_SUCMD="sudo /bin/sh -c" # #XBPS_CCACHE=yes +# [OPTIONAL] +# Enable or disable sccache when building packages. The sccache directory +# is stored in the hostdir, i.e hostdir/sccache. +# +#XBPS_SCCACHE=yes + # [OPTIONAL] # Enable or disable distcc when building packages. The distcc directory # is stored in the hostdir, i.e hostdir/distcc. diff --git a/xbps-src b/xbps-src index 77695b9f510d3..2b1fca4db0c8b 100755 --- a/xbps-src +++ b/xbps-src @@ -672,7 +672,7 @@ export XBPS_SHUTILSDIR XBPS_CROSSPFDIR XBPS_TRIGGERSDIR \ XBPS_CMPVER_CMD XBPS_FETCH_CMD XBPS_VERSION XBPS_BUILDSTYLEDIR \ XBPS_CPPFLAGS XBPS_CFLAGS XBPS_CXXFLAGS XBPS_FFLAGS XBPS_LDFLAGS \ XBPS_MAKEJOBS XBPS_BUILD_FORCEMODE XBPS_USE_GIT_REVS XBPS_DEBUG_PKGS \ - XBPS_CHECK_PKGS XBPS_CCACHE XBPS_DISTCC XBPS_DISTCC_HOSTS XBPS_SKIP_DEPS \ + XBPS_CHECK_PKGS XBPS_SCCACHE XBPS_CCACHE XBPS_DISTCC XBPS_DISTCC_HOSTS XBPS_SKIP_DEPS \ XBPS_SKIP_REMOTEREPOS XBPS_CROSS_BUILD XBPS_ARG_PKG_OPTIONS XBPS_CONFIG_FILE \ XBPS_KEEP_ALL XBPS_HOSTDIR XBPS_MASTERDIR XBPS_SRC_VERSION \ XBPS_DESTDIR XBPS_MACHINE XBPS_TEMP_MASTERDIR XBPS_BINPKG_EXISTS \