guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

18/22: gnu: mesa: Enable NVK driver for x86_64 architecture.


From: guix-commits
Subject: 18/22: gnu: mesa: Enable NVK driver for x86_64 architecture.
Date: Sun, 27 Oct 2024 01:25:15 -0400 (EDT)

podiki pushed a commit to branch mesa-updates
in repository guix.

commit 13bf9bd6119a18be31668e8b1adba2267aa2b616
Author: aurtzy <aurtzy@gmail.com>
AuthorDate: Mon Sep 9 12:12:11 2024 -0400

    gnu: mesa: Enable NVK driver for x86_64 architecture.
    
    * gnu/packages/gl.scm (mesa)[native-inputs]: Add rust, rust-bindgen-cli,
    rust-cbindgen-0.26 for x86_64.
    [arguments]<#:meson>: Use newer version of meson to satisfy NVK build
    requirements.
    <#:configure-flags>: Use "auto" for 'vulkan-drivers' flag when target arch 
is
    x86_64.
    <#:phases>: Add 'patch-subproject-sources phase to patch rust subproject
    sources when target arch is x86_64.
    * gnu/packages/crates-io.scm (rust-paste-1, rust-proc-macro2-1, 
rust-quote-1,
    rust-syn-2, rust-unicode-ident-1): Add a comment about being dependencies of
    mesa.
    
    Change-Id: I76e3db5072ca3c718155b188ca64b52766d55f36
    Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
---
 gnu/packages/crates-io.scm |  5 ++++
 gnu/packages/gl.scm        | 64 ++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 67 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c08ccd29fd..4e4416574b 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -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")
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index c977c03949..14b24d3158 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -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))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]