Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds
@ 2023-01-13 19:38 icp1994
  2023-01-13 20:08 ` [PR REVIEW] " Duncaen
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: icp1994 @ 2023-01-13 19:38 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1530 bytes --]

There is a new 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: 3887 bytes --]

From c394f1085d16881291003a0aae7413de11dc0aff 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             |  4 ++++
 common/environment/build-style/cargo.sh |  7 +++++++
 common/xbps-src/shutils/chroot.sh       |  4 ++--
 etc/defaults.conf                       |  6 ++++++
 xbps-src                                | 10 +++++++++-
 5 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/common/build-helper/rust.sh b/common/build-helper/rust.sh
index 272d03f52607..e5261a7e7cdf 100644
--- a/common/build-helper/rust.sh
+++ b/common/build-helper/rust.sh
@@ -30,6 +30,10 @@ else
 	unset CARGO_BUILD_TARGET
 fi
 
+if [ -n "$XBPS_SCCACHE" ]; then
+	export RUSTC_WRAPPER="/usr/bin/sccache"
+fi
+
 # For cross-compiling rust -sys crates
 export PKG_CONFIG_ALLOW_CROSS=1
 
diff --git a/common/environment/build-style/cargo.sh b/common/environment/build-style/cargo.sh
index 473750c7a359..4f9e00f47f23 100644
--- a/common/environment/build-style/cargo.sh
+++ b/common/environment/build-style/cargo.sh
@@ -4,6 +4,13 @@ if ! [[ "$pkgname" =~ ^cargo-auditable(-bootstrap)?$ ]]; then
 	hostmakedepends+=" cargo-auditable"
 fi
 
+if [ -n "$XBPS_SCCACHE" ] && [ "$pkgname" != "rust-sccache" ]; then
+	case "$XBPS_MACHINE" in
+		x86_64*|i686*|arm*|aarch64*) hostmakedepends+=" rust-sccache" ;;
+		*) ;;
+	esac
+fi
+
 if [ "$CROSS_BUILD" ]; then
 	makedepends+=" rust-std"
 fi
diff --git a/common/xbps-src/shutils/chroot.sh b/common/xbps-src/shutils/chroot.sh
index 823705030b97..0708e571558b 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 f70e4ea3d006..422f85113625 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 cdb5f8c6d643..aeed206b8949 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 \
@@ -702,6 +702,14 @@ if [ "$XBPS_CCACHE" ]; then
     mkdir -p $CCACHE_DIR
 fi
 
+#
+# Set up sccache
+#
+if [ "$XBPS_SCCACHE" ]; then
+    export SCCACHE_DIR="$XBPS_HOSTDIR/sccache"
+    mkdir -p $SCCACHE_DIR
+fi
+
 #
 # Set up distcc
 #

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PR REVIEW] [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
@ 2023-01-13 20:08 ` Duncaen
  2023-01-14  5:52 ` icp1994
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Duncaen @ 2023-01-13 20:08 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 235 bytes --]

New review comment by Duncaen on void-packages repository

https://github.com/void-linux/void-packages/pull/41617#discussion_r1069975198

Comment:
I really don't like implicit build-style dependencies, especially with logic like this.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PR REVIEW] [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
  2023-01-13 20:08 ` [PR REVIEW] " Duncaen
@ 2023-01-14  5:52 ` icp1994
  2023-04-15  1:52 ` github-actions
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: icp1994 @ 2023-01-14  5:52 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 230 bytes --]

New review comment by icp1994 on void-packages repository

https://github.com/void-linux/void-packages/pull/41617#discussion_r1070221682

Comment:
I agree it's not the cleanest. But isn't it explicit since XBPS_SCCACHE is opt-in?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds 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
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: github-actions @ 2023-04-15  1:52 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 305 bytes --]

New comment by github-actions[bot] on void-packages repository

https://github.com/void-linux/void-packages/pull/41617#issuecomment-1509458691

Comment:
Pull Requests become stale 90 days after last activity and are closed 14 days after that.  If this pull request is still relevant bump it or assign it.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
                   ` (2 preceding siblings ...)
  2023-04-15  1:52 ` github-actions
@ 2023-04-23 19:21 ` icp1994
  2023-04-23 19:25 ` [PR REVIEW] " icp1994
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: icp1994 @ 2023-04-23 19:21 UTC (permalink / raw)
  To: ml

[-- 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: 3627 bytes --]

From 62e01bd28a0f35b68bf268386c65136249c367e0 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             | 5 +++++
 common/environment/build-style/cargo.sh | 4 ++++
 common/xbps-src/shutils/chroot.sh       | 4 ++--
 etc/defaults.conf                       | 6 ++++++
 xbps-src                                | 2 +-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/common/build-helper/rust.sh b/common/build-helper/rust.sh
index f689f7c7f9d96..3326d5eabf8fc 100644
--- a/common/build-helper/rust.sh
+++ b/common/build-helper/rust.sh
@@ -30,6 +30,11 @@ else
 	unset CARGO_BUILD_TARGET
 fi
 
