X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/223492f35025215f2ea07f61a75e53b96794e6ed..532c0e745aa81b5ac5ed8cb2b4f9b02aa720d9a9:/gnu/packages/wine.scm diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index d2c0bf0a44..98b435cb8d 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -3,8 +3,8 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2017, 2018, 2019 Rutger Helling -;;; Copyright © 2017 Nicolas Goaziou -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2020 Nicolas Goaziou +;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2019 Pierre Neidhardt ;;; ;;; This file is part of GNU Guix. @@ -38,12 +38,12 @@ #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages bison) - #:use-module (gnu packages compression) #:use-module (gnu packages cups) #:use-module (gnu packages databases) #: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) @@ -51,6 +51,7 @@ #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages kerberos) + #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages mingw) #:use-module (gnu packages openldap) @@ -59,7 +60,6 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages mp3) - #:use-module (gnu packages ncurses) #:use-module (gnu packages photo) #:use-module (gnu packages samba) #:use-module (gnu packages scanner) @@ -75,29 +75,34 @@ (define-public wine (package (name "wine") - (version "4.0.2") - (source (origin - (method url-fetch) - (uri (string-append "https://dl.winehq.org/wine/source/" - (version-major+minor version) - "/wine-" version ".tar.xz")) - (sha256 - (base32 - "0x5x9pvhryzhq1m7i8gx5wwwj341zz05zymadlhfw5w45xlm0h4r")))) + (version "6.0") + (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"))) + (sha256 + (base32 "0micb3l54cc2cl3v5q92hzvkxxiwi9lmiv72caf45vl35xghd4xl")))) (build-system gnu-build-system) - (native-inputs `(("pkg-config" ,pkg-config) - ("gettext" ,gettext-minimal) - ("flex" ,flex) - ("bison" ,bison) - ("perl" ,perl))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ("gettext" ,gettext-minimal) + ("perl" ,perl) + ("pkg-config" ,pkg-config))) (inputs `(("alsa-lib" ,alsa-lib) ("dbus" ,dbus) ("cups" ,cups) ("eudev" ,eudev) + ("faudio" ,faudio) ("fontconfig" ,fontconfig) ("freetype" ,freetype) - ("glu" ,glu) ("gnutls" ,gnutls) ("gst-plugins-base" ,gst-plugins-base) ("lcms" ,lcms) @@ -110,7 +115,8 @@ ("libsane" ,sane-backends) ("libpcap" ,libpcap) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) + ("libusb" ,libusb) ("libtiff" ,libtiff) ("libICE" ,libice) ("libX11" ,libx11) @@ -123,15 +129,13 @@ ("libXxf86vm" ,libxxf86vm) ("libXcomposite" ,libxcomposite) ("mit-krb5" ,mit-krb5) - ("ncurses" ,ncurses) ("openal" ,openal) ("pulseaudio" ,pulseaudio) ("sdl2" ,sdl2) ("unixodbc" ,unixodbc) ("v4l-utils" ,v4l-utils) ("vkd3d" ,vkd3d) - ("vulkan-loader" ,vulkan-loader) - ("zlib" ,zlib))) + ("vulkan-loader" ,vulkan-loader))) (arguments `(;; Force a 32-bit build targeting a similar architecture, i.e.: ;; armhf for armhf/aarch64, i686 for i686/x86_64. @@ -154,7 +158,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) @@ -164,21 +168,22 @@ (let* ((out (assoc-ref outputs "out")) (icd (string-append out "/share/vulkan/icd.d"))) (mkdir-p icd) - (copy-file (string-append (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/radeon_icd.i686.json") + (copy-file (string-append + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/radeon_icd.i686.json") (string-append icd "/radeon_icd.i686.json")) - (copy-file (string-append (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/intel_icd.i686.json") + (copy-file (string-append + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/intel_icd.i686.json") (string-append icd "/intel_icd.i686.json")) (wrap-program (string-append out "/bin/wine-preloader") - `("VK_ICD_FILENAMES" ":" = - (,(string-append icd - "/radeon_icd.i686.json" ":" - icd "/intel_icd.i686.json")))) + `("VK_ICD_FILENAMES" ":" = + (,(string-append icd + "/radeon_icd.i686.json" ":" + icd "/intel_icd.i686.json")))) #t))))) (_ - `()) - ) + `())) (add-after 'configure 'patch-dlopen-paths ;; Hardcode dlopened sonames to absolute paths. (lambda _ @@ -216,38 +221,39 @@ 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) - ((or "x86_64-linux") - `((add-after 'copy-wine32-binaries 'wrap-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out"))) - (wrap-program (string-append out "/bin/wine-preloader") - `("VK_ICD_FILENAMES" ":" = - (,(string-append (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/radeon_icd.x86_64.json" ":" - (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/intel_icd.x86_64.json" ":" - (assoc-ref inputs "wine") - "/share/vulkan/icd.d/radeon_icd.i686.json" ":" - (assoc-ref inputs "wine") - "/share/vulkan/icd.d/intel_icd.i686.json")))) - (wrap-program (string-append out "/bin/wine64-preloader") - `("VK_ICD_FILENAMES" ":" = - (,(string-append (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/radeon_icd.x86_64.json" - ":" (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/intel_icd.x86_64.json" - ":" (assoc-ref inputs "wine") - "/share/vulkan/icd.d/radeon_icd.i686.json" - ":" (assoc-ref inputs "wine") - "/share/vulkan/icd.d/intel_icd.i686.json")))) - #t))))) - (_ - `()) - ) + ((or "x86_64-linux") + `((add-after 'copy-wine32-binaries 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/wine-preloader") + `("VK_ICD_FILENAMES" ":" = + (,(string-append + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/radeon_icd.x86_64.json" ":" + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/intel_icd.x86_64.json" ":" + (assoc-ref inputs "wine") + "/share/vulkan/icd.d/radeon_icd.i686.json" ":" + (assoc-ref inputs "wine") + "/share/vulkan/icd.d/intel_icd.i686.json")))) + (wrap-program (string-append out "/bin/wine64-preloader") + `("VK_ICD_FILENAMES" ":" = + (,(string-append + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/radeon_icd.x86_64.json" + ":" (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/intel_icd.x86_64.json" + ":" (assoc-ref inputs "wine") + "/share/vulkan/icd.d/radeon_icd.i686.json" + ":" (assoc-ref inputs "wine") + "/share/vulkan/icd.d/intel_icd.i686.json")))) + #t))))) + (_ + `())) (add-after 'install 'copy-wine32-binaries (lambda* (#:key outputs #:allow-other-keys) (let* ((wine32 (assoc-ref %build-inputs "wine")) @@ -260,6 +266,13 @@ integrate Windows applications into your desktop.") (copy-file (string-append wine32 "/bin/.wine-preloader-real") (string-append out "/bin/wine-preloader")) #t))) + (add-after 'install 'copy-wine32-libraries + (lambda* (#:key outputs #:allow-other-keys) + (let* ((wine32 (assoc-ref %build-inputs "wine")) + (out (assoc-ref %outputs "out"))) + (copy-recursively (string-append wine32 "/lib/wine32") + (string-append out "/lib/wine32")) + #t))) (add-after 'compress-documentation 'copy-wine32-manpage (lambda* (#:key outputs #:allow-other-keys) (let* ((wine32 (assoc-ref %build-inputs "wine")) @@ -321,7 +334,7 @@ integrate Windows applications into your desktop.") (define-public wine-staging-patchset-data (package (name "wine-staging-patchset-data") - (version "4.18") + (version "5.13") (source (origin (method git-fetch) @@ -330,7 +343,7 @@ integrate Windows applications into your desktop.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "03z0haf47mpm2aj9cji3wma4jy6j12wz10kkbgmbgrkkrc5lcqc2")))) + (base32 "0sw7790gsi3h08xgc8i1y282rk8xrdhqjlwpvbpvyw5zi0i95cvq")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) @@ -367,18 +380,22 @@ 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 - "0chf6vdy41kg75liibkb862442zwi8dbjzf6l5arcy2z4580a2yi")))) - (inputs `(("autoconf" ,autoconf) ; for autoreconf - ("faudio" ,faudio) + (source + (let* ((wine-version (version-major+minor version)) + (subdirectory (string-append + (version-major version) + (if (string-suffix? ".0" wine-version) + ".0" + ".x")))) + (origin + (method url-fetch) + (uri (string-append "https://dl.winehq.org/wine/source/" + subdirectory "/" + "wine-" wine-version ".tar.xz")) + (file-name (string-append name "-" wine-version ".tar.xz")) + (sha256 + (base32 "0lh1bqr8xq1acz5d0cb50rvhw3h6h1vqprx5wlyrjhdg58f5qsn4"))))) + (inputs `(("autoconf" ,autoconf) ; for autoreconf ("ffmpeg" ,ffmpeg) ("gtk+" ,gtk+) ("libva" ,libva) @@ -390,7 +407,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) @@ -463,7 +480,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) @@ -549,7 +566,7 @@ version)") ;; This package provides 32-bit dxvk libraries on 64-bit systems. (package (name "dxvk32") - (version "1.4.4") + (version "1.5.5") (home-page "https://github.com/doitsujin/dxvk/") (source (origin (method git-fetch) @@ -559,7 +576,7 @@ version)") (file-name (git-file-name name version)) (sha256 (base32 - "0zr8hqyig18q4wp96cmfrkrgxxbgxida6k8cv6qbbldni29qy20w")))) + "1inl0qswgvbp0fs76md86ilqf9mbshkpjm8ga81khn9zd6v3fvan")))) (build-system meson-build-system) (arguments `(#:system "i686-linux" @@ -567,10 +584,14 @@ version)") (string-append (assoc-ref %build-inputs "source") "/build-wine32.txt")))) (native-inputs - `(("glslang" ,glslang) - ("wine" ,wine))) - (synopsis "Vulkan-based D3D11 and D3D10 implementation for Wine") - (description "A Vulkan-based translation layer for Direct3D 10/11 which + ;; 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.") @@ -598,7 +619,8 @@ Use @command{setup_dxvk} to install the required libraries to a Wine prefix.") (dxvk32 (assoc-ref inputs "dxvk32"))) (mkdir-p (string-append out "/lib32")) (copy-recursively (string-append dxvk32 "/lib") - (string-append out "/lib32")))))) + (string-append out "/lib32")) + #t)))) '()) (add-after 'install 'install-setup (lambda* (#:key inputs outputs #:allow-other-keys) @@ -615,11 +637,11 @@ Use @command{setup_dxvk} to install the required libraries to a Wine prefix.") ("x86_64-linux" "../lib32") (_ "../lib"))) (("x64") "../lib")))))))) - (native-inputs - `(("glslang" ,glslang))) (inputs `(("wine" ,(match (%current-system) - ("x86_64-linux" wine64) + ;; ("x86_64-linux" wine64) + ("x86_64-linux" wine64-staging) + ;; ("x86_64-linux" mingw-w64-x86_64) (_ wine))) ,@(match (%current-system) ("x86_64-linux"