Subject: [PATCH v2 2/3] gnu: libcxx: Fix cross-compilation build.

From: Maxim Cournoyer <[email-masked]>
Date: Wed, 30 Apr 2025 00:31:38 +0900

* gnu/packages/llvm.scm (libcxx) [arguments] <#:implicit-inputs?>: Set to #f.
<#:phases>: Remove adjust-CPLUS_INCLUDE_PATH.
[native-inputs]: Explicitly provide standard inputs, filtering out gcc.

Change-Id: I8cbc73ef90dce0a57bf2f8198c3176932bf24185
---
 gnu/packages/llvm.scm | 27 ++++++++++-----------------
 1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index a0f47447bee..49b6e27bff9 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -17,7 +17,7 @@
 ;;; Copyright © 2020 Giacomo Leidi <[email-masked]>
 ;;; Copyright © 2020 Jakub Kądziołka <[email-masked]>
 ;;; Copyright © 2021, 2022 Maxime Devos <[email-masked]>
-;;; Copyright © 2020, 2021, 2022, 2024 Maxim Cournoyer <[email-masked]>
+;;; Copyright © 2020-2022, 2024-2025 Maxim Cournoyer <[email-masked]>
 ;;; Copyright © 2021 Julien Lepiller <[email-masked]>
 ;;; Copyright © 2021 Lars-Dominik Braun <[email-masked]>
 ;;; Copyright © 2021, 2022 Guillaume Le Vaillant <[email-masked]>
@@ -52,6 +52,7 @@ (define-module (gnu packages llvm)
   #:use-module (guix memoization)
   #:use-module (guix search-paths)
   #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system emacs)
   #:use-module (guix build-system python)
@@ -1905,6 +1906,7 @@ (define-public libcxx
     (build-system cmake-build-system)
     (arguments
      (list
+      #:implicit-inputs? #f             ;to avoid conflicting GCC headers
       #:tests? #f
       #:configure-flags
       #~(list "-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi;libunwind"
@@ -1920,23 +1922,14 @@ (define-public libcxx
       #~(modify-phases %standard-phases
           (add-after 'unpack 'enter-subdirectory
             (lambda _
-              (chdir "runtimes")))
-          (add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH
-            (lambda* (#:key inputs #:allow-other-keys)
-              (let ((gcc (assoc-ref inputs  "gcc")))
-                ;; Hide GCC's C++ headers so that they do not interfere with
-                ;; the ones we are attempting to build.
-                (setenv "CPLUS_INCLUDE_PATH"
-                        (string-join (delete (string-append gcc "/include/c++")
-                                             (string-split (getenv "CPLUS_INCLUDE_PATH")
-                                                           #\:))
-                                     ":"))
-                (format #t
-                        "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
-                        (getenv "CPLUS_INCLUDE_PATH"))
-                #t))))))
+              (chdir "runtimes"))))))
     (native-inputs
-     (list clang-19 libunwind-headers llvm python))
+     (append (list clang-19 libunwind-headers llvm python)
+             ;; Remove GCC from the build environment, to avoid its C++
+             ;; headers (include/c++), which would interfere and cause build
+             ;; failures.
+             (map second
+                  (alist-delete  "gcc" (standard-packages)))))
     (home-page "https://libcxx.llvm.org")
     (synopsis "C++ standard library")
     (description
-- 
2.49.0