+if [ -n "$XBPS_SCCACHE" ]; then
+	export RUSTC_WRAPPER="/usr/bin/sccache"
+	export SCCACHE_DIR="${XBPS_HOSTDIR}/sccache"
+fi
+
 # For cross-compiling rust -sys crates
 export PKG_CONFIG_ALLOW_CROSS=1
 
diff --git a/common/environment/build-style/cargo.sh b/common/environment/build-style/cargo.sh
index bc836b06cf066..3a610b6993e8a 100644
--- a/common/environment/build-style/cargo.sh
+++ b/common/environment/build-style/cargo.sh
@@ -4,6 +4,10 @@ if ! [[ "$pkgname" =~ ^cargo-auditable(-bootstrap)?$ ]]; then
 	hostmakedepends+=" cargo-auditable"
 fi
 
+if [ -n "$XBPS_SCCACHE" ] && [ "$pkgname" != "rust-sccache" ]; then
+	hostmakedepends+=" rust-sccache"
+fi
+
 if [ "$CROSS_BUILD" ]; then
 	makedepends+=" rust-std"
 fi
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 \

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PR REVIEW] [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
                   ` (3 preceding siblings ...)
  2023-04-23 19:21 ` [PR PATCH] [Updated] " icp1994
@ 2023-04-23 19:25 ` icp1994
  2023-07-23  1:58 ` github-actions
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: icp1994 @ 2023-04-23 19:25 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 269 bytes --]

New review comment by icp1994 on void-packages repository

https://github.com/void-linux/void-packages/pull/41617#discussion_r1174631339

Comment:
With ppc support being dropped from void, don't need the arch checking logic - so this is as "clean" as it's going to be.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
                   ` (4 preceding siblings ...)
  2023-04-23 19:25 ` [PR REVIEW] " icp1994
@ 2023-07-23  1:58 ` github-actions
  2023-07-25 19:08 ` [PR PATCH] [Updated] " icp1994
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: github-actions @ 2023-07-23  1:58 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 305 bytes --]

New comment by github-actions[bot] on void-packages repository

https://github.com/void-linux/void-packages/pull/41617#issuecomment-1646721730

Comment:
Pull Requests become stale 90 days after last activity and are closed 14 days after that.  If this pull request is still relevant bump it or assign it.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
                   ` (5 preceding siblings ...)
  2023-07-23  1:58 ` github-actions
@ 2023-07-25 19:08 ` icp1994
  2023-11-08  1:45 ` github-actions
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: icp1994 @ 2023-07-25 19:08 UTC (permalink / raw)
  To: ml

[-- 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 ca7095b51bf3a60520268fbd3d4a10273c7a538c 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 f689f7c7f9d96..7566e0f6c11f3 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 \

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
                   ` (6 preceding siblings ...)
  2023-07-25 19:08 ` [PR PATCH] [Updated] " icp1994
@ 2023-11-08  1:45 ` github-actions
  2023-11-13  9:41 ` [PR PATCH] [Updated] " icp1994
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: github-actions @ 2023-11-08  1:45 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 305 bytes --]

New comment by github-actions[bot] on void-packages repository

https://github.com/void-linux/void-packages/pull/41617#issuecomment-1800871073

Comment:
Pull Requests become stale 90 days after last activity and are closed 14 days after that.  If this pull request is still relevant bump it or assign it.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
                   ` (7 preceding siblings ...)
  2023-11-08  1:45 ` github-actions
@ 2023-11-13  9:41 ` icp1994
  2024-02-13  1:44 ` github-actions
  2024-02-13 13:51 ` [PR PATCH] [Updated] " icp1994
  10 siblings, 0 replies; 12+ messages in thread
From: icp1994 @ 2023-11-13  9:41 UTC (permalink / raw)
  To: ml

[-- 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 \

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
                   ` (8 preceding siblings ...)
  2023-11-13  9:41 ` [PR PATCH] [Updated] " icp1994
@ 2024-02-13  1:44 ` github-actions
  2024-02-13 13:51 ` [PR PATCH] [Updated] " icp1994
  10 siblings, 0 replies; 12+ messages in thread
From: github-actions @ 2024-02-13  1:44 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 305 bytes --]

New comment by github-actions[bot] on void-packages repository

https://github.com/void-linux/void-packages/pull/41617#issuecomment-1940152961

Comment:
Pull Requests become stale 90 days after last activity and are closed 14 days after that.  If this pull request is still relevant bump it or assign it.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] Enable usage of rust-sccache for cargo builds
  2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds icp1994
                   ` (9 preceding siblings ...)
  2024-02-13  1:44 ` github-actions
@ 2024-02-13 13:51 ` icp1994
  10 siblings, 0 replies; 12+ messages in thread
From: icp1994 @ 2024-02-13 13:51 UTC (permalink / raw)
  To: ml

[-- 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: 3147 bytes --]

From ab97e5aa510f48ce96f2fde8a0e0c5d3bd3a1bee 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 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 \

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-02-13 13:51 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-13 19:38 [PR PATCH] [RFC] Enable usage of rust-sccache for cargo builds 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 ` [PR PATCH] [Updated] " icp1994
2024-02-13  1:44 ` github-actions
2024-02-13 13:51 ` [PR PATCH] [Updated] " icp1994

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).