[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#68133] [PATCH] gnu: glew: Fix cross-compiling.
From: |
Zheng Junjie |
Subject: |
[bug#68133] [PATCH] gnu: glew: Fix cross-compiling. |
Date: |
Thu, 04 Jan 2024 20:40:40 +0800 |
User-agent: |
mu4e 1.10.8; emacs 30.0.50 |
Mathieu Othacehe <othacehe@gnu.org> writes:
> Hello,
>
>> gnu/packages/gl.scm(glew):
>> [arguments]<#:make-flags>: when cross-compiling, use {cc,strip}-for-target.
>
> When running:
>
> ./pre-inst-env guix build --target=aarch64-linux-gnu glew
>
> I have the following error message:
>
> Run-time dependency libudev found: NO (tried pkgconfig and cmake)
>
> ../mesa-23.2.1/meson.build:1682:13: ERROR: Failed running
> '/gnu/store/fzmc9w4i1lyqi0v62w5jpdxi6h9cbnyh-llvm-for-mesa-15.0.7/bin/llvm-config',
> binary or interpreter not executable.
> Possibly wrong architecture or the executable bit is not set.
>
> A full log can be found at
> /tmp/guix-build-mesa-23.2.1.drv-0/build/meson-logs/meson-log.txt
> error: in phase 'configure': uncaught exception:
>
> Did I miss something?
i think because binfmt leak into build environment, so host's
llvm-config can executed.
please try this patch, use meson's cmake module to find llvm.
>From 015ac9468acefe959dea570fc1661bcbce6ebaf8 Mon Sep 17 00:00:00 2001
Message-ID:
<015ac9468acefe959dea570fc1661bcbce6ebaf8.1704372069.git.zhengjunjie@iscas.ac.cn>
From: Zheng Junjie <zhengjunjie@iscas.ac.cn>
Date: Thu, 4 Jan 2024 20:33:13 +0800
Subject: [PATCH] gnu: mesa: fix cross-compiling.
* gnu/packages/gl.scm(mesa)[native-inputs]: when cross-compile, add
cmake-minimal-cross.
[arguments]: adjust fix-cross-compiling to find llvm.
* gnu/packages/llvm.scm(llvm-for-mesa)
[arguments]<#:configure-flags>: When cross-compile, set
-DBUILD_SHARED_LIBS:BOOL=TRUE and -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE,
remove -DLLVM_LINK_LLVM_DYLIB.* .
<#:phases>: when cross-compile, remove delete-static-libraries phase.
Change-Id: If10dec7695e62604e080230e10f2b8d7167f660b
---
gnu/packages/gl.scm | 17 +++++++++++------
gnu/packages/llvm.scm | 28 +++++++++++++++++++---------
2 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index b0ee413acd..91fa8f642f 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -18,7 +18,7 @@
;;; Copyright © 2021, 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2023 Kaelyn Takata <kaelyn.alexi@protonmail.com>
-;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -62,6 +62,7 @@ (define-module (gnu packages gl)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix hg-download)
+ #:use-module (gnu packages cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system meson)
@@ -338,7 +339,8 @@ (define-public mesa
python-wrapper
(@ (gnu packages base) which)
(if (%current-target-system)
- (list pkg-config-for-build
+ (list cmake-minimal-cross
+ pkg-config-for-build
wayland
wayland-protocols)
'())))
@@ -415,10 +417,13 @@ (define-public mesa
#~(modify-phases %standard-phases
#$@(if (%current-target-system)
#~((add-after 'unpack 'fix-cross-compiling
- (lambda* (#:key inputs #:allow-other-keys)
- ;; It isn't a problem to use the host's llvm-config.
- (setenv "LLVM_CONFIG"
- (search-input-file inputs "/bin/llvm-config")))))
+ (lambda* (#:key native-inputs #:allow-other-keys)
+ ;; when cross compile, we use cmake to find llvm, not
llvm-config,
+ ;; because llvm-conifg cannot be executed
+ ;; see https://github.com/llvm/llvm-project/issues/58984
+ (setenv "CMAKE"
+ (search-input-file
+ native-inputs "/bin/cmake")))))
#~())
(add-after 'unpack 'disable-failing-test
(lambda _
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 6abd1a67d7..a3176c6dae 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -27,6 +27,7 @@
;;; Copyright © 2022 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space>
+;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -2169,20 +2170,29 @@ (define-public llvm-for-mesa
;; AMDGPU is needed by the vulkan drivers.
#$(string-append "-DLLVM_TARGETS_TO_BUILD="
(system->llvm-target) ";AMDGPU")
+ #$@(if (%current-target-system)
+ '("-DBUILD_SHARED_LIBS:BOOL=TRUE"
+ "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE")
+ '())
;; Skipping tools and utils decreases the output by ~100 MiB.
"-DLLVM_BUILD_TOOLS=NO"
- (remove (cut string-match
- "-DLLVM_(TARGETS_TO_BUILD|INSTALL_UTILS).*" <>)
+ (remove
+ (cut string-match
+ #$(if (%current-target-system)
+
"-DLLVM_(LINK_LLVM_DYLIB|TARGETS_TO_BUILD|INSTALL_UTILS).*"
+ "-DLLVM_(TARGETS_TO_BUILD|INSTALL_UTILS).*") <>)
#$cf)))
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
- (add-after 'install 'delete-static-libraries
- ;; If these are just relocated then llvm-config can't find
them.
- (lambda* (#:key outputs #:allow-other-keys)
- (for-each delete-file
- (find-files (string-append
- (assoc-ref outputs "out") "/lib")
- "\\.a$"))))
+ #$@(if (%current-target-system)
+ '()
+ #~((add-after 'install 'delete-static-libraries
+ ;; If these are just relocated then llvm-config
can't find them.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (for-each delete-file
+ (find-files (string-append
+ (assoc-ref outputs "out")
"/lib")
+ "\\.a$"))))))
;; llvm-config is how mesa and others find the various
;; libraries and headers they use.
(add-after 'install 'build-and-install-llvm-config
base-commit: 7b0863f07a113caef26fea13909bd97d250b629e
prerequisite-patch-id: b3a67130858eb3c97f43099cb3b2f7978d5f1a79
prerequisite-patch-id: 007807771d1614f2e42f5df56b7d1875b1966031
--
2.41.0
>
> Thanks,
>
> Mathieu