summary refs log tree commit diff
path: root/gnu/packages/wine.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/wine.scm')
-rw-r--r--gnu/packages/wine.scm93
1 files changed, 74 insertions, 19 deletions
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index e71538f1b0..0327deaf24 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -26,9 +26,13 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
+  #:use-module (gnu packages autotools)
+  #: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)
@@ -47,11 +51,13 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pulseaudio)
   #: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)
+  #:use-module (gnu packages sdl)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
   #:use-module (gnu packages vulkan)
@@ -212,34 +218,83 @@ integrate Windows applications into your desktop.")
     (synopsis "Implementation of the Windows API (WoW64 version)")
     (supported-systems '("x86_64-linux" "aarch64-linux"))))
 
+(define-public wine-staging-patchset-data
+  (package
+   (name "wine-staging-patchset-data")
+   (version "3.3")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append "https://github.com/wine-staging/wine-staging/archive/v"
+                         version ".zip"))
+     (file-name (string-append name "-" version ".zip"))
+     (sha256
+      (base32
+       "16l28vrhqn27kipqwms622jz1prfky8qkjb8pj747k3qjnm2k1g9"))))
+   (build-system trivial-build-system)
+   (native-inputs
+    `(("bash" ,bash)
+      ("coreutils" ,coreutils)
+      ("unzip" ,unzip)))
+   (arguments
+    `(#:modules ((guix build utils))
+      #:builder
+      (begin
+        (use-modules (guix build utils))
+        (let* ((out (assoc-ref %outputs "out"))
+               (wine-staging (string-append out "/share/wine-staging"))
+               (source (assoc-ref %build-inputs "source"))
+               (sh (string-append (assoc-ref %build-inputs "bash") "/bin/bash"))
+               (env (string-append (assoc-ref %build-inputs "coreutils") "/bin/env"))
+               (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
+          (copy-file source (string-append ,name "-" ,version ".zip"))
+          (invoke unzip (string-append ,name "-" ,version ".zip"))
+          (substitute* (string-append "wine-staging-" ,version
+                                      "/patches/patchinstall.sh") (("/bin/sh") sh))
+          (substitute* (string-append "wine-staging-" ,version
+                                      "/patches/gitapply.sh") (("/usr/bin/env") env))
+          (mkdir-p wine-staging)
+          (copy-recursively (string-append "wine-staging-" ,version)
+                            wine-staging)))))
+   (home-page "https://github.com/wine-staging")
+   (synopsis "Patchset for Wine")
+   (description
+    "wine-staging-patchset-data contains the patchset to build Wine-Staging.")
+   (license license:lgpl2.1+)))
+
 (define-public wine-staging
   (package
     (inherit wine)
     (name "wine-staging")
-    (version "2.21")
+    (version (package-version wine-staging-patchset-data))
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://github.com/wine-compholio/wine-patched/archive/"
-                    "staging-" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+                    "https://dl.winehq.org/wine/source/3.x/wine-" version
+                    ".tar.xz"))
+              (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1pjaxj7h3q6y356np908fvsx0bf7yx5crqvgl4hza6gfssdmsr5r"))))
-    (inputs `(("gtk+", gtk+)
+                "0cx31jsll7mxd9r7v0vpahajqwb6da6cpwybv06l5ydkgfrbv505"))))
+    (inputs `(("autoconf" ,autoconf) ; for autoreconf
+              ("gtk+", gtk+)
               ("libva", libva)
+              ("python" ,python)
+              ("sdl2" ,sdl2)
+              ("util-linux" ,util-linux) ; for hexdump
               ("vulkan-icd-loader" ,vulkan-icd-loader)
+              ("wine-staging-patchset-data" ,wine-staging-patchset-data)
               ,@(package-inputs wine)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'hardcode-libvulkan-path
+         (add-before 'configure 'patch-source-wine-staging
            (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))
+             (let* ((source (assoc-ref %build-inputs "source"))
+                    (script (string-append (assoc-ref %build-inputs
+                            "wine-staging-patchset-data")
+                            "/share/wine-staging/patches/patchinstall.sh")))
+               (invoke script (string-append "DESTDIR=" ".") "--all")
                #t)))
          (add-after 'configure 'patch-dlopen-paths
            ;; Hardcode dlopened sonames to absolute paths.
@@ -261,7 +316,7 @@ the development branch yet.  The idea of Wine-Staging is to provide
 experimental features faster to end users and to give developers the
 possibility to discuss and improve their patches before they are
 integrated into the main branch.")
-    (home-page "https://wine-staging.com")
+    (home-page "https://github.com/wine-staging")
     ;; In addition to the regular Wine license (lgpl2.1+), Wine-Staging
     ;; provides Liberation and WenQuanYi Micro Hei fonts.  Those use
     ;; different licenses.  In particular, the latter is licensed under
@@ -281,13 +336,13 @@ integrated into the main branch.")
              (string-append "libdir=" %output "/lib/wine64"))
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'hardcore-libvulkan-path
+         (add-before 'configure 'patch-source-wine-staging
            (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))
+             (let* ((source (assoc-ref %build-inputs "source"))
+                    (script (string-append (assoc-ref %build-inputs
+                            "wine-staging-patchset-data")
+                            "/share/wine-staging/patches/patchinstall.sh")))
+               (invoke script (string-append "DESTDIR=" ".") "--all")
                #t)))
          (add-after 'install 'copy-wine32-binaries
            (lambda* (#:key outputs #:allow-other-keys)