[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#78102] [PATCH v2 2/3] gnu: libcxx: Fix cross-compilation build.
From: |
Maxim Cournoyer |
Subject: |
[bug#78102] [PATCH v2 2/3] gnu: libcxx: Fix cross-compilation build. |
Date: |
Fri, 02 May 2025 09:33:22 +0900 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi Greg,
Thanks for the review.
Greg Hogan <code@greghogan.com> writes:
[...]
>> @@ -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)
>
> Should we keep this build-system section sorted?
Definitely! Done.
>> #: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)
>
> Does this work to combine clang-19 with llvm-13?
Good catch. It worked, because both llvm and libunwind-headers appeared
to be extraneous inputs, which I've now removed.
>
>> + ;; Remove GCC from the build environment, to avoid its C++
>> + ;; headers (include/c++), which would interfere and cause build
>> + ;; failures.
>> + (map second
>
> With the map are we not also dropping the package output as the third
> field? So we wind up with a second "libc" but no "libc:static". It
> might not matter here but this kind of trick is often copied into
> additional packages. Can we use modify-inputs on standard-packages,
> delete "gcc", and append the list of additional packages? Or revert to
> the old-style inputs.
Good point, I've rewritten it to use modify-inputs. I don't think we
should use old-style inputs in any case now.
>> + (alist-delete "gcc" (standard-packages)))))
>
> There is an extra space after alist-delete.
Fixed!
Thanks again for the review! I'll push shortly.
--
Thanks,
Maxim