X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/2a63974df9b6ce2ec076b24f300e63b6b3df549f..d614f0bba90c86c836131eea3ebb9cbd30f19abf:/gnu/packages/wine.scm diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index b8a2264153..35defc326b 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -3,8 +3,9 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2017, 2018, 2019 Rutger Helling -;;; Copyright © 2017 Nicolas Goaziou +;;; Copyright © 2017, 2020 Nicolas Goaziou ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2019 Pierre Neidhardt ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system meson) #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages admin) @@ -42,6 +44,7 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages flex) #:use-module (gnu packages image) + #:use-module (gnu packages gcc) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) @@ -50,6 +53,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages kerberos) #:use-module (gnu packages linux) + #:use-module (gnu packages mingw) #:use-module (gnu packages openldap) #:use-module (gnu packages perl) #:use-module (gnu packages pulseaudio) @@ -72,15 +76,15 @@ (define-public wine (package (name "wine") - (version "4.0.1") - (source (origin - (method url-fetch) - (uri (string-append "https://dl.winehq.org/wine/source/" - (version-major+minor version) - "/wine-" version ".tar.xz")) - (sha256 - (base32 - "0j29df0px6dzin4j0cbxgza4msvf9spmwranv25krq1g9kq959nk")))) + (version "5.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://dl.winehq.org/wine/source/" + (version-major+minor version) + "/wine-" version ".tar.xz")) + (sha256 + (base32 "1d0kcy338radq07hrnzcpc9lc9j2fvzjh37q673002x8d6x5058q")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("gettext" ,gettext-minimal) @@ -92,6 +96,7 @@ ("dbus" ,dbus) ("cups" ,cups) ("eudev" ,eudev) + ("faudio" ,faudio) ("fontconfig" ,fontconfig) ("freetype" ,freetype) ("glu" ,glu) @@ -151,7 +156,7 @@ #:phases (modify-phases %standard-phases - ;; Explicitely set the 32-bit version of vulkan-loader when installing + ;; Explicitly set the 32-bit version of vulkan-loader when installing ;; to i686-linux or x86_64-linux. ;; TODO: Add more JSON files as they become available in Mesa. ,@(match (%current-system) @@ -213,7 +218,7 @@ integrate Windows applications into your desktop.") (string-append "libdir=" %output "/lib/wine64")) #:phases (modify-phases %standard-phases - ;; Explicitely set both the 64-bit and 32-bit versions of vulkan-loader + ;; Explicitly set both the 64-bit and 32-bit versions of vulkan-loader ;; when installing to x86_64-linux so both are available. ;; TODO: Add more JSON files as they become available in Mesa. ,@(match (%current-system) @@ -318,7 +323,7 @@ integrate Windows applications into your desktop.") (define-public wine-staging-patchset-data (package (name "wine-staging-patchset-data") - (version "4.14") + (version "5.0") (source (origin (method git-fetch) @@ -327,8 +332,7 @@ integrate Windows applications into your desktop.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1s17hcrp1aa0v99y5iav2s0lxdx2rzgm7z0c4zhxyydqxj399f5j")))) + (base32 "054m2glvav29qnlgr3p36kahyv3kbxzba82djzqpc7cmsrin0d3f")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) @@ -365,18 +369,21 @@ integrate Windows applications into your desktop.") (inherit wine) (name "wine-staging") (version (package-version wine-staging-patchset-data)) - (source (origin - (method url-fetch) - (uri (string-append - "https://dl.winehq.org/wine/source/" - (version-major version) ".x" - "/wine-" version ".tar.xz")) - (file-name (string-append name "-" version ".tar.xz")) - (sha256 - (base32 - "1rl1a3k5sr0hyxc61d68kwandhxcnxwv6b77vh7x2rkl1h4nxmfs")))) - (inputs `(("autoconf" ,autoconf) ; for autoreconf - ("faudio" ,faudio) + (source + (origin + (method url-fetch) + (uri (let ((dir (string-append + (version-major version) + (if (string-suffix? ".0" (version-major+minor version)) + ".0" + ".x")))) + (string-append + "https://dl.winehq.org/wine/source/" dir + "/wine-" version ".tar.xz"))) + (file-name (string-append name "-" version ".tar.xz")) + (sha256 + (base32 "1d0kcy338radq07hrnzcpc9lc9j2fvzjh37q673002x8d6x5058q")))) + (inputs `(("autoconf" ,autoconf) ; for autoreconf ("ffmpeg" ,ffmpeg) ("gtk+" ,gtk+) ("libva" ,libva) @@ -388,7 +395,7 @@ integrate Windows applications into your desktop.") (arguments `(#:phases (modify-phases %standard-phases - ;; Explicitely set the 32-bit version of vulkan-loader when installing + ;; Explicitly set the 32-bit version of vulkan-loader when installing ;; to i686-linux or x86_64-linux. ;; TODO: Add more JSON files as they become available in Mesa. ,@(match (%current-system) @@ -461,7 +468,7 @@ integrated into the main branch.") (string-append "libdir=" %output "/lib/wine64")) #:phases (modify-phases %standard-phases - ;; Explicitely set both the 64-bit and 32-bit versions of vulkan-loader + ;; Explicitly set both the 64-bit and 32-bit versions of vulkan-loader ;; when installing to x86_64-linux so both are available. ;; TODO: Add more JSON files as they become available in Mesa. ,@(match (%current-system) @@ -542,3 +549,89 @@ integrated into the main branch.") (synopsis "Implementation of the Windows API (staging branch, WoW64 version)") (supported-systems '("x86_64-linux" "aarch64-linux")))) + +(define dxvk32 + ;; This package provides 32-bit dxvk libraries on 64-bit systems. + (package + (name "dxvk32") + (version "1.5.4") + (home-page "https://github.com/doitsujin/dxvk/") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0yhxd5rnn5mcvcb2n062z9wqqwxjq5c0rzfbjz1z9ppznj8gn37i")))) + (build-system meson-build-system) + (arguments + `(#:system "i686-linux" + #:configure-flags (list "--cross-file" + (string-append (assoc-ref %build-inputs "source") + "/build-wine32.txt")))) + (native-inputs + ;; Since 1.5 dxvk needs gcc-8.1. See + ;; https://github.com/doitsujin/dxvk/issues/1292#issuecomment-567067373. + `(("gcc" ,gcc-9) + ("glslang" ,glslang))) + (inputs + `(("wine" ,wine-staging))) + (synopsis "Vulkan-based D3D9, D3D10 and D3D11 implementation for Wine") + (description "A Vulkan-based translation layer for Direct3D 9/10/11 which +allows running complex 3D applications with high performance using Wine. + +Use @command{setup_dxvk} to install the required libraries to a Wine prefix.") + (supported-systems '("x86_64-linux")) + (license license:zlib))) + +(define-public dxvk + (package + (inherit dxvk32) + (name "dxvk") + (arguments + `(#:configure-flags (list "--cross-file" + (string-append (assoc-ref %build-inputs "source") + "/build-wine" + ,(match (%current-system) + ("x86_64-linux" "64") + (_ "32")) + ".txt")) + #:phases + (modify-phases %standard-phases + ,@(if (string=? (%current-system) "x86_64-linux") + `((add-after 'unpack 'install-32 + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (dxvk32 (assoc-ref inputs "dxvk32"))) + (mkdir-p (string-append out "/lib32")) + (copy-recursively (string-append dxvk32 "/lib") + (string-append out "/lib32")))))) + '()) + (add-after 'install 'install-setup + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin/setup_dxvk"))) + (mkdir-p (string-append out "/bin")) + (copy-file "../source/setup_dxvk.sh" + bin) + (chmod bin #o755) + (substitute* bin + (("wine=\"wine\"") + (string-append "wine=" (assoc-ref inputs "wine") "/bin/wine")) + (("x32") ,(match (%current-system) + ("x86_64-linux" "../lib32") + (_ "../lib"))) + (("x64") "../lib")))))))) + (inputs + `(("wine" ,(match (%current-system) + ;; ("x86_64-linux" wine64) + ("x86_64-linux" wine64-staging) + ;; ("x86_64-linux" mingw-w64-x86_64) + (_ wine))) + ,@(match (%current-system) + ("x86_64-linux" + `(("dxvk32" ,dxvk32))) + (_ '())))) + (supported-systems '("i686-linux" "x86_64-linux"))))