@@ 51869,6 51869,7 @@ Format (MCF).")
("rust-subtle" ,rust-subtle-2)
("rust-rand-core" ,rust-rand-core-0.6))))))
+;; WARNING: This package is a dependency of mesa.
(define-public rust-paste-1
(package
(name "rust-paste")
@@ 56703,6 56704,7 @@ in your code.")
"Support for nested proc-macro-hack invocations.")
(license (list license:expat license:asl2.0))))
+;; WARNING: This package is a dependency of mesa.
(define-public rust-proc-macro2-1
(package
(name "rust-proc-macro2")
@@ 60144,6 60146,7 @@ transport protocol in Rust.")
("rust-tokio" ,rust-tokio-1)
("rust-tracing" ,rust-tracing-0.1))))))
+;; WARNING: This package is a dependency of mesa.
(define-public rust-quote-1
(package
(name "rust-quote")
@@ 76953,6 76956,7 @@ library that supports a wide range of audio formats. This package contains Xiph
codecs and formats.")
(license license:mpl2.0)))
+;; WARNING: This package is a dependency of mesa.
(define-public rust-syn-2
(package
(name "rust-syn")
@@ 86613,6 86617,7 @@ membership for characters in Rust.")
according to Unicode Standard Annex #31.")
(license (list license:expat license:asl2.0))))
+;; WARNING: This package is a dependency of mesa.
(define-public rust-unicode-ident-1
(package
(name "rust-unicode-ident")
@@ 22,6 22,7 @@
;;; Copyright © 2024 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2024 Arnaud Lechevallier <arnaud.lechevallier@free.fr>
+;;; Copyright © 2024 aurtzy <aurtzy@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ 42,6 43,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation)
@@ 57,6 59,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages rust)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
#:use-module (gnu packages vulkan)
@@ 76,7 79,8 @@
#:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (ice-9 match)
- #:use-module ((srfi srfi-1) #:hide (zip)))
+ #:use-module ((srfi srfi-1) #:hide (zip))
+ #:use-module (srfi srfi-26))
(define-public glu
(package
@@ 357,10 361,19 @@ also known as DXTn or DXTC) for Mesa.")
pkg-config-for-build
wayland
wayland-protocols)
+ '())
+ (if (target-x86-64?)
+ ;; NVK dependencies
+ (list rust
+ (module-ref (resolve-interface '(gnu packages rust-apps))
+ 'rust-bindgen-cli)
+ (module-ref (resolve-interface '(gnu packages rust-apps))
+ 'rust-cbindgen-0.26))
'())))
(outputs '("out" "bin"))
(arguments
(list
+ #:meson meson-1.5
#:configure-flags
#~(list
#$@(cond
@@ 392,7 405,7 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
"-Dshared-glapi=enabled"
#$@(cond
- ((or (target-x86-32?) (target-x86-64?))
+ ((target-x86-32?)
;; This doesn't include nouveau (which is in "auto") as it needs
;; rust.
;; TODO: Enable nouveau/NVK.
@@ 486,6 499,53 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
(("'lp_test_arit', ") ""))))
(_
'((display "No tests to disable on this architecture.\n"))))))
+ #$@(if (target-x86-64?)
+ #~((add-after 'unpack 'patch-subproject-sources
+ (lambda _
+ ;; Patch each relevant subproject source URL in wrapfiles to
+ ;; use the store, which avoids an attempt to download them
+ ;; mid-build.
+ (for-each
+ (match-lambda
+ ((name source)
+ (let ((wrap-file (string-append
+ "subprojects/" name ".wrap"))
+ (subproject-dest (string-append
+ "subprojects/" name))
+ (overlay-dir (string-append
+ "subprojects/packagefiles/" name)))
+ (copy-recursively source subproject-dest)
+ ;; Normally when the patch_directory wrap file property
+ ;; is specified, meson automatically copies from
+ ;; packagefiles, but this is not the case here (only
+ ;; happens when downloading source?) so we manually copy
+ ;; overlay-dir to subproject-dest.
+ (when (file-exists? overlay-dir)
+ (copy-recursively overlay-dir subproject-dest))
+ (call-with-output-file wrap-file
+ (lambda (port)
+ (format port "[wrap-file]
+directory = ~a
+"
+ name))))))
+ '#+(map (lambda (pkg)
+ (let ((name (package-upstream-name* pkg))
+ (version (package-version pkg)))
+ (list (package-upstream-name* pkg)
+ (file-append pkg
+ "/share/cargo/src/"
+ name "-" version))))
+ (let ((from-crates-io
+ (cut module-ref
+ (resolve-interface
+ '(gnu packages crates-io))
+ <>)))
+ (list (from-crates-io 'rust-syn-2)
+ (from-crates-io 'rust-unicode-ident-1)
+ (from-crates-io 'rust-quote-1)
+ (from-crates-io 'rust-proc-macro2-1)
+ (from-crates-io 'rust-paste-1))))))))
+ #~())
(add-before 'configure 'fix-dlopen-libnames
(lambda* (#:key inputs #:allow-other-keys)
(let ((out #$output))