commit:     afe458f45b86a439985e0c6cae53912d487bc88e
Author:     Holger Hoffstätte <holger <AT> applied-asynchrony <DOT> com>
AuthorDate: Thu Jul 25 21:00:37 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Aug 10 20:02:09 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=afe458f4

dev-util/ccache: fix compilation with libfmt >=10

Closes: https://bugs.gentoo.org/935291
Signed-off-by: Holger Hoffstätte <holger <AT> applied-asynchrony.com>
Closes: https://github.com/gentoo/gentoo/pull/37725
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-util/ccache/ccache-4.10.1.ebuild             |  1 +
 dev-util/ccache/files/ccache-4.10-libfmt11.patch | 85 ++++++++++++++++++++++++
 2 files changed, 86 insertions(+)

diff --git a/dev-util/ccache/ccache-4.10.1.ebuild 
b/dev-util/ccache/ccache-4.10.1.ebuild
index f50d51039e24..9b08f52780fa 100644
--- a/dev-util/ccache/ccache-4.10.1.ebuild
+++ b/dev-util/ccache/ccache-4.10.1.ebuild
@@ -73,6 +73,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-3.5-nvcc-test.patch
        "${FILESDIR}"/${PN}-4.0-objdump.patch
        "${FILESDIR}"/${PN}-4.10-avoid-run-user.patch
+       "${FILESDIR}"/${PN}-4.10-libfmt11.patch
 )
 
 src_unpack() {

diff --git a/dev-util/ccache/files/ccache-4.10-libfmt11.patch 
b/dev-util/ccache/files/ccache-4.10-libfmt11.patch
new file mode 100644
index 000000000000..37ed2167611a
--- /dev/null
+++ b/dev-util/ccache/files/ccache-4.10-libfmt11.patch
@@ -0,0 +1,85 @@
+
+Patch from:
+https://github.com/ccache/ccache/commit/71f772e9d3d4f8045cfa7bccd03bd21c1e8fbef1
+
+From db136b6819d95bb53582e4fea8c328029c8f5681 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Holger=20Hoffst=C3=A4tte?= <[email protected]>
+Date: Tue, 2 Jul 2024 12:53:04 +0200
+Subject: [PATCH] build: Try harder to determine FMT_VERSION
+
+fmt-11.0 moved the FMT_VERSION from core.h to base.h, so try the
+new header first and then fall back to the old one.
+
+Closes: #1477
+---
+ cmake/FindFmt.cmake | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/cmake/FindFmt.cmake b/cmake/FindFmt.cmake
+index 55126a3172..0619f4615e 100644
+--- a/cmake/FindFmt.cmake
++++ b/cmake/FindFmt.cmake
+@@ -3,11 +3,19 @@ mark_as_advanced(FMT_INCLUDE_DIR FMT_LIBRARY)
+ if(DEP_FMT STREQUAL "BUNDLED")
+   message(STATUS "Using bundled Fmt as requested")
+ else()
+-  find_path(FMT_INCLUDE_DIR fmt/core.h)
++  find_path(FMT_INCLUDE_DIR fmt/base.h fmt/core.h)
+   find_library(FMT_LIBRARY fmt)
+   if(FMT_INCLUDE_DIR AND FMT_LIBRARY)
+-    file(READ "${FMT_INCLUDE_DIR}/fmt/core.h" _fmt_core_h)
+-    string(REGEX MATCH "#define FMT_VERSION ([0-9]+)" _ "${_fmt_core_h}")
++    file(READ "${FMT_INCLUDE_DIR}/fmt/base.h" _fmt_base_h)
++    string(REGEX MATCH "#define FMT_VERSION ([0-9]+)" _ "${_fmt_base_h}")
++    if("${CMAKE_MATCH_0}" STREQUAL "")
++      file(READ "${FMT_INCLUDE_DIR}/fmt/core.h" _fmt_core_h)
++      string(REGEX MATCH "#define FMT_VERSION ([0-9]+)" _ "${_fmt_core_h}")
++    endif()
++    if("${CMAKE_MATCH_0}" STREQUAL "")
++      message(FATAL_ERROR "FMT_VERSION not found")
++      return()
++    endif()
+     math(EXPR _fmt_major "${CMAKE_MATCH_1} / 10000")
+     math(EXPR _fmt_minor "${CMAKE_MATCH_1} / 100 % 100")
+     math(EXPR _fmt_patch "${CMAKE_MATCH_1} % 100")
+
+Patch from:
+https://github.com/ccache/ccache/commit/3b09afc5f792f0bd0a15cf6b8408ea40eb069787
+
+From 3b09afc5f792f0bd0a15cf6b8408ea40eb069787 Mon Sep 17 00:00:00 2001
+From: Joel Rosdahl <[email protected]>
+Date: Tue, 2 Jul 2024 17:05:43 +0200
+Subject: [PATCH] build: Fix detection of Fmt version for Fmt<11
+
+Fixes regression in 71f772e9d3d4f8045cfa7bccd03bd21c1e8fbef1.
+---
+ cmake/FindFmt.cmake | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/cmake/FindFmt.cmake b/cmake/FindFmt.cmake
+index 0619f4615e..7c39291eca 100644
+--- a/cmake/FindFmt.cmake
++++ b/cmake/FindFmt.cmake
+@@ -3,15 +3,16 @@ mark_as_advanced(FMT_INCLUDE_DIR FMT_LIBRARY)
+ if(DEP_FMT STREQUAL "BUNDLED")
+   message(STATUS "Using bundled Fmt as requested")
+ else()
+-  find_path(FMT_INCLUDE_DIR fmt/base.h fmt/core.h)
++  find_path(FMT_INCLUDE_DIR NAMES fmt/base.h fmt/core.h)
+   find_library(FMT_LIBRARY fmt)
+   if(FMT_INCLUDE_DIR AND FMT_LIBRARY)
+-    file(READ "${FMT_INCLUDE_DIR}/fmt/base.h" _fmt_base_h)
+-    string(REGEX MATCH "#define FMT_VERSION ([0-9]+)" _ "${_fmt_base_h}")
+-    if("${CMAKE_MATCH_0}" STREQUAL "")
+-      file(READ "${FMT_INCLUDE_DIR}/fmt/core.h" _fmt_core_h)
+-      string(REGEX MATCH "#define FMT_VERSION ([0-9]+)" _ "${_fmt_core_h}")
++    if(EXISTS "${FMT_INCLUDE_DIR}/fmt/base.h")
++      set(_fmt_h base.h)
++    else()
++      set(_fmt_h core.h)
+     endif()
++    file(READ "${FMT_INCLUDE_DIR}/fmt/${_fmt_h}" _fmt_h_content)
++    string(REGEX MATCH "#define FMT_VERSION ([0-9]+)" _ "${_fmt_h_content}")
+     if("${CMAKE_MATCH_0}" STREQUAL "")
+       message(FATAL_ERROR "FMT_VERSION not found")
+       return()

Reply via email to