From: icp1994 <icp1994@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] [RFC] Enable usage of rust-sccache for cargo builds
Date: Mon, 13 Nov 2023 10:41:52 +0100 [thread overview]
Message-ID: <20231113094152.5eCz4QSKaZEwIHKiEny9jHn2AfR8T1g9zkpw_3cMb4E@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-41617@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 1535 bytes --]
There is an updated pull request by icp1994 against master on the void-packages repository
https://github.com/icp1994/void-packages enable-sccache
https://github.com/void-linux/void-packages/pull/41617
[RFC] Enable usage of rust-sccache for cargo builds
Reviving https://github.com/void-linux/void-packages/pull/30702 - I tested the changes in this PR: **YES**
I have been using this for almost a week and it has reduced build times for rust packages quite considerably in my laptop. I have addressed some of the questions/suggestions from the reviews of the previous PR.
Although not the most scientific benchmark, I noted the build times from the cargo output while packaging 4 templates across iterations. In the first two iterations, all of them ran without sccache with an older version of the template to get a baseline without the interference of the crates being downloaded. Third iteration was with same old versions but with sccache enabled which created the cache of all 4 packages combined. Finally, last iteration with the full cache and the latest version of the templates - a typical scenario while updating a package. The difference between the second and the fourth iterations are as follows:
```
rust-analyzer | 6m 13s | 4m 49s
gping | 1m 44s | 40.81s
difftastic | 1m 32s | 34.80s
streampager | 1m 14s | 23.25s
```
I will add docs for README later if there is consensus to merge this eventually.
A patch file from https://github.com/void-linux/void-packages/pull/41617.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-enable-sccache-41617.patch --]
[-- Type: text/x-diff, Size: 3137 bytes --]
From cf3965541c26f85d953bc2b13e4441fb51ec3ff2 Mon Sep 17 00:00:00 2001
From: icp <pangolin@vivaldi.net>
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 96ec351d545d9..61430e8d66fe1 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
+
# For cross-compiling rust -sys crates
export PKG_CONFIG_ALLOW_CROSS=1
diff --git a/common/xbps-src/shutils/chroot.sh b/common/xbps-src/shutils/chroot.sh
index d65d8d7e30741..65d1f6d719780 100644
--- a/common/xbps-src/shutils/chroot.sh
+++ b/common/xbps-src/shutils/chroot.sh
@@ -88,8 +88,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 cdb5f8c6d643e..49ac4c9b4bd24 100755
--- a/xbps-src
+++ b/xbps-src
@@ -658,7 +658,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 \
next prev parent reply other threads:[~2023-11-13 9:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-13 19:38 [PR PATCH] " icp1994
2023-01-13 20:08 ` [PR REVIEW] " Duncaen
2023-01-14 5:52 ` icp1994
2023-04-15 1:52 ` github-actions
2023-04-23 19:21 ` [PR PATCH] [Updated] " icp1994
2023-04-23 19:25 ` [PR REVIEW] " icp1994
2023-07-23 1:58 ` github-actions
2023-07-25 19:08 ` [PR PATCH] [Updated] " icp1994
2023-11-08 1:45 ` github-actions
2023-11-13 9:41 ` icp1994 [this message]
2024-02-13 1:44 ` github-actions
2024-02-13 13:51 ` [PR PATCH] [Updated] " icp1994
2024-05-14 1:46 ` github-actions
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231113094152.5eCz4QSKaZEwIHKiEny9jHn2AfR8T1g9zkpw_3cMb4E@z \
--to=icp1994@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).