commit:     c1683082f6735325895ab84e5d16801dc7fad2f5
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  8 02:09:48 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Aug  8 02:09:48 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c1683082

dev-util/ccache: backport ICE workaround

Already fixed in stable GCC but let's backport as it makes life easier for
people.

Bug: https://bugs.gentoo.org/906310
Bug: https://bugs.gentoo.org/906942
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-util/ccache/ccache-4.8.2.ebuild                |  1 +
 .../files/ccache-4.8.2-gcc-ice-workaround.patch    | 25 ++++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/dev-util/ccache/ccache-4.8.2.ebuild 
b/dev-util/ccache/ccache-4.8.2.ebuild
index 782242e5b788..8ec5b78da959 100644
--- a/dev-util/ccache/ccache-4.8.2.ebuild
+++ b/dev-util/ccache/ccache-4.8.2.ebuild
@@ -62,6 +62,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-3.5-nvcc-test.patch
        "${FILESDIR}"/${PN}-4.0-objdump.patch
        "${FILESDIR}"/${PN}-4.8-avoid-run-user.patch
+       "${FILESDIR}"/${P}-gcc-ice-workaround.patch
 )
 
 src_unpack() {

diff --git a/dev-util/ccache/files/ccache-4.8.2-gcc-ice-workaround.patch 
b/dev-util/ccache/files/ccache-4.8.2-gcc-ice-workaround.patch
new file mode 100644
index 000000000000..a638930ad6ad
--- /dev/null
+++ b/dev-util/ccache/files/ccache-4.8.2-gcc-ice-workaround.patch
@@ -0,0 +1,25 @@
+https://bugs.gentoo.org/906310
+https://bugs.gentoo.org/906942
+https://github.com/ccache/ccache/issues/1289
+https://github.com/ccache/ccache/commit/689168c292f1ed26c5f4a3070aeb649dad7facb5
+
+From 689168c292f1ed26c5f4a3070aeb649dad7facb5 Mon Sep 17 00:00:00 2001
+From: Joel Rosdahl <j...@rosdahl.net>
+Date: Tue, 1 Aug 2023 12:30:12 +0200
+Subject: [PATCH] fix: Work around GCC 12.3 bug 109241
+
+See also #1289.
+--- a/src/storage/local/LocalStorage.cpp
++++ b/src/storage/local/LocalStorage.cpp
+@@ -854,7 +854,9 @@ LocalStorage::recompress(const std::optional<int8_t> level,
+           auto l2_content_lock = get_level_2_content_lock(l1_index, l2_index);
+           l2_content_lock.make_long_lived(lock_manager);
+           if (!l2_content_lock.acquire()) {
+-            LOG("Failed to acquire content lock for {}/{}", l1_index, 
l2_index);
++            // LOG_RAW+fmt::format instead of LOG due to GCC 12.3 bug #109241
++            LOG_RAW(fmt::format(
++              "Failed to acquire content lock for {}/{}", l1_index, 
l2_index));
+             return;
+           }
+ 
+

Reply via email to