Package: guix-patches;
Reported by: Rutger Helling <rhelling <at> mykolab.com>
Date: Sat, 9 Dec 2017 13:56:02 UTC
Severity: normal
Tags: patch
Done: Marius Bakke <mbakke <at> fastmail.com>
Bug is archived. No further changes may be made.
Message #14 received at 29625 <at> debbugs.gnu.org (full text, mbox):
From: Rutger Helling <rhelling <at> mykolab.com> To: Marius Bakke <mbakke <at> fastmail.com> Cc: 29625 <at> debbugs.gnu.org Subject: Re: [bug#29625] [PATCH core-updates] Vulkan patch series. Date: Thu, 14 Dec 2017 23:26:22 +0100
[Message part 1 (text/plain, inline)]
Hey Marius, thanks for the feedback! I've changed the patches and made sure they work on the latest core-updates commit. On 2017-12-13 19:30, Marius Bakke wrote: > Hi Rutger, > > Rutger Helling <rhelling <at> mykolab.com> writes: > >> Hey Guix, >> >> this patch series adds Vulkan support for mesa on x86_64-linux and adds >> a few new packages. >> Since a rebuild of mesa is necessary I'm sending it in for core-updates. > > That is excellent, thank you! > >> Here's a short explanation of all the patches: >> #1: Add Vulkan support to mesa on x86_64-linux. On i686-linux mesa >> didn't build unfortunately. >> I haven't tried other architectures. >> #2: Add vulkan.scm to gnu/local.mk. >> #3: Create vulkan.scm and add spirv-headers. >> #4: Add spirv-tools to vulkan.scm. >> #5: Add glslang to vulkan.scm. >> #6: Add vulkan-icd-loader to vulkan.scm. >> This provides the 'vulkaninfo' tool that you can use to query if your >> system is Vulkan-capable. >> >> I tested it out after a full rebuild on a Vulkan-capable system. >> 'vulkaninfo' showed Vulkan was available on that system. > > Great! Unfortunately the mesa patch did not apply for me, can you > rebase this series on current 'core-updates'? We've had some trouble > getting Hydra started on it, so we can probably squeeze this in. > > Some comments.. > >> From cb4266a1a21f4e16d4d32bbca683b5aae938986d Mon Sep 17 00:00:00 2001 >> From: Rutger Helling <rhelling <at> mykolab.com> >> Date: Sat, 9 Dec 2017 00:28:36 +0100 >> Subject: [PATCH] gnu: mesa: Enable Vulkan drivers for Intel and Radeon on >> x86-64. >> >> * gnu/packages/gl.scm (mesa)[arguments]: Add >> "--with-vulkan-drivers=intel,radeon" to configure-flags for >> x86_64-linux. [synopsis]: Mention Vulkan. [description]: Mention Vulkan. > > Please add line breaks between the various commit message "fields". > >> --- >> gnu/packages/gl.scm | 17 ++++++++++++----- >> 1 file changed, 12 insertions(+), 5 deletions(-) >> >> diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm >> index 005b49b86..b18861eb7 100644 >> --- a/gnu/packages/gl.scm >> +++ b/gnu/packages/gl.scm >> @@ -296,6 +296,13 @@ also known as DXTn or DXTC) for Mesa.") >> ;; are stuck at OpenGL 2.1 instead of OpenGL 3.0+. >> "--enable-texture-float" >> >> + ;; Enable Vulkan on x86-64. >> + ,@(match (%current-system) >> + ((or "x86_64-linux") >> + '("--with-vulkan-drivers=intel,radeon")) >> + (_ >> + '(""))) >> + >> ;; Also enable the tests. >> "--enable-gallium-tests" >> >> @@ -343,11 +350,11 @@ also known as DXTn or DXTC) for Mesa.") >> (string-append "\"" out "/lib/dri/gbm_dri.so"))) >> #t)))))) >> (home-page "https://mesa3d.org/") >> - (synopsis "OpenGL implementation") >> - (description "Mesa is a free implementation of the OpenGL specification - >> -a system for rendering interactive 3D graphics. A variety of device drivers >> -allows Mesa to be used in many different environments ranging from software >> -emulation to complete hardware acceleration for modern GPUs.") >> + (synopsis "OpenGL and Vulkan implementations") >> + (description "Mesa is a free implementation of the OpenGL and Vulkan >> +specifications - systems for rendering interactive 3D graphics. A variety of >> +device drivers allows Mesa to be used in many different environments ranging >> +from software emulation to complete hardware acceleration for modern GPUs.") >> (license license:x11))) >> >> (define-public mesa-headers >> -- >> 2.15.1 >> >> From 35b07f1e24c8597bdd504ae9f986abed486cb8df Mon Sep 17 00:00:00 2001 >> From: Rutger Helling <rhelling <at> mykolab.com> >> Date: Fri, 8 Dec 2017 13:39:16 +0100 >> Subject: [PATCH] gnu: local.mk: Add vulkan.scm. >> >> * gnu/local.mk: Add vulkan.scm. >> --- >> gnu/local.mk | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/gnu/local.mk b/gnu/local.mk >> index a0e3f6ebe..51876487d 100644 >> --- a/gnu/local.mk >> +++ b/gnu/local.mk >> @@ -418,6 +418,7 @@ GNU_SYSTEM_MODULES = \ >> %D%/packages/vim.scm \ >> %D%/packages/virtualization.scm \ >> %D%/packages/vpn.scm \ >> + %D%/packages/vulkan.scm \ >> %D%/packages/w3m.scm \ >> %D%/packages/wdiff.scm \ >> %D%/packages/web.scm \ >> -- >> 2.15.1 >> >> From 043a4adbcf2023cb5b610bb9cb6529aca76c2922 Mon Sep 17 00:00:00 2001 >> From: Rutger Helling <rhelling <at> mykolab.com> >> Date: Fri, 8 Dec 2017 14:10:36 +0100 >> Subject: [PATCH] gnu: vulkan: Add spirv-headers. >> >> * gnu/packages/vulkan.scm: Create file. (spirv-headers): New variable. >> --- >> gnu/packages/vulkan.scm | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 59 insertions(+) >> create mode 100644 gnu/packages/vulkan.scm >> >> diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm >> new file mode 100644 >> index 000000000..2079b8e0a >> --- /dev/null >> +++ b/gnu/packages/vulkan.scm >> @@ -0,0 +1,59 @@ >> +;;; GNU Guix --- Functional package management for GNU >> +;;; Copyright (c) 2017 Rutger Helling <rhelling <at> mykolab.com> >> +;;; >> +;;; This file is part of GNU Guix. >> +;;; >> +;;; GNU Guix is free software; you can redistribute it and/or modify it >> +;;; under the terms of the GNU General Public License as published by >> +;;; the Free Software Foundation; either version 3 of the License, or (at >> +;;; your option) any later version. >> +;;; >> +;;; GNU Guix is distributed in the hope that it will be useful, but >> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of >> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +;;; GNU General Public License for more details. >> +;;; >> +;;; You should have received a copy of the GNU General Public License >> +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. >> + >> +(define-module (gnu packages vulkan) >> + #:use-module ((guix licenses) #:prefix license:) >> + #:use-module (guix packages) >> + #:use-module (guix git-download) >> + #:use-module (guix build-system cmake) >> + #:use-module (gnu packages)) >> + >> +(define-public spirv-headers >> + (let ((commit "98b01515724c428d0f0a5d01deffcce0f5f5e61c") >> + (revision "1")) >> + (package >> + (name "spirv-headers") >> + (version (string-append "0.0-" revision "." (string-take commit 9))) >> + (source >> + (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/KhronosGroup/SPIRV-Headers") >> + (commit commit))) >> + (sha256 >> + (base32 >> + "15bknwkv3xwmjs3lmkp282a1wrp0da1b4lp45i4yiav04zmqygj2")) >> + (file-name (string-append name "-" version "-checkout")))) >> + (build-system cmake-build-system) >> + (arguments >> + `(#:tests? #f ;; No tests >> + #:phases (modify-phases %standard-phases >> + (replace 'install >> + (lambda* >> + (#:key outputs #:allow-other-keys) >> + (system* "cmake" "-E" "copy_directory" >> + "../source/include/spirv" (string-append >> + (assoc-ref outputs "out") >> + "/include/spirv"))))))) > > Please use (zero? (system* ...)) here so the return value is checked. > >> + (home-page "https://github.com/KhronosGroup/SPIRV-Headers") >> + (synopsis "Machine-readable files from the SPIR-V Registry") >> + (description "SPIRV-Headers is a repository containing machine-readable >> +files from the SPIR-V Registry.") >> + (license license:x11-style)))) ;; Custom license. See >> + ;; https://github.com/KhronosGroup/SPIRV-Headers/blob/master/LICENSE for >> + ;; details. > > You can use the 'non-copyleft' procedure here. > >> -- >> 2.15.1 >> >> From 80e82f1f92823e04893e8400dc82b69e890c7276 Mon Sep 17 00:00:00 2001 >> From: Rutger Helling <rhelling <at> mykolab.com> >> Date: Fri, 8 Dec 2017 14:56:36 +0100 >> Subject: [PATCH] gnu: vulkan: Add spirv-tools. >> >> * gnu/packages/vulkan.scm (spirv-tools): New variable. >> --- >> gnu/packages/vulkan.scm | 35 ++++++++++++++++++++++++++++++++++- >> 1 file changed, 34 insertions(+), 1 deletion(-) >> >> diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm >> index 2079b8e0a..248dc206c 100644 >> --- a/gnu/packages/vulkan.scm >> +++ b/gnu/packages/vulkan.scm >> @@ -19,9 +19,12 @@ >> (define-module (gnu packages vulkan) >> #:use-module ((guix licenses) #:prefix license:) >> #:use-module (guix packages) >> + #:use-module (guix download) >> #:use-module (guix git-download) >> #:use-module (guix build-system cmake) >> - #:use-module (gnu packages)) >> + #:use-module (gnu packages) >> + #:use-module (gnu packages pkg-config) >> + #:use-module (gnu packages python)) >> >> (define-public spirv-headers >> (let ((commit "98b01515724c428d0f0a5d01deffcce0f5f5e61c") >> @@ -57,3 +60,33 @@ files from the SPIR-V Registry.") >> (license license:x11-style)))) ;; Custom license. See >> ;; https://github.com/KhronosGroup/SPIRV-Headers/blob/master/LICENSE for >> ;; details. >> + >> +(define-public spirv-tools >> + (package >> + (name "spirv-tools") >> + (version "2017.1") >> + (source >> + (origin >> + (method url-fetch) >> + (uri (string-append "https://github.com/KhronosGroup/SPIRV-Tools/archive/v" >> + version ".tar.gz")) >> + (sha256 >> + (base32 >> + "009vflaa71a7xhvmm23f4sdbcgdkl1k4facqkwsg6djha2sdpsqq")) >> + (file-name (string-append name "-" version ".tar.gz")))) >> + (build-system cmake-build-system) >> + (arguments >> + `(#:configure-flags (list (string-append "-DCMAKE_INSTALL_LIBDIR=" >> + (assoc-ref %outputs "out") >> + "/lib") >> + (string-append "-DSPIRV-Headers_SOURCE_DIR=" >> + (assoc-ref %build-inputs >> + "spirv-headers"))))) >> + (inputs `(("python" ,python) >> + ("spirv-headers" ,spirv-headers))) >> + (native-inputs `(("pkg-config", pkg-config))) >> + (home-page "https://github.com/KhronosGroup/SPIRV-Tools") >> + (synopsis "API and commands for processing SPIR-V modules") >> + (description "The SPIR-V Tools project provides an API and commands for >> +processing SPIR-V modules.") >> + (license license:asl2.0))) >> -- >> 2.15.1 >> >> From dd17b03c487b64212fae77a406075fc83514a369 Mon Sep 17 00:00:00 2001 >> From: Rutger Helling <rhelling <at> mykolab.com> >> Date: Fri, 8 Dec 2017 15:56:34 +0100 >> Subject: [PATCH] gnu: vulkan: Add glslang. >> >> * gnu/packages/vulkan.scm (glslang): New variable. >> --- >> gnu/packages/vulkan.scm | 39 +++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 39 insertions(+) >> >> diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm >> index 248dc206c..03562e45d 100644 >> --- a/gnu/packages/vulkan.scm >> +++ b/gnu/packages/vulkan.scm >> @@ -23,6 +23,7 @@ >> #:use-module (guix git-download) >> #:use-module (guix build-system cmake) >> #:use-module (gnu packages) >> + #:use-module (gnu packages bison) >> #:use-module (gnu packages pkg-config) >> #:use-module (gnu packages python)) >> >> @@ -90,3 +91,41 @@ files from the SPIR-V Registry.") >> (description "The SPIR-V Tools project provides an API and commands for >> processing SPIR-V modules.") >> (license license:asl2.0))) >> + >> +(define-public glslang >> + ;; Version 3.0 is too old for vulkan-icd-loader. Use a recent git commit >> + ;; until the next stable version. >> + (let ((commit "471bfed0621162a7513fc24a51e8a1ccc2e640ff") >> + (revision "1")) >> + (package >> + (name "glslang") >> + (version (string-append "0.0-" revision "." (string-take commit 9))) >> + (source >> + (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/KhronosGroup/glslang") >> + (commit commit))) >> + (sha256 >> + (base32 >> + "0m2vljmrqppp80ghbbwfnayqw2canxlcjhgy6jw9xjdssln0d3pd")) >> + (file-name (string-append name "-" version "-checkout")))) >> + (build-system cmake-build-system) >> + (arguments >> + `(#:tests? #f ;; No tests >> + ;; glslang tries to set CMAKE_INSTALL_PREFIX manually. Remove the >> + ;; offending line. >> + #:phases (modify-phases %standard-phases >> + (add-after 'patch-source-shebangs 'fix-cmakelists >> + (lambda _ >> + (substitute* "CMakeLists.txt" >> + (("set.*CMAKE_INSTALL_PREFIX.*") ""))))))) > > Return #t here since (substitute* ...) has an undefined return value. > > The rest LGTM at a cursory glance. Can you send updated patches? > > TIA!
[Message part 2 (text/html, inline)]
[0001-gnu-mesa-Enable-Vulkan-drivers-for-Intel-and-Radeon-v2.patch (text/x-diff, attachment)]
[0002-gnu-local.mk-Add-vulkan.scm.patch (text/x-diff, attachment)]
[0003-gnu-vulkan-Add-spirv-headers-v2.patch (text/x-diff, attachment)]
[0004-gnu-vulkan-Add-spirv-tools.patch (text/x-diff, attachment)]
[0005-gnu-vulkan-Add-glslang-v2.patch (text/x-diff, attachment)]
[0006-gnu-vulkan-Add-vulkan-icd-loader.patch (text/x-diff, attachment)]
[0007-gnu-retroarch-Enable-Vulkan-support.patch (text/x-diff, attachment)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.