;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;;
#:use-module (gnu packages scanner)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
+ #:use-module (gnu packages vulkan)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (ice-9 match))
(define-public wine
(package
(name "wine")
- (version "2.0.3")
+ (version "3.0")
(source (origin
(method url-fetch)
- (uri (string-append "https://dl.winehq.org/wine/source/2.0"
+ (uri (string-append "https://dl.winehq.org/wine/source/"
+ (version-major+minor version)
"/wine-" version ".tar.xz"))
(sha256
(base32
- "0mmyc94r5drffir8zr8jx6iawhgfzjk96fj494aa18vhz1jcc4d8"))))
+ "1v7vq9iinkscbq6wg85fb0d2137660fg2nk5iabxkl2wr850asil"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)
translates Windows API calls into POSIX calls on-the-fly, eliminating the
performance and memory penalties of other methods and allowing you to cleanly
integrate Windows applications into your desktop.")
- (license license:lgpl2.1+)
-
- ;; It really only supports IA32, but building on x86_64 will have the same
- ;; effect as building on i686 anyway.
- (supported-systems (delete "mips64el-linux" %supported-systems))))
+ ;; Any platform should be able to build wine, but based on '#:system' these
+ ;; are thr ones we currently support.
+ (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
+ (license license:lgpl2.1+)))
(define-public wine64
(package
(string-append "libdir=" %output "/lib/wine64"))
#:phases
(modify-phases %standard-phases
- (add-after 'install 'copy-wine32-files
+ (add-after 'install 'copy-wine32-binaries
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((wine32 (assoc-ref %build-inputs "wine"))
+ (out (assoc-ref %outputs "out")))
+ ;; Copy the 32-bit binaries needed for WoW64.
+ (copy-file (string-append wine32 "/bin/wine")
+ (string-append out "/bin/wine"))
+ (copy-file (string-append wine32 "/bin/wine-preloader")
+ (string-append out "/bin/wine-preloader"))
+ #t)))
+ (add-after 'compress-documentation 'copy-wine32-manpage
(lambda* (#:key outputs #:allow-other-keys)
- (copy-file (string-append (assoc-ref %build-inputs "wine")
- "/bin/wine") (string-append (assoc-ref
- %outputs "out") "/bin/wine"))
- (copy-file (string-append (assoc-ref %build-inputs "wine")
- "/bin/wine-preloader") (string-append
- (assoc-ref %outputs "out")
- "/bin/wine-preloader"))
- #t))
+ (let* ((wine32 (assoc-ref %build-inputs "wine"))
+ (out (assoc-ref %outputs "out")))
+ ;; Copy the missing man file for the wine binary from wine.
+ (copy-file (string-append wine32 "/share/man/man1/wine.1.gz")
+ (string-append out "/share/man/man1/wine.1.gz"))
+ #t)))
(add-after 'configure 'patch-dlopen-paths
;; Hardcode dlopened sonames to absolute paths.
(lambda _
,@(strip-keyword-arguments '(#:configure-flags #:make-flags #:phases
#:system)
(package-arguments wine))))
- (synopsis "Implementation of the Windows API (WOW64 version)")
+ (synopsis "Implementation of the Windows API (WoW64 version)")
(supported-systems '("x86_64-linux" "aarch64-linux"))))
-;; TODO: This is wine development version, provided for historical reasons.
-;; We can remove it as soon as a new stable release is out.
-(define-public wine-next
- (package (inherit wine)
- (name "wine-next")
- (version "2.11")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://dl.winehq.org/wine/source/2.x"
- "/wine-" version ".tar.xz"))
- (sha256
- (base32
- "0g6cwjyqwc660w33453aklh3hpc0b8rrb88dryn23ah6wannvagg"))))))
-
(define-public wine-staging
(package
(inherit wine)
"1pjaxj7h3q6y356np908fvsx0bf7yx5crqvgl4hza6gfssdmsr5r"))))
(inputs `(("gtk+", gtk+)
("libva", libva)
+ ("vulkan-icd-loader" ,vulkan-icd-loader)
,@(package-inputs wine)))
- (synopsis "Implementation of the Windows API (staging branch)")
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'hardcode-libvulkan-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((libvulkan (string-append (assoc-ref %build-inputs
+ "vulkan-icd-loader") "/lib/libvulkan.so")))
+ ;; Hard-code the path to libvulkan.so.
+ (substitute* "dlls/vulkan/vulkan_thunks.c" (("libvulkan.so")
+ libvulkan))
+ #t)))
+ (add-after 'configure 'patch-dlopen-paths
+ ;; Hardcode dlopened sonames to absolute paths.
+ (lambda _
+ (let* ((library-path (search-path-as-string->list
+ (getenv "LIBRARY_PATH")))
+ (find-so (lambda (soname)
+ (search-path library-path soname))))
+ (substitute* "include/config.h"
+ (("(#define SONAME_.* )\"(.*)\"" _ defso soname)
+ (format #f "~a\"~a\"" defso (find-so soname))))
+ #t))))
+ ,@(strip-keyword-arguments '(#:phases)
+ (package-arguments wine))))
+ (synopsis "Implementation of the Windows API (staging branch, 32-bit only)")
(description "Wine-Staging is the testing area of Wine. It
contains bug fixes and features, which have not been integrated into
the development branch yet. The idea of Wine-Staging is to provide
(string-append "libdir=" %output "/lib/wine64"))
#:phases
(modify-phases %standard-phases
- (add-after 'install 'copy-wine32-files
+ (add-before 'configure 'hardcore-libvulkan-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((libvulkan (string-append (assoc-ref %build-inputs
+ "vulkan-icd-loader") "/lib/libvulkan.so")))
+ ;; Hard-code the path to libvulkan.so.
+ (substitute* "dlls/vulkan/vulkan_thunks.c" (("libvulkan.so")
+ libvulkan))
+ #t)))
+ (add-after 'install 'copy-wine32-binaries
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((wine32 (assoc-ref %build-inputs "wine-staging"))
+ (out (assoc-ref %outputs "out")))
+ ;; Copy the 32-bit binaries needed for WoW64.
+ (copy-file (string-append wine32 "/bin/wine")
+ (string-append out "/bin/wine"))
+ (copy-file (string-append wine32 "/bin/wine-preloader")
+ (string-append out "/bin/wine-preloader"))
+ #t)))
+ (add-after 'compress-documentation 'copy-wine32-manpage
(lambda* (#:key outputs #:allow-other-keys)
- (copy-file (string-append (assoc-ref %build-inputs "wine-staging")
- "/bin/wine") (string-append (assoc-ref
- %outputs "out") "/bin/wine"))
- (copy-file (string-append (assoc-ref %build-inputs "wine-staging")
- "/bin/wine-preloader") (string-append
- (assoc-ref %outputs "out")
- "/bin/wine-preloader"))
- #t))
+ (let* ((wine32 (assoc-ref %build-inputs "wine-staging"))
+ (out (assoc-ref %outputs "out")))
+ ;; Copy the missing man file for the wine binary from
+ ;; wine-staging.
+ (copy-file (string-append wine32 "/share/man/man1/wine.1.gz")
+ (string-append out "/share/man/man1/wine.1.gz"))
+ #t)))
(add-after 'configure 'patch-dlopen-paths
;; Hardcode dlopened sonames to absolute paths.
(lambda _
,@(strip-keyword-arguments '(#:configure-flags #:make-flags #:phases
#:system)
(package-arguments wine-staging))))
- (synopsis "Implementation of the Windows API (staging branch, WOW64
+ (synopsis "Implementation of the Windows API (staging branch, WoW64
version)")
(supported-systems '("x86_64-linux" "aarch64-linux"))))