[bug#77272,2/2] gnu: dolphin-emu: Update to 2503.

Message ID 5a3b9b27f3438825fb9056246acaf56ef8a3bd7c.1742976208.git.msglm@techchud.xyz
State New
Headers
Series [bug#77271,1/2] gnu: openbox: Fix alt-tabbing crash |

Commit Message

msglm March 26, 2025, 8:03 a.m. UTC
  * gnu/packages/emulators.scm (dolphin-emu): Update to 2503, Fix netplay
* gnu/packages/game-development.scm (sfml-3): New Package
* gnu/packages/game-development.scm (miniaudio): New Package
* gnu/packages/networking.scm (enet): Update to 2.30.9

Change-Id: I5242f46e457db6552663c03c19dc0f227efb80cc
---
 gnu/packages/emulators.scm        | 50 ++++++++++++++++--------
 gnu/packages/game-development.scm | 65 +++++++++++++++++++++++++++++++
 gnu/packages/networking.scm       |  4 +-
 gnu/packages/sdl.scm              |  4 +-
 4 files changed, 103 insertions(+), 20 deletions(-)
  

Comments

Ian Eure March 29, 2025, 9:58 p.m. UTC | #1
Hi msglm,

msglm <msglm@techchud.xyz> writes:

> * gnu/packages/emulators.scm (dolphin-emu): Update to 2503, Fix 
> netplay
> * gnu/packages/game-development.scm (sfml-3): New Package
> * gnu/packages/game-development.scm (miniaudio): New Package
> * gnu/packages/networking.scm (enet): Update to 2.30.9

It looks like this and #77271 were opened from the same patch 
series, and based on the TODOs and commented code in this, I’m 
wondering if this one was sent on accident.

Happy to provide feedback if you’d like, but since it seems like 
it might not be ready yet, I thought I’d ask first.

Thanks,
  -- Ian
  
Ian Eure March 30, 2025, 3:09 a.m. UTC | #2
"msglm" <msglm@techchud.xyz> writes:

> I did intentionally send in two patches, but I was not aware 
> that it
> would bundle them together on the mailing list. I'm still new to 
> using
> email-based patching and apologize for this.

No problem at all, even contributors mess up from time to time. 
Each bug needs to have either a single patch, or a series of 
releated patches.  You sent a series, but:

- The patches in the series weren’t related.
- They each created one bug containing half the series (part 1/2 
  in #72271, 2/2 in #72272).

For #72271, you’ll want to make a v2 patch (`git format-patch -v2 
...') and send that to that bug.

For this patch, there are several things that need addressed. 
I’ll reply to the patch with feedback, and you’ll end up sending a 
v2 patch series to this bug when it’s ready.

> Despite this, the version I packaged is much newer, as the 
> previous
> version was 8 years out of date. Furthermore, this version also
> has fixes net-play compatibility for multiplayer emulation.

Yep, it looks like some good fixes!  Thank you for contributing.

 -- Ian
  
Ian Eure March 30, 2025, 3:31 a.m. UTC | #3
Hi msglm,

msglm <msglm@techchud.xyz> writes:

> * gnu/packages/emulators.scm (dolphin-emu): Update to 2503, Fix 
> netplay
> * gnu/packages/game-development.scm (sfml-3): New Package
> * gnu/packages/game-development.scm (miniaudio): New Package
> * gnu/packages/networking.scm (enet): Update to 2.30.9

All these changes need to be separate commits, which are sent as a 
patch series.  See `(guix)Sending a Patch Series' in the Guix 
manual.

The commit messages also need to follow `(standards)Change Logs'.


> Change-Id: I5242f46e457db6552663c03c19dc0f227efb80cc
> ---
>  gnu/packages/emulators.scm        | 50 ++++++++++++++++--------
>  gnu/packages/game-development.scm | 65 
>  +++++++++++++++++++++++++++++++
>  gnu/packages/networking.scm       |  4 +-
>  gnu/packages/sdl.scm              |  4 +-
>  4 files changed, 103 insertions(+), 20 deletions(-)
>
> diff --git a/gnu/packages/emulators.scm 
> b/gnu/packages/emulators.scm
> index e71c2803a3..83ae89c172 100644
> --- a/gnu/packages/emulators.scm
> +++ b/gnu/packages/emulators.scm
> @@ -278,20 +278,19 @@ (define-public desmume
>  ;; Following commits and revision numbers of beta versions 
>  listed at
>  ;; https://dolphin-emu.org/download/.
>  (define-public dolphin-emu
> -  (let ((commit "f9deb68aee962564b1495ff04c54c015e58d086f")
> -        (revision "13669"))

The `package' form needs to be dedented now that the enclosing 
`let' is gone.

>        (source
>         (origin
>           (method git-fetch)
>           (uri (git-reference
>                 (url "https://github.com/dolphin-emu/dolphin")
> -               (commit commit)))
> +               (recursive? #t)

Is it reasonably possible to do a non-recursive clone?  It looks 
like that’s vendoring dependencies, which Guix strongly prefers to 
avoid.  I also notice that many of them are deleted in the loop in 
the next hunk.

> @@ -300,14 +299,19 @@ (define-public dolphin-emu
>               (for-each (lambda (dir)
>                           (delete-file-recursively
>                            (string-append "Externals/" dir)))
> -                       '("LZO" "OpenAL" "Qt" "SFML" "bzip2"
> +                       '(
> +                         ;"LZO" "OpenAL" "Qt" "SFML" "bzip2"
> +
> +                         "LZO" "OpenAL" "Qt" "bzip2" ;;TODO: 
> Ensure SFML is removed and update the package to make it happen
> +

Please remove commented out code and address TODOs.


> -                         "ffmpeg" "fmt" "gettext"
> +                         ;"ffmpeg" "fmt" "gettext"
> +                         "fmt" "gettext"

These too.

> -                         "hidapi" "libpng" "libusb" "mbedtls"
> -                         "miniupnpc" "minizip" "MoltenVK" 
> "pugixml"
> +                         ;"hidapi" "libpng" "libusb" "mbedtls"
> +                         "hidapi" "libusb" "mbedtls"
> +                         ;"miniupnpc" "minizip" "MoltenVK" 
> "pugixml"
> +                         "miniupnpc" "MoltenVK" "pugixml"
>                           "soundtouch"
> -                         "xxhash" "zlib" "zstd"))
> +                         ;"xxhash" "zlib" "zstd"
> +                         "xxhash" "zstd"

And these.

> +                         ))

Parens should be nested on the closing line, not left dangling.


> @@ -339,12 +347,21 @@ (define-public dolphin-emu
>                 ((".*add_subdirectory.*Externals/enet.*") "")
>                 ((".*add_subdirectory.*Externals/soundtouch.*") 
>                 "")
>                 ((".*add_subdirectory.*Externals/xxhash.*") 
>                 ""))))
> -         (patches (search-patches "dolphin-emu-data.patch"))))

Please include a patch deleting this file if it’s no longer 
needed.

> +         ))

Please nest parens.


>        (build-system cmake-build-system)
>        (arguments
>         (list
>          #:phases
>          #~(modify-phases %standard-phases
> +            (add-before 'configure 'set-scm-desc-str
> +                        (lambda _
> +                          ;;For netplay to work, the 
> SCM_REV_STR must match the
> +                          ;;commit hash of whatever version 
> we're on.
> +                          ;;THIS MUST BE UPDATED EVERY UPDATE 
> SO THAT NETPLAY
> +                          ;;CONTINUES TO FUNCTION!

There should be a space between the comment characters text, ex 
";; For netplay..."


> +                          (substitute* 
> "Source/Core/Common/scmrev.h.in" (("#define SCM_REV_STR 
> \"\\$\\{DOLPHIN_WC_REVISION\\}\"") "#define SCM_REV_STR 
> \"9763c0a1e2b9db0c3861d25bc2f5a0ace6a15ee3\""))

It looks like this is populated from the $DOLPHIN_WC_REVISION 
environment variable, can you set that instead of patching the .in 
template?  That would be much cleaner.

You might want to let-bind this at the top of the package 
definition, so it’s easier to see.

This line is too long and needs to be wrapped.

> +                          ))
> +

Please nest closing parens.




> diff --git a/gnu/packages/game-development.scm 
> b/gnu/packages/game-development.scm
> index 91369089b9..bb1ae5bc2f 100644
> --- a/gnu/packages/game-development.scm
> +++ b/gnu/packages/game-development.scm
> @@ -1115,6 +1115,71 @@ (define-public sfml
>  of five modules: system, window, graphics, audio and network.")
>      (license license:zlib)))
>  
> +(define-public sfml-3 ;;For dolphin-emu

Please remove the comment.

If possible, it’d be prefereable to upgrade the existing SFML 
package.  Is 3.0.0 backwards compatible with 2.5.x, or would that 
break that other things that use it?

> +               (package
> +                 (inherit sfml)
> +                 (name "sfml-3")
> +                 (version "3.0.0")
> +                 (inputs (modify-inputs (package-inputs sfml)
> +                                        (prepend libxcursor 
> libxi miniaudio)))
> +                 (source (origin
> +                           (method git-fetch)
> +                           (uri (git-reference
> +                                  (url 
> "https://github.com/SFML/SFML")
> +                                  (recursive? #t)
> +                                  (commit version)))
> +                           (file-name (git-file-name name 
> version))
> +                           (sha256
> +                             (base32
> + 
> "0y37cmpp490gcibajigxsbjc6icggqv40jrhzj2kwygpc0ppzb3v"))
> +                           (modules '((guix build utils)))
> +                           ;(snippet
> +                           ;  '(begin
> +                           ;     ;; Ensure system libraries are 
> used.
> +                           ;     (delete-file-recursively 
> "extlibs")
> +                           ;     #t))

Guix packages should basically never have commented code, please 
delete it.

Does this mean that this version of SFML is building with vendored 
libraries?  Guix strongly discourages vendored libraries, so, it 
shouldn’t.


> +;; For sfml-3

Please remove the comment

> +(define-public miniaudio
> +               (package

Indentation here is wrong, it should be two characters deeper than 
the "(define-public" text.

> +                 (name "miniaudio")
> +                 (version "0.11.22")
> +                 (source (origin
> +                           (method git-fetch)
> +                           (uri (git-reference
> +                                  (url 
> "https://github.com/mackron/miniaudio")
> +                                  (commit version)))
> +                           (file-name (git-file-name name 
> version))
> +                           (sha256
> +                             (base32
> + 
> "1pjaiq71x24n9983vkhjxrsbraa24053h727db22b1rb2xyfrzm3"))))
> +                 (build-system cmake-build-system)
> +                 (arguments
> +                   (list
> +                     #:tests? #f
> +                     #:phases
> +                     #~(modify-phases %standard-phases
> +                                      (replace 'install
> +                                               (lambda _
> +                                                 (let ((out 
> #$output))
> +                                                   ;; Ensure 
> the output directory exists
> +                                                   (mkdir-p 
> (string-append out "/lib"))
> +                                                   ;; Copy the 
> static libraries to the output directory
> +                                                   (for-each 
> (lambda (file)
> + 
> (copy-file file (string-append out "/lib/" file))) ; Ensure the 
> destination is a file
> + 
> '("libminiaudio.a"
> + 
> "libminiaudio_channel_combiner_node.a"
> + 
> "libminiaudio_channel_separator_node.a"
> + 
> "libminiaudio_ltrim_node.a"
> + 
> "libminiaudio_reverb_node.a"
> + 
> "libminiaudio_vocoder_node.a"))))))))

This feels odd.  Does the upstream not have a way to install the 
libraries?  Does it only build static libs, and not .so files?

> diff --git a/gnu/packages/networking.scm 
> b/gnu/packages/networking.scm
> index 65d44e975a..ff3e032a2b 100644
> --- a/gnu/packages/networking.scm
> +++ b/gnu/packages/networking.scm
> @@ -2627,14 +2627,14 @@ (define-public proxychains-ng
>  (define-public enet
>    (package
>      (name "enet")
> -    (version "1.3.17")
> +    (version "1.3.18")
>      (source
>       (origin
>         (method url-fetch)
>         (uri (string-append "http://enet.bespin.org/download/"
>                             "enet-" version ".tar.gz"))
>         (sha256
> -        (base32 
> "1p6f9mby86af6cs7pv6h48032ip9g32c05cb7d9mimam8lchz3x3"))))
> +        (base32 
> "0djxz2j8248bsvbrs42vr39fhxlrqr3lqbhzs7yb92ync19hr2ia"))))
>      (build-system gnu-build-system)
>      (native-inputs
>       (list pkg-config))
> diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
> index 80de707819..3a736107c8 100644
> --- a/gnu/packages/sdl.scm
> +++ b/gnu/packages/sdl.scm
> @@ -72,7 +72,7 @@ (define-module (gnu packages sdl)
>  (define-public sdl2
>    (package
>      (name "sdl2")
> -    (version "2.30.8")
> +    (version "2.30.9")
>      (source (origin
>                (method url-fetch)
>                (uri
> @@ -80,7 +80,7 @@ (define-public sdl2
>                                version ".tar.gz"))
>                (sha256
>                 (base32
> - 
> "0n006l1zds2av8a9p6m6l0mj7jwb3jbr6mq7j0nxg6vblxg2j31q"))))
> + 
> "197bdcfnnsd4k7q91y518kari0p3rcqbdfq40zsn79w73kvp9d94"))))
>      (build-system gnu-build-system)
>      (arguments
>       (list

Both these look great.

Please:

- Address comments, or give a compelling rationale for why the 
  suggestion won’t work / isn’t desirable.
- Run `guix lint' on your changes and make sure all issues that 
  raises are fixed.  `guix style' may help here.
- Send a v2 patch series.

Thanks,

  -- Ian
  

Patch

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index e71c2803a3..83ae89c172 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -278,20 +278,19 @@  (define-public desmume
 ;; Following commits and revision numbers of beta versions listed at
 ;; https://dolphin-emu.org/download/.
 (define-public dolphin-emu
-  (let ((commit "f9deb68aee962564b1495ff04c54c015e58d086f")
-        (revision "13669"))
     (package
       (name "dolphin-emu")
-      (version (git-version "5.0" revision commit))
+      (version "2503")
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/dolphin-emu/dolphin")
-               (commit commit)))
+               (recursive? #t)
+               (commit version)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1p8qsxlabgmz3nic0a9ghh9d3lzl5f8i3kmdrrvx6w8kdlp33018"))
+          (base32 "0yyl91sb8w422zfdml9hmwwn3088gxv977aailc0l5icaxf4m8m2"))
          (modules '((guix build utils)
                     (ice-9 regex)))
          (snippet
@@ -300,14 +299,19 @@  (define-public dolphin-emu
              (for-each (lambda (dir)
                          (delete-file-recursively
                           (string-append "Externals/" dir)))
-                       '("LZO" "OpenAL" "Qt" "SFML" "bzip2"
+                       '(
+                         ;"LZO" "OpenAL" "Qt" "SFML" "bzip2"
+
+                         "LZO" "OpenAL" "Qt" "bzip2" ;;TODO: Ensure SFML is removed and update the package to make it happen
+
                          ;; XXX: Attempting to use the vulkan-headers package
                          ;; results in "error:
                          ;; ‘VK_PRESENT_MODE_RANGE_SIZE_KHR’ was not declared
                          ;; in this scope".
                          ;;"Vulkan"
                          "cubeb" "curl" "enet"
-                         "ffmpeg" "fmt" "gettext"
+                         ;"ffmpeg" "fmt" "gettext"
+                         "fmt" "gettext"
                          ;; XXX: Attempting to use an unbundled glslang at the
                          ;; exact commit used by Dolphin still results in
                          ;; "error: ‘DefaultTBuiltInResource’ is not a member
@@ -317,10 +321,14 @@  (define-public dolphin-emu
                          ;; unbundled, as there are missing linking
                          ;; directives.
                          ;;"gtest"
-                         "hidapi" "libpng" "libusb" "mbedtls"
-                         "miniupnpc" "minizip" "MoltenVK" "pugixml"
+                         ;"hidapi" "libpng" "libusb" "mbedtls"
+                         "hidapi" "libusb" "mbedtls"
+                         ;"miniupnpc" "minizip" "MoltenVK" "pugixml"
+                         "miniupnpc" "MoltenVK" "pugixml"
                          "soundtouch"
-                         "xxhash" "zlib" "zstd"))
+                         ;"xxhash" "zlib" "zstd"
+                         "xxhash" "zstd"
+                         ))
              ;; Clean up the source.
              (for-each delete-file
                        (find-files
@@ -339,12 +347,21 @@  (define-public dolphin-emu
                ((".*add_subdirectory.*Externals/enet.*") "")
                ((".*add_subdirectory.*Externals/soundtouch.*") "")
                ((".*add_subdirectory.*Externals/xxhash.*") ""))))
-         (patches (search-patches "dolphin-emu-data.patch"))))
+         ))
       (build-system cmake-build-system)
       (arguments
        (list
         #:phases
         #~(modify-phases %standard-phases
+            (add-before 'configure 'set-scm-desc-str
+                        (lambda _
+                          ;;For netplay to work, the SCM_REV_STR must match the
+                          ;;commit hash of whatever version we're on.
+                          ;;THIS MUST BE UPDATED EVERY UPDATE SO THAT NETPLAY
+                          ;;CONTINUES TO FUNCTION!
+                          (substitute* "Source/Core/Common/scmrev.h.in" (("#define SCM_REV_STR \"\\$\\{DOLPHIN_WC_REVISION\\}\"") "#define SCM_REV_STR \"9763c0a1e2b9db0c3861d25bc2f5a0ace6a15ee3\""))
+                          ))
+
             (add-before 'configure 'remove-unittests-target-post-build-command
               (lambda _
                 ;; To skip a few problematic tests, CTest will be manually
@@ -442,8 +459,8 @@  (define-public dolphin-emu
              curl
              enet
              eudev
-             ffmpeg-4
-             fmt-7
+             ffmpeg
+             fmt-10
              font-wqy-microhei
              freetype
              glew
@@ -465,9 +482,10 @@  (define-public dolphin-emu
              openal
              pugixml
              pulseaudio
-             qtbase-5
+             qtbase
+             qtsvg
              sdl2
-             sfml
+             sfml-3
              soil
              soundtouch-1/integer-samples
              vulkan-loader
@@ -482,7 +500,7 @@  (define-public dolphin-emu
 turbo speed, networked multiplayer, and graphical enhancements.")
       (supported-systems '("x86_64-linux" "aarch64-linux"))
       ;; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
-      (license (list license:gpl2+ license:asl2.0 license:fdl1.2+)))))
+      (license (list license:gpl2+ license:asl2.0 license:fdl1.2+))))
 
 (define-public libretro-dolphin-emu
   ;; There are no tag or release; use the latest commit.
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 91369089b9..bb1ae5bc2f 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -1115,6 +1115,71 @@  (define-public sfml
 of five modules: system, window, graphics, audio and network.")
     (license license:zlib)))
 
+(define-public sfml-3 ;;For dolphin-emu
+               (package
+                 (inherit sfml)
+                 (name "sfml-3")
+                 (version "3.0.0")
+                 (inputs (modify-inputs (package-inputs sfml)
+                                        (prepend libxcursor libxi miniaudio)))
+                 (source (origin
+                           (method git-fetch)
+                           (uri (git-reference
+                                  (url "https://github.com/SFML/SFML")
+                                  (recursive? #t)
+                                  (commit version)))
+                           (file-name (git-file-name name version))
+                           (sha256
+                             (base32
+                               "0y37cmpp490gcibajigxsbjc6icggqv40jrhzj2kwygpc0ppzb3v"))
+                           (modules '((guix build utils)))
+                           ;(snippet
+                           ;  '(begin
+                           ;     ;; Ensure system libraries are used.
+                           ;     (delete-file-recursively "extlibs")
+                           ;     #t))
+                           ))
+                 ))
+
+;; For sfml-3
+(define-public miniaudio
+               (package
+                 (name "miniaudio")
+                 (version "0.11.22")
+                 (source (origin
+                           (method git-fetch)
+                           (uri (git-reference
+                                  (url "https://github.com/mackron/miniaudio")
+                                  (commit version)))
+                           (file-name (git-file-name name version))
+                           (sha256
+                             (base32
+                               "1pjaiq71x24n9983vkhjxrsbraa24053h727db22b1rb2xyfrzm3"))))
+                 (build-system cmake-build-system)
+                 (arguments
+                   (list
+                     #:tests? #f
+                     #:phases
+                     #~(modify-phases %standard-phases
+                                      (replace 'install
+                                               (lambda _
+                                                 (let ((out #$output))
+                                                   ;; Ensure the output directory exists
+                                                   (mkdir-p (string-append out "/lib"))
+                                                   ;; Copy the static libraries to the output directory
+                                                   (for-each (lambda (file)
+                                                               (copy-file file (string-append out "/lib/" file))) ; Ensure the destination is a file
+                                                             '("libminiaudio.a"
+                                                               "libminiaudio_channel_combiner_node.a"
+                                                               "libminiaudio_channel_separator_node.a"
+                                                               "libminiaudio_ltrim_node.a"
+                                                               "libminiaudio_reverb_node.a"
+                                                               "libminiaudio_vocoder_node.a"))))))))
+                 (synopsis "Audio playback and capture library written in C, in a single source file.")
+                 (description "miniaudio is written in C with no dependencies except the standard library and should compile clean on all major compilers without the need to install any additional development packages. All major desktop and mobile platforms are supported.")
+                 (home-page "https://miniaud.io/")
+                 (license license:expat)))
+
 (define-public csfml
   (package
     (name "csfml")
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 65d44e975a..ff3e032a2b 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2627,14 +2627,14 @@  (define-public proxychains-ng
 (define-public enet
   (package
     (name "enet")
-    (version "1.3.17")
+    (version "1.3.18")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://enet.bespin.org/download/"
                            "enet-" version ".tar.gz"))
        (sha256
-        (base32 "1p6f9mby86af6cs7pv6h48032ip9g32c05cb7d9mimam8lchz3x3"))))
+        (base32 "0djxz2j8248bsvbrs42vr39fhxlrqr3lqbhzs7yb92ync19hr2ia"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 80de707819..3a736107c8 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -72,7 +72,7 @@  (define-module (gnu packages sdl)
 (define-public sdl2
   (package
     (name "sdl2")
-    (version "2.30.8")
+    (version "2.30.9")
     (source (origin
               (method url-fetch)
               (uri
@@ -80,7 +80,7 @@  (define-public sdl2
                               version ".tar.gz"))
               (sha256
                (base32
-                "0n006l1zds2av8a9p6m6l0mj7jwb3jbr6mq7j0nxg6vblxg2j31q"))))
+                "197bdcfnnsd4k7q91y518kari0p3rcqbdfq40zsn79w73kvp9d94"))))
     (build-system gnu-build-system)
     (arguments
      (list