GNU bug report logs - #75619
[PATCH 0/7] Add libretro-dolphin-emu and update retroarch

Previous Next

Package: guix-patches;

Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Date: Fri, 17 Jan 2025 03:08:02 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 75619 in the body.
You can then email your comments to 75619 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 03:08:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
New bug report received and forwarded. Copy sent to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org. (Fri, 17 Jan 2025 03:08:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: guix-patches <at> gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 0/7] Add libretro-dolphin-emu and update retroarch
Date: Fri, 17 Jan 2025 12:07:19 +0900
This packages the dolphin core for retroarch.

Maxim Cournoyer (7):
  gnu: Add soundtouch-1/integer-samples.
  gnu: dolphin-emu: Unbundle more libraries and enable tests.
  gnu: dolphin-emu: Build .bin binary files and preserve data ones.
  gnu: retroarch-minimal: Add search path for LIBRETRO_SYSTEM_DIRECTORY.
  gnu: Add libretro-dolphin-emu.
  gnu: retroarch-minimal: Update to 1.20.0.
  gnu: retroarch-core-info: Update to 1.20.0.

 gnu/packages/audio.scm                        |  26 +-
 gnu/packages/emulators.scm                    | 609 +++++++++++-------
 .../retroarch-improved-search-paths.patch     |  88 ++-
 3 files changed, 468 insertions(+), 255 deletions(-)


base-commit: 0b06a5bc97938cae3da19e566c2f6f71cc299d78
-- 
2.47.1





Information forwarded to gabriel <at> erlikon.ch, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 04:47:02 GMT) Full text and rfc822 format available.

Message #8 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 1/7] gnu: Add soundtouch-1/integer-samples.
Date: Fri, 17 Jan 2025 13:45:51 +0900
* gnu/packages/audio.scm (soundtouch-1/integer-samples): New variable.

Change-Id: Iea6e1313f2c7189ded9abf100f07ed530793f9f0
---
 gnu/packages/audio.scm | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 712337dda8..1c4f3176ee 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016–2023 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2018, 2020, 2024 Oleg Pykhalov <go.wigust <at> gmail.com>
 ;;; Copyright © 2018 okapi <okapi <at> firemail.cc>
-;;; Copyright © 2018, 2020, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
+;;; Copyright © 2018, 2020, 2022-2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 ;;; Copyright © 2018 Clément Lassieur <clement <at> lassieur.org>
 ;;; Copyright © 2018 Brett Gilio <brettg <at> gnu.org>
 ;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius <at> gnu.org>
@@ -4355,6 +4355,30 @@ (define-public soundtouch
 control functionality, or just for playing around with the sound effects.")
     (license license:lgpl2.1+)))
 
+(define-public soundtouch-1/integer-samples
+  (package
+    (inherit soundtouch)
+    (name "soundtouch")
+    (version "1.9.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/soundtouch/soundtouch.git")
+             (commit (string-append name "-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ir961w5gz86cm6yivr1ypi6n2y52vn319gy2gvdkkbbz5wyjkrq"))))
+    (arguments
+     ;; Dolphin expects the samples to be of the integer type.
+     (list #:configure-flags #~(list "--enable-integer-samples")
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'bootstrap
+                          (lambda _
+                            ;; Avoid the bootstrap script, which has a broken
+                            ;; shebang.
+                            (invoke "autoreconf" "-vif"))))))))
+
 (define-public stargate-soundtouch
   ;; Stargate's fork of soundtouch.
   (let ((commit "464f474c0be5d7e0970909dd30593012e4621468")
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 04:47:02 GMT) Full text and rfc822 format available.

Message #11 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 2/7] gnu: dolphin-emu: Unbundle more libraries and enable
 tests.
Date: Fri, 17 Jan 2025 13:45:52 +0900
* gnu/packages/emulators.scm (dolphin-emu)
[source] <snippet>: Delete bzip2, cubeb, enet, fmt, pugixml, soundtouch,
xxhash and zstd sources and de-register enet, soundtouch and xxhash from the
build system.
[arguments] <#:tests?>: Delete argument.
<#:phases>: Add remove-unittests-target-post-build-command and post-check
phases.
<#:configure-flags>: Specify CMAKE_CXX_FLAGS to locate soundtouch headers.
<#:test-target>: New argument.
[inputs]: Add bzip2, cubeb, enet, fmt-7, minizip-ng, xxhash and
zstd:lib.  Replace soundtouch with soundtouch-1/integer-samples.

Change-Id: Id996d992674f9efbbb2eb562286447a388716a82
---
 gnu/packages/emulators.scm | 142 ++++++++++++++++++++++++++-----------
 1 file changed, 100 insertions(+), 42 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9e2d6485dd..6f77329f27 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2020 Christopher Howard <christopher <at> librehacker.com>
 ;;; Copyright © 2021 Felipe Balbi <balbi <at> kernel.org>
 ;;; Copyright © 2021, 2024 Felix Gruber <felgru <at> posteo.net>
-;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
+;;; Copyright © 2021, 2024, 2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;; Copyright © 2023 c4droid <c4droid <at> foxmail.com>
 ;;; Copyright © 2023 Yovan Naumovski <yovan <at> gorski.stream>
@@ -94,6 +94,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
@@ -294,58 +295,112 @@ (define-public dolphin-emu
              ;; Remove external stuff we don't need.
              (for-each (lambda (dir)
                          (delete-file-recursively
-                           (string-append "Externals/" dir)))
-                       '("LZO" "OpenAL" "Qt" "SFML" "curl" "ffmpeg"
-                         "gettext" "hidapi" "libpng" "libusb" "mbedtls"
-                         "miniupnpc" "MoltenVK" "zlib"))
+                          (string-append "Externals/" dir)))
+                       '("LZO" "OpenAL" "Qt" "SFML" "bzip2"
+                         ;; 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"
+                         ;; XXX: Attempting to use an unbundled glslang at the
+                         ;; exact commit used by Dolphin still results in
+                         ;; "error: ‘DefaultTBuiltInResource’ is not a member
+                         ;; of ‘glslang’".
+                         ;;"glslang"
+                         ;; XXX: Googletest cannot currently easily be
+                         ;; unbundled, as there are missing linking
+                         ;; directives.
+                         ;;"gtest"
+                         "hidapi" "libpng" "libusb" "mbedtls"
+                         "miniupnpc" "minizip" "MoltenVK" "pugixml"
+                         "soundtouch"
+                         "xxhash" "zlib" "zstd"))
              ;; Clean up source.
              (for-each delete-file
-                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))))))
+                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
+             ;; Do not attempt to include now-missing directories.
+             (substitute* "CMakeLists.txt"
+               ((".*add_subdirectory.*Externals/enet.*") "")
+               ((".*add_subdirectory.*Externals/soundtouch.*") "")
+               ((".*add_subdirectory.*Externals/xxhash.*") ""))))))
       (build-system cmake-build-system)
       (arguments
-       '(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((fontfile
-                      (search-input-file inputs
-                                         "/share/fonts/truetype/wqy-microhei.ttc"))
-                     (libvulkan
-                      (search-input-file inputs "/lib/libvulkan.so")))
-                 (chdir "docs")
-                 (invoke "bash" "-c" "g++ -O2 $(freetype-config \
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'configure 'remove-unittests-target-post-build-command
+              (lambda _
+                ;; To skip a few problematic tests, CTest will be manually
+                ;; invoked in the post-check phase.
+                (with-directory-excursion "Source/UnitTests"
+                  (substitute* "CMakeLists.txt"
+                    (("add_custom_command\\(TARGET unittests POST_BUILD.*")
+                     "")))))
+            (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
+              (lambda* (#:key inputs #:allow-other-keys)
+                (let ((fontfile
+                       (search-input-file inputs
+                                          "/share/fonts/truetype/wqy-microhei.ttc"))
+                      (libvulkan
+                       (search-input-file inputs "/lib/libvulkan.so")))
+                  (chdir "docs")
+                  (invoke "bash" "-c" "g++ -O2 $(freetype-config \
 --cflags --libs) gc-font-tool.cpp -o gc-font-tool")
-                 (invoke "./gc-font-tool" "a" fontfile "font_western.bin")
-                 (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
-                 (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
-                 (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
-                 (chdir "..")
-                 (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
-                   (("\"vulkan\", 1") (string-append "\"vulkan\""))
-                   (("\"vulkan\"") (string-append "\"" libvulkan "\""))
-                   (("Common::DynamicLibrary::GetVersionedFilename") ""))))))
-
-         ;; The FindGTK2 cmake script only checks hardcoded directories for
-         ;; glib/gtk headers.
-
-         #:configure-flags
-         (list (string-append "-DX11_INCLUDE_DIR="
-                              (assoc-ref %build-inputs "libx11")
-                              "/include")
-               (string-append "-DX11_LIBRARIES="
-                              (assoc-ref %build-inputs "libx11")
-                              "/lib/libX11.so")
-               "-DX11_FOUND=1")))
+                  (invoke "./gc-font-tool" "a" fontfile "font_western.bin")
+                  (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
+                  (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
+                  (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
+                  (chdir "..")
+                  (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
+                    (("\"vulkan\", 1") (string-append "\"vulkan\""))
+                    (("\"vulkan\"") (string-append "\"" libvulkan "\""))
+                    (("Common::DynamicLibrary::GetVersionedFilename") "")))))
+            (add-after 'check 'post-check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (with-directory-excursion "Source/UnitTests"
+                    (invoke "ctest" "-V" "--output-on-failure"
+                            ;; These tests fail due to libusb failing to
+                            ;; init inside the build container.
+                            "-E" (string-join
+                                  '("MMIOTest"
+                                    "PageFaultTest"
+                                    "CoreTimingTest"
+                                    "FileSystemTest"
+                                    "PowerPCTest"
+                                    "VertexLoaderTest")
+                                  "|")))))))
+        ;; The FindGTK2 cmake script only checks hardcoded directories for
+        ;; glib/gtk headers.  Also add some include directories via the CXX
+        ;; flags to let GCC find some headers not actively searched by the
+        ;; build system.
+        #:configure-flags
+        #~(list (string-append "-DCMAKE_CXX_FLAGS="
+                               "-I" (search-input-directory
+                                     %build-inputs "include/soundtouch"))
+                (string-append "-DX11_INCLUDE_DIR="
+                               #$(this-package-input "libx11")
+                               "/include")
+                (string-append "-DX11_LIBRARIES="
+                               (search-input-file %build-inputs
+                                                  "lib/libX11.so"))
+                "-DX11_FOUND=1")
+        #:test-target "unittests"))
       (native-inputs
        (list gettext-minimal pkg-config))
       (inputs
        (list alsa-lib
              ao
              bluez
+             bzip2
+             cubeb
              curl
+             enet
              eudev
              ffmpeg-4
+             fmt-7
              font-wqy-microhei
              freetype
              glew
@@ -363,6 +418,7 @@ (define-public dolphin-emu
              mbedtls-lts
              mesa
              miniupnpc
+             minizip-ng
              openal
              pugixml
              pulseaudio
@@ -370,9 +426,11 @@ (define-public dolphin-emu
              sdl2
              sfml
              soil
-             soundtouch
+             soundtouch-1/integer-samples
              vulkan-loader
-             zlib))
+             xxhash
+             zlib
+             `(,zstd "lib")))
       (home-page "https://dolphin-emu.org/")
       (synopsis "Nintendo Wii and GameCube emulator")
       (description
@@ -380,7 +438,7 @@ (define-public dolphin-emu
 GameCube and the Wii.  It provides compatibility with all PC controllers,
 turbo speed, networked multiplayer, and graphical enhancements.")
       (supported-systems '("x86_64-linux" "aarch64-linux"))
-      ; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
+      ;; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
       (license (list license:gpl2+ license:asl2.0 license:fdl1.2+)))))
 
 (define-public dosbox
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 04:47:03 GMT) Full text and rfc822 format available.

Message #14 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 3/7] gnu: dolphin-emu: Build .bin binary files and preserve
 data ones.
Date: Fri, 17 Jan 2025 13:45:53 +0900
These files are necessary to save games, enable cheat codes, etc.

* gnu/packages/emulators.scm (dolphin-emu) [source] <snippet>: Refine to avoid
deleting a few .bin which are not executable objects but rather configuration
files samples.
[phases]: Add build-codeloader.bin, build-dsp_rom.bin and build-dsp_coefs.bin
phases.
[arguments] <configure-flags>: Add -DDSPTOOL=ON.
[native-inputs]: Add a cross-compiler for powerpc.  Add python-minimal and
python-numpy.

Change-Id: Ida8df1add940e1708c557223409d854aa995e8a5
---
 gnu/packages/emulators.scm | 50 ++++++++++++++++++++++++++++++++++----
 1 file changed, 45 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 6f77329f27..2486485805 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -98,6 +98,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sphinx)
@@ -289,7 +290,8 @@ (define-public dolphin-emu
          (file-name (git-file-name name version))
          (sha256
           (base32 "1p8qsxlabgmz3nic0a9ghh9d3lzl5f8i3kmdrrvx6w8kdlp33018"))
-         (modules '((guix build utils)))
+         (modules '((guix build utils)
+                    (ice-9 regex)))
          (snippet
           '(begin
              ;; Remove external stuff we don't need.
@@ -317,9 +319,19 @@ (define-public dolphin-emu
                          "miniupnpc" "minizip" "MoltenVK" "pugixml"
                          "soundtouch"
                          "xxhash" "zlib" "zstd"))
-             ;; Clean up source.
+             ;; Clean up the source.
              (for-each delete-file
-                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
+                       (find-files
+                        "."
+                        (lambda (file _)
+                          (and (string-match "\\.(bin|dsy|exe|jar|rar)$" file)
+                               ;; Preserve the important wc24 .bin
+                               ;; configuration *data* files.
+                               (not (member (basename file)
+                                            '("misc.bin"
+                                              "nwc24dl.bin"
+                                              "nwc24fl.bin"
+                                              "nwc24fls.bin")))))))
              ;; Do not attempt to include now-missing directories.
              (substitute* "CMakeLists.txt"
                ((".*add_subdirectory.*Externals/enet.*") "")
@@ -371,7 +383,30 @@ (define-public dolphin-emu
                                     "FileSystemTest"
                                     "PowerPCTest"
                                     "VertexLoaderTest")
-                                  "|")))))))
+                                  "|"))))))
+            (add-before 'install 'build-codeloader.bin
+              (lambda _
+                (with-directory-excursion "../source/docs"
+                  ;; The following command-line is adapted from the example in
+                  ;; codehandler.s.
+                  (invoke "powerpc-linux-gnu-gcc" "-mpowerpc" "-mbig"
+                          "codehandler.s" "-nostartfiles" "-nodefaultlibs"
+                          "-nostdlib" "-T" "codehandler.ld"
+                          "-o" "codehandler.bin")
+                  (copy-file "codehandler.bin" "../Data/Sys/codehandler.bin"))))
+            (add-before 'install 'build-dsp_rom.bin
+              (lambda _
+                ;; Ensure dsptool is on PATH.
+                (setenv "PATH" (string-append (getenv "PATH") ":"
+                                              (getcwd) "/Binaries"))
+                (with-directory-excursion "../source"
+                  (invoke "dsptool" "-o" "Data/Sys/GC/dsp_rom.bin"
+                          "docs/DSP/free_dsp_rom/dsp_rom.ds"))))
+            (add-before 'install 'build-dsp_coefs.bin
+              (lambda _
+                (with-directory-excursion "../source"
+                  (invoke "python3" "docs/DSP/free_dsp_rom/generate_coefs.py")
+                  (rename-file "dsp_coef.bin" "Data/Sys/GC/dsp_coef.bin")))))
         ;; The FindGTK2 cmake script only checks hardcoded directories for
         ;; glib/gtk headers.  Also add some include directories via the CXX
         ;; flags to let GCC find some headers not actively searched by the
@@ -380,6 +415,7 @@ (define-public dolphin-emu
         #~(list (string-append "-DCMAKE_CXX_FLAGS="
                                "-I" (search-input-directory
                                      %build-inputs "include/soundtouch"))
+                "-DDSPTOOL=ON"
                 (string-append "-DX11_INCLUDE_DIR="
                                #$(this-package-input "libx11")
                                "/include")
@@ -389,7 +425,11 @@ (define-public dolphin-emu
                 "-DX11_FOUND=1")
         #:test-target "unittests"))
       (native-inputs
-       (list gettext-minimal pkg-config))
+       (list (cross-gcc "powerpc-linux-gnu")
+             gettext-minimal
+             pkg-config
+             python-minimal
+             python-numpy))
       (inputs
        (list alsa-lib
              ao
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 04:47:03 GMT) Full text and rfc822 format available.

Message #17 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 4/7] gnu: retroarch-minimal: Add search path for
 LIBRETRO_SYSTEM_DIRECTORY.
Date: Fri, 17 Jan 2025 13:45:54 +0900
This makes it possible to locate system files provided by libretro cores.

* gnu/packages/patches/retroarch-improved-search-paths.patch: Extend patch.
* gnu/packages/emulators.scm (retroarch-minimal) [native-search-paths]:
Register new search path for the LIBRETRO_SYSTEM_DIRECTORY variable.

Change-Id: I48f9a92608c0e36922ce9dcc9bbb61d6ca915002
---
 gnu/packages/emulators.scm                    |  4 +
 .../retroarch-improved-search-paths.patch     | 88 ++++++++++++++-----
 2 files changed, 68 insertions(+), 24 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 2486485805..08af04ccfe 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -2632,6 +2632,10 @@ (define-public retroarch-minimal
               (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
               (separator #f)            ;single entry
               (files '("share/libretro/autoconfig")))
+             (search-path-specification
+              (variable "LIBRETRO_SYSTEM_DIRECTORY")
+              (separator #f)            ;single entry
+              (files '("share/libretro/system")))
              (search-path-specification
               (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
               (separator #f)            ;single entry
diff --git a/gnu/packages/patches/retroarch-improved-search-paths.patch b/gnu/packages/patches/retroarch-improved-search-paths.patch
index 6fcd4745ac..8d70514bd8 100644
--- a/gnu/packages/patches/retroarch-improved-search-paths.patch
+++ b/gnu/packages/patches/retroarch-improved-search-paths.patch
@@ -4,22 +4,23 @@ variable.
 Upstream-status: https://github.com/libretro/RetroArch/pull/17054
 
 diff --git a/configuration.c b/configuration.c
-index 5808a3f21c..0cc2909102 100644
+index 5808a3f21c..2bc9abf11c 100644
 --- a/configuration.c
 +++ b/configuration.c
-@@ -3573,6 +3573,11 @@ static bool config_load_file(global_t *global,
+@@ -3573,6 +3573,12 @@ static bool config_load_file(global_t *global,
  {
     unsigned i;
     char tmp_str[PATH_MAX_LENGTH];
 +   char* libretro_directory                        = NULL;
 +   char* libretro_assets_directory                 = NULL;
 +   char* libretro_autoconfig_directory             = NULL;
++   char* libretro_system_directory                 = NULL;
 +   char* libretro_video_filter_directory           = NULL;
 +   char* libretro_video_shader_directory           = NULL;
     static bool first_load                          = true;
     bool without_overrides                          = false;
     unsigned msg_color                              = 0;
-@@ -3848,12 +3853,6 @@ static bool config_load_file(global_t *global,
+@@ -3848,12 +3854,6 @@ static bool config_load_file(global_t *global,
           strlcpy(path_settings[i].ptr, tmp_str, PATH_MAX_LENGTH);
     }
  
@@ -32,7 +33,7 @@ index 5808a3f21c..0cc2909102 100644
  #ifdef RARCH_CONSOLE
     if (conf)
        video_driver_load_settings(global, conf);
-@@ -3861,6 +3860,20 @@ static bool config_load_file(global_t *global,
+@@ -3861,6 +3861,26 @@ static bool config_load_file(global_t *global,
  
     /* Post-settings load */
  
@@ -49,11 +50,17 @@ index 5808a3f21c..0cc2909102 100644
 +       configuration_set_string(settings,
 +				settings->paths.directory_autoconfig,
 +				libretro_autoconfig_directory);
++
++   libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
++   if (libretro_system_directory)
++       configuration_set_string(settings,
++				settings->paths.directory_system,
++				libretro_system_directory);
 +
     if (     (rarch_flags & RARCH_FLAGS_HAS_SET_USERNAME)
           && (override_username))
     {
-@@ -4032,15 +4045,27 @@ static bool config_load_file(global_t *global,
+@@ -4032,15 +4052,27 @@ static bool config_load_file(global_t *global,
        *settings->paths.path_menu_wallpaper = '\0';
     if (string_is_equal(settings->paths.path_rgui_theme_preset, "default"))
        *settings->paths.path_rgui_theme_preset = '\0';
@@ -85,18 +92,18 @@ index 5808a3f21c..0cc2909102 100644
  #ifdef _3DS
     if (string_is_equal(settings->paths.directory_bottom_assets, "default"))
 diff --git a/docs/retroarch.6 b/docs/retroarch.6
-index 7478040e17..f864e0e0d5 100644
+index 7478040e17..bc1ac8dfff 100644
 --- a/docs/retroarch.6
 +++ b/docs/retroarch.6
 @@ -1,6 +1,6 @@
  .\" retroarch.6:
  
 -.TH  "RETROARCH" "6" "November 1, 2011" "RETROARCH" "System Manager's Manual: retroarch"
-+.TH  "RETROARCH" "6" "September 28, 2024" "RETROARCH" "System Manager's Manual: retroarch"
++.TH  "RETROARCH" "6" "January 16, 2025" "RETROARCH" "System Manager's Manual: retroarch"
  
  .SH NAME
  
-@@ -239,3 +239,36 @@ Disables all kinds of content patching.
+@@ -239,3 +239,42 @@ Disables all kinds of content patching.
  .TP
  \fB-D, --detach\fR
  Detach from the current console. This is currently only relevant for Microsoft Windows.
@@ -123,6 +130,12 @@ index 7478040e17..f864e0e0d5 100644
 +"joypad_autoconfig_dir" configuration file option.
 +
 +.TP
++\fBLIBRETRO_SYSTEM_DIRECTORY\fR
++Specify the directory where RetroArch looks for system files,
++overriding the value of the "system_directory" configuration file
++option.
++
++.TP
 +\fBLIBRETRO_VIDEO_FILTER_DIRECTORY\fR
 +Specify the directory where RetroArch looks for video filters,
 +overriding the value of the "video_filter_dir" configuration file
@@ -134,21 +147,22 @@ index 7478040e17..f864e0e0d5 100644
 +overriding the value of the "video_shader_dir" configuration file
 +option.
 diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c
-index c157d355a1..ddf0b5ca87 100644
+index c157d355a1..a8e957c7c2 100644
 --- a/frontend/drivers/platform_unix.c
 +++ b/frontend/drivers/platform_unix.c
-@@ -1324,6 +1324,10 @@ static void frontend_unix_get_env(int *argc,
+@@ -1324,6 +1324,11 @@ static void frontend_unix_get_env(int *argc,
  {
     unsigned i;
     const char* libretro_directory = getenv("LIBRETRO_DIRECTORY");
 +   const char* libretro_assets_directory = getenv("LIBRETRO_ASSETS_DIRECTORY");
 +   const char* libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
++   const char* libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
 +   const char* libretro_video_filter_directory = getenv("LIBRETRO_VIDEO_FILTER_DIRECTORY");
 +   const char* libretro_video_shader_directory = getenv("LIBRETRO_VIDEO_SHADER_DIRECTORY");
  #ifdef ANDROID
     int32_t major, minor, rel;
     char device_model[PROP_VALUE_MAX]  = {0};
-@@ -1765,12 +1769,20 @@ static void frontend_unix_get_env(int *argc,
+@@ -1765,12 +1770,20 @@ static void frontend_unix_get_env(int *argc,
              "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
     else
  #endif
@@ -174,7 +188,7 @@ index c157d355a1..ddf0b5ca87 100644
  #ifdef ASSETS_DIR
     if (path_is_directory(ASSETS_DIR "/assets"))
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS],
-@@ -1778,7 +1790,10 @@ static void frontend_unix_get_env(int *argc,
+@@ -1778,7 +1791,10 @@ static void frontend_unix_get_env(int *argc,
              "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
     else
  #endif
@@ -186,7 +200,7 @@ index c157d355a1..ddf0b5ca87 100644
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS],
              "/usr/local/share/retroarch",
              "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
-@@ -1838,7 +1853,11 @@ static void frontend_unix_get_env(int *argc,
+@@ -1838,7 +1854,11 @@ static void frontend_unix_get_env(int *argc,
              "filters/video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
     else
  #endif
@@ -199,7 +213,7 @@ index c157d355a1..ddf0b5ca87 100644
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER],
              "/usr/local/share/retroarch",
              "filters/video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
-@@ -1872,8 +1891,13 @@ static void frontend_unix_get_env(int *argc,
+@@ -1872,8 +1892,13 @@ static void frontend_unix_get_env(int *argc,
           "records", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT]));
     fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_DATABASE], base_path,
           "database/rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
@@ -215,16 +229,33 @@ index c157d355a1..ddf0b5ca87 100644
     fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], base_path,
           "cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
     fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_OVERLAY], base_path,
+@@ -1892,8 +1917,13 @@ static void frontend_unix_get_env(int *argc,
+          "saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
+    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SAVESTATE], base_path,
+          "states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
+-   fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SYSTEM], base_path,
+-         "system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   if (!string_is_empty(libretro_system_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++	       libretro_system_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   else
++       fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SYSTEM], base_path,
++             "system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
+ #endif
+ 
+ #ifndef IS_SALAMANDER
 diff --git a/frontend/drivers/platform_win32.c b/frontend/drivers/platform_win32.c
-index 26ed25c04f..0cc9a9dc95 100644
+index a1e5a93a32..0a51bc8df6 100644
 --- a/frontend/drivers/platform_win32.c
 +++ b/frontend/drivers/platform_win32.c
-@@ -565,24 +565,38 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+@@ -565,18 +565,33 @@ static void frontend_win32_env_get(int *argc, char *argv[],
  {
     const char *tmp_dir = getenv("TMP");
     const char *libretro_directory = getenv("LIBRETRO_DIRECTORY");
 +   const char *libretro_assets_directory = getenv("LIBRETRO_ASSETS_DIRECTORY");
 +   const char* libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
++   const char* libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
 +   const char* libretro_video_filter_directory = getenv("LIBRETRO_VIDEO_FILTER_DIRECTORY");
 +   const char* libretro_video_shader_directory = getenv("LIBRETRO_VIDEO_SHADER_DIRECTORY");
     if (!string_is_empty(tmp_dir))
@@ -256,14 +287,7 @@ index 26ed25c04f..0cc9a9dc95 100644
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS],
        ":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE],
-       ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
-    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_PLAYLIST],
--      ":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
-+      ":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_PLAYLIST]));
-    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG],
-       ":\\config\\record", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG]));
-    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT],
-@@ -605,12 +619,26 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+@@ -605,12 +620,26 @@ static void frontend_win32_env_get(int *argc, char *argv[],
     else
        fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE],
              ":\\cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
@@ -296,3 +320,19 @@ index 26ed25c04f..0cc9a9dc95 100644
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
        ":\\downloads", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT],
+@@ -619,8 +648,13 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+       ":\\saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
+    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SAVESTATE],
+       ":\\states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
+-   fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
+-      ":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   if (!string_is_empty(libretro_system_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++	       libretro_system_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   else
++       fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++             ":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
+    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_LOGS],
+       ":\\logs", sizeof(g_defaults.dirs[DEFAULT_DIR_LOGS]));
+ 
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 04:48:01 GMT) Full text and rfc822 format available.

Message #20 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 5/7] gnu: Add libretro-dolphin-emu.
Date: Fri, 17 Jan 2025 13:45:55 +0900
* gnu/packages/emulators.scm (libretro-dolphin-emu): New variable.

Change-Id: Id05e1d17ff6927bb1492ce2816790f7d94f9e1b8
---
 gnu/packages/emulators.scm | 51 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 08af04ccfe..e51b6b2ea2 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -481,6 +481,57 @@ (define-public dolphin-emu
       ;; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
       (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.
+  (let ((commit "89a4df725d4eb24537728f7d655cddb1add25c18")
+        (revision "0"))
+    (package
+      (inherit dolphin-emu)
+      (name "libretro-dolphin-emu")
+      (version (git-version "5.0" revision commit))
+      (source (origin
+                (inherit (package-source dolphin-emu))
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/libretro/dolphin")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1fvm6hy0ihc0j3sgv88a7ak08c0kyikmmiif827j981fy7zvglvz"))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments dolphin-emu)
+         ((#:configure-flags flags ''())
+          #~(cons "-DLIBRETRO=ON" #$flags))
+         ((#:phases phases '%standard-phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'deregister-bundled-sources
+                (lambda _
+                  (substitute* "CMakeLists.txt"
+                    ((".*add_subdirectory.*Externals/curl.*") "")
+                    ((".*add_subdirectory.*Externals/libpng.*") ""))))
+              (replace 'install
+                (lambda _
+                  (install-file "dolphin_libretro.so"
+                                (string-append #$output "/lib/libretro"))
+                  ;; The system data files are also required for the proper
+                  ;; functioning of dolphin; without them, it crashes with
+                  ;; segmentation faults and cannot save files to the memory
+                  ;; card.
+                  (let ((sysdir (string-append
+                                 #$output
+                                 "/share/libretro/system/dolphin-emu")))
+                    (mkdir-p sysdir)
+                    (copy-recursively "../source/Data/Sys"
+                                      (string-append sysdir "/Sys")))))))))
+      (inputs
+       ;; Delete large and extraneous inputs.
+       (modify-inputs (package-inputs dolphin-emu)
+         (delete "ffmpeg"
+                 "gtk+"
+                 "qtbase")))
+      (synopsis "Libretro port of Dolphin, the Nintendo Wii/GameCube emulator"))))
+
 (define-public dosbox
   (package
     (name "dosbox")
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 04:48:02 GMT) Full text and rfc822 format available.

Message #23 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 6/7] gnu: retroarch-minimal: Update to 1.20.0.
Date: Fri, 17 Jan 2025 13:45:56 +0900
* gnu/packages/emulators.scm (retroarch-minimal): Update to 1.20.0.

Change-Id: I3b4121d2520ee08a9d8454f2666ed30c140ced5b
---
 gnu/packages/emulators.scm | 328 ++++++++++++++++++-------------------
 1 file changed, 163 insertions(+), 165 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index e51b6b2ea2..88de3dbd8a 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -2536,177 +2536,175 @@ (define-public libretro-slang-shaders
                      license:unlicense)))))
 
 (define-public retroarch-minimal
-  (let ((commit "48b71d5cf8a070e785e2302d8fe241a7c2180fdd")
-        (revision "1"))
-    (package
-      (name "retroarch-minimal")
-      (version "1.19.1")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/libretro/RetroArch")
-               (commit commit)))
-         (snippet
-          #~(begin
-              (use-modules (guix build utils)
-                           (ice-9 ftw)
-                           (srfi srfi-26))
-              ;; XXX: 'delete-all-but' is copied from the turbovnc package.
-              (define (delete-all-but directory . preserve)
-                (define (directory? x)
-                  (and=> (stat x #f)
-                         (compose (cut eq? 'directory <>) stat:type)))
-                (with-directory-excursion directory
-                  (let* ((pred
-                          (negate (cut member <> (append '("." "..") preserve))))
-                         (items (scandir "." pred)))
-                    (for-each (lambda (item)
-                                (if (directory? item)
-                                    (delete-file-recursively item)
-                                    (delete-file item)))
-                              items))))
-              ;; Remove as much bundled sources as possible, shaving off about
-              ;; 65 MiB.
-              (delete-all-but "deps"
-                              "feralgamemode" ;used in platform_unix.c
-                              "mbedtls"       ;further refined below
-                              "yxml")         ;used in rxml.c
-              ;; This is an old root certificate used in net_socket_ssl_mbed.c,
-              ;; not actually from mbedtls.
-              (delete-all-but "deps/mbedtls" "cacert.h")))
-         (patches (search-patches "retroarch-improved-search-paths.patch"
-                                  "retroarch-unbundle-spirv-cross.patch"))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "13hgg4pxkpwlcmmyp9npr9k9cb94waqiyjpy2jzs8m9rc7xl2ap9"))))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-        #:tests? #f                     ; no tests
-        #:phases
-        #~(modify-phases %standard-phases
-            (replace 'configure
-              (lambda* (#:key inputs #:allow-other-keys)
-                ;; Hard-code some store file names.
-                (substitute* "gfx/common/vulkan_common.c"
-                  (("libvulkan.so")
-                   (search-input-file inputs "lib/libvulkan.so")))
-                (substitute* "gfx/common/wayland/generate_wayland_protos.sh"
-                  (("/usr/local/share/wayland-protocols")
-                   (search-input-directory inputs "share/wayland-protocols")))
+  (package
+    (name "retroarch-minimal")
+    (version "1.20.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/libretro/RetroArch")
+             (commit (string-append "v" version))))
+       (snippet
+        #~(begin
+            (use-modules (guix build utils)
+                         (ice-9 ftw)
+                         (srfi srfi-26))
+            ;; XXX: 'delete-all-but' is copied from the turbovnc package.
+            (define (delete-all-but directory . preserve)
+              (define (directory? x)
+                (and=> (stat x #f)
+                       (compose (cut eq? 'directory <>) stat:type)))
+              (with-directory-excursion directory
+                (let* ((pred
+                        (negate (cut member <> (append '("." "..") preserve))))
+                       (items (scandir "." pred)))
+                  (for-each (lambda (item)
+                              (if (directory? item)
+                                  (delete-file-recursively item)
+                                  (delete-file item)))
+                            items))))
+            ;; Remove as much bundled sources as possible, shaving off about
+            ;; 65 MiB.
+            (delete-all-but "deps"
+                            "feralgamemode" ;used in platform_unix.c
+                            "mbedtls"       ;further refined below
+                            "yxml")         ;used in rxml.c
+            ;; This is an old root certificate used in net_socket_ssl_mbed.c,
+            ;; not actually from mbedtls.
+            (delete-all-but "deps/mbedtls" "cacert.h")))
+       (patches (search-patches "retroarch-improved-search-paths.patch"
+                                "retroarch-unbundle-spirv-cross.patch"))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0yc16j3g2g0if64xqd7qr4dza8rw10x0zypwbl92y735825p87qi"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                     ; no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Hard-code some store file names.
+              (substitute* "gfx/common/vulkan_common.c"
+                (("libvulkan.so")
+                 (search-input-file inputs "lib/libvulkan.so")))
+              (substitute* "gfx/common/wayland/generate_wayland_protos.sh"
+                (("/usr/local/share/wayland-protocols")
+                 (search-input-directory inputs "share/wayland-protocols")))
 
-                ;; Without HLSL, we can still enable GLSLANG and Vulkan support.
-                (substitute* "qb/config.libs.sh"
-                  (("[$]HAVE_GLSLANG_HLSL") "notcare"))
+              ;; Without HLSL, we can still enable GLSLANG and Vulkan support.
+              (substitute* "qb/config.libs.sh"
+                (("[$]HAVE_GLSLANG_HLSL") "notcare"))
 
-                ;; The configure script does not yet accept the extra arguments
-                ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
-                (invoke
-                 "./configure"
-                 #$@(if (string-prefix? "armhf" (or (%current-target-system)
-                                                    (%current-system)))
-                        '("--enable-neon" "--enable-floathard")
-                        '())
-                 (string-append "--prefix=" #$output)
-                 ;; D-Bus support is required for 'suspend screensaver' option
-                 ;; to work.
-                 "--enable-dbus"
-                 ;; Non-free software are available through the core updater,
-                 ;; disable it.  See <https://issues.guix.gnu.org/38360>.
-                 "--disable-update_cores"
-                 "--disable-update_core_info"
-                 "--disable-online_updater"
-                 ;; The assets are provided via the `retroarch-assets' package.
-                 "--disable-update_assets"
-                 "--disable-builtinmbedtls"
-                 "--disable-builtinbearssl"
-                 "--disable-builtinzlib"
-                 "--disable-builtinflac"
-                 "--disable-builtinglslang"
-                 "--disable-builtinspirv_cross"
-                 ;; These are disabled to avoid requiring the bundled
-                 ;; dependencies.
-                 "--disable-7zip"
-                 "--disable-cheevos"
-                 "--disable-crtswitchres"
-                 "--disable-discord"
-                 "--disable-dr_mp3"
-                 "--disable-ibxm"
-                 "--disable-stb_font"
-                 "--disable-stb_image"
-                 "--disable-stb_vorbis"
-                 "--disable-xdelta"))))))
-      (native-inputs
-       (list pkg-config
-             wayland-protocols
-             which))
-      (inputs
-       (list alsa-lib
-             dbus
-             eudev
-             ffmpeg
-             flac
-             fontconfig
-             freetype
-             glslang
-             libxinerama
-             libxkbcommon
-             libxml2
-             libxrandr
-             libxv
-             mbedtls-lts
-             mesa
-             openal
-             openssl
-             pulseaudio
-             python
-             qtbase-5
-             sdl2
-             spirv-cross
-             spirv-headers
-             spirv-tools
-             v4l-utils
-             vulkan-loader
-             wayland
-             zlib))
-      (native-search-paths
-       (list (search-path-specification
-              (variable "LIBRETRO_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("lib/libretro")))
-             (search-path-specification
-              (variable "LIBRETRO_ASSETS_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/assets")))
-             (search-path-specification
-              (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/autoconfig")))
-             (search-path-specification
-              (variable "LIBRETRO_SYSTEM_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/system")))
-             (search-path-specification
-              (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/filters/video")))
-             (search-path-specification
-              (variable "LIBRETRO_VIDEO_SHADER_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/shaders")))))
-      (home-page "https://www.libretro.com/")
-      (synopsis "Reference frontend for the libretro API")
-      (description
-       "Libretro is a simple but powerful development interface that allows for
+              ;; The configure script does not yet accept the extra arguments
+              ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
+              (invoke
+               "./configure"
+               #$@(if (string-prefix? "armhf" (or (%current-target-system)
+                                                  (%current-system)))
+                      '("--enable-neon" "--enable-floathard")
+                      '())
+               (string-append "--prefix=" #$output)
+               ;; D-Bus support is required for 'suspend screensaver' option
+               ;; to work.
+               "--enable-dbus"
+               ;; Non-free software are available through the core updater,
+               ;; disable it.  See <https://issues.guix.gnu.org/38360>.
+               "--disable-update_cores"
+               "--disable-update_core_info"
+               "--disable-online_updater"
+               ;; The assets are provided via the `retroarch-assets' package.
+               "--disable-update_assets"
+               "--disable-builtinmbedtls"
+               "--disable-builtinbearssl"
+               "--disable-builtinzlib"
+               "--disable-builtinflac"
+               "--disable-builtinglslang"
+               "--disable-builtinspirv_cross"
+               ;; These are disabled to avoid requiring the bundled
+               ;; dependencies.
+               "--disable-7zip"
+               "--disable-cheevos"
+               "--disable-crtswitchres"
+               "--disable-discord"
+               "--disable-dr_mp3"
+               "--disable-ibxm"
+               "--disable-stb_font"
+               "--disable-stb_image"
+               "--disable-stb_vorbis"
+               "--disable-xdelta"))))))
+    (native-inputs
+     (list pkg-config
+           wayland-protocols
+           which))
+    (inputs
+     (list alsa-lib
+           dbus
+           eudev
+           ffmpeg
+           flac
+           fontconfig
+           freetype
+           glslang
+           libxinerama
+           libxkbcommon
+           libxml2
+           libxrandr
+           libxv
+           mbedtls-lts
+           mesa
+           openal
+           openssl
+           pulseaudio
+           python
+           qtbase-5
+           sdl2
+           spirv-cross
+           spirv-headers
+           spirv-tools
+           v4l-utils
+           vulkan-loader
+           wayland
+           zlib))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "LIBRETRO_DIRECTORY")
+            (separator #f)            ;single entry
+            (files '("lib/libretro")))
+           (search-path-specification
+            (variable "LIBRETRO_ASSETS_DIRECTORY")
+            (separator #f)            ;single entry
+            (files '("share/libretro/assets")))
+           (search-path-specification
+            (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
+            (separator #f)            ;single entry
+            (files '("share/libretro/autoconfig")))
+           (search-path-specification
+            (variable "LIBRETRO_SYSTEM_DIRECTORY")
+            (separator #f)            ;single entry
+            (files '("share/libretro/system")))
+           (search-path-specification
+            (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
+            (separator #f)            ;single entry
+            (files '("share/libretro/filters/video")))
+           (search-path-specification
+            (variable "LIBRETRO_VIDEO_SHADER_DIRECTORY")
+            (separator #f)            ;single entry
+            (files '("share/libretro/shaders")))))
+    (home-page "https://www.libretro.com/")
+    (synopsis "Reference frontend for the libretro API")
+    (description
+     "Libretro is a simple but powerful development interface that allows for
 the easy creation of emulators, games and multimedia applications that can plug
 straight into any libretro-compatible frontend.  RetroArch is the official
 reference frontend for the libretro API, currently used by most as a modular
 multi-system game/emulator system.")
-      (license (list license:gpl3+      ;for RetroArch itself
-                     license:asl2.0     ;SPIRV-Cross
-                     license:expat      ;yxml
-                     license:bsd-3))))) ;feragamemode
+    (license (list license:gpl3+      ;for RetroArch itself
+                   license:asl2.0     ;SPIRV-Cross
+                   license:expat      ;yxml
+                   license:bsd-3)))) ;feragamemode
 
 (define-public retroarch
   (package
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 04:48:02 GMT) Full text and rfc822 format available.

Message #26 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 7/7] gnu: retroarch-core-info: Update to 1.20.0.
Date: Fri, 17 Jan 2025 13:45:57 +0900
* gnu/packages/emulators.scm (retroarch-core-info): Update to 1.20.0.

Change-Id: I85eec43eedf24df44b5d486a2410652ad87536db
---
 gnu/packages/emulators.scm | 42 ++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 22 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 88de3dbd8a..37637fc345 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1780,30 +1780,28 @@ (define-public retroarch-assets
 
 (define-public retroarch-core-info
   ;; Use the latest commit, to get recent additions such as bsnes-jg.
-  (let ((commit "c0e7b76d02504754de67a1318f93089f1e29f15f")
-        (revision "0"))
-    (package
-      (name "retroarch-core-info")
-      (version (git-version "1.19.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/libretro/libretro-core-info")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "11xpy3zhy2smp4a70fc0r1b76mvmjyabkaaipifsxm3j25drki5z"))))
-      (build-system copy-build-system)
-      (arguments
-       (list #:install-plan #~'(("." "lib/libretro/"
-                                 #:include-regexp ("\\.info$")))))
-      (home-page "https://github.com/libretro/libretro-core-info")
-      (synopsis "Libretro core info files")
-      (description "This is a versioned snapshot of the files containing
+  (package
+    (name "retroarch-core-info")
+    (version "1.20.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libretro/libretro-core-info")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rfvp0lkv99jgpfyb9pp6vrh1i1974p3lckh93y1bibdizyxmwjg"))))
+    (build-system copy-build-system)
+    (arguments
+     (list #:install-plan #~'(("." "lib/libretro/"
+                               #:include-regexp ("\\.info$")))))
+    (home-page "https://github.com/libretro/libretro-core-info")
+    (synopsis "Libretro core info files")
+    (description "This is a versioned snapshot of the files containing
 metadata about each known libretro core.  The snapshot is taken from the
 @url{https://github.com/libretro/libretro-super, libretro-super} repository.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public retroarch-joypad-autoconfig
   (package
-- 
2.47.1





Information forwarded to guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Fri, 17 Jan 2025 08:54:02 GMT) Full text and rfc822 format available.

Message #29 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>, 75619 <at> debbugs.gnu.org
Cc: 宋文武 <iyzsong <at> envs.net>,
 Adam Faiz <adam.faiz <at> disroot.org>
Subject: Re: [bug#75619] [PATCH 3/7] gnu: dolphin-emu: Build .bin binary
 files and preserve data ones.
Date: Fri, 17 Jan 2025 09:53:24 +0100
Am Freitag, dem 17.01.2025 um 13:45 +0900 schrieb Maxim Cournoyer:
> These files are necessary to save games, enable cheat codes, etc.
> 
> * gnu/packages/emulators.scm (dolphin-emu) [source] <snippet>: Refine
> to avoid deleting a few .bin which are not executable objects but
> rather configuration files samples.
> [phases]: Add build-codeloader.bin, build-dsp_rom.bin and build-
> dsp_coefs.bin phases.
> [arguments] <configure-flags>: Add -DDSPTOOL=ON.
> [native-inputs]: Add a cross-compiler for powerpc.  Add python-
> minimal and python-numpy.
> 
> Change-Id: Ida8df1add940e1708c557223409d854aa995e8a5
> ---
Is there a way to rebuild those data files?  If not, then LGTM, I
guess.




Information forwarded to gabriel <at> erlikon.ch, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:01 GMT) Full text and rfc822 format available.

Message #32 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 01/10] gnu: Add soundtouch-1/integer-samples.
Date: Sat, 18 Jan 2025 17:50:45 +0900
* gnu/packages/audio.scm (soundtouch-1/integer-samples): New variable.

Change-Id: Iea6e1313f2c7189ded9abf100f07ed530793f9f0
---
 gnu/packages/audio.scm | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 712337dda8..1c4f3176ee 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016–2023 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2018, 2020, 2024 Oleg Pykhalov <go.wigust <at> gmail.com>
 ;;; Copyright © 2018 okapi <okapi <at> firemail.cc>
-;;; Copyright © 2018, 2020, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
+;;; Copyright © 2018, 2020, 2022-2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 ;;; Copyright © 2018 Clément Lassieur <clement <at> lassieur.org>
 ;;; Copyright © 2018 Brett Gilio <brettg <at> gnu.org>
 ;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius <at> gnu.org>
@@ -4355,6 +4355,30 @@ (define-public soundtouch
 control functionality, or just for playing around with the sound effects.")
     (license license:lgpl2.1+)))
 
+(define-public soundtouch-1/integer-samples
+  (package
+    (inherit soundtouch)
+    (name "soundtouch")
+    (version "1.9.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/soundtouch/soundtouch.git")
+             (commit (string-append name "-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ir961w5gz86cm6yivr1ypi6n2y52vn319gy2gvdkkbbz5wyjkrq"))))
+    (arguments
+     ;; Dolphin expects the samples to be of the integer type.
+     (list #:configure-flags #~(list "--enable-integer-samples")
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'bootstrap
+                          (lambda _
+                            ;; Avoid the bootstrap script, which has a broken
+                            ;; shebang.
+                            (invoke "autoreconf" "-vif"))))))))
+
 (define-public stargate-soundtouch
   ;; Stargate's fork of soundtouch.
   (let ((commit "464f474c0be5d7e0970909dd30593012e4621468")

base-commit: 0b06a5bc97938cae3da19e566c2f6f71cc299d78
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:02 GMT) Full text and rfc822 format available.

Message #35 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 02/10] gnu: dolphin-emu: Unbundle more libraries and enable
 tests.
Date: Sat, 18 Jan 2025 17:50:46 +0900
* gnu/packages/emulators.scm (dolphin-emu)
[source] <snippet>: Delete bzip2, cubeb, enet, fmt, pugixml, soundtouch,
xxhash and zstd sources and de-register enet, soundtouch and xxhash from the
build system.
[arguments] <#:tests?>: Delete argument.
<#:phases>: Add remove-unittests-target-post-build-command and post-check
phases.
<#:configure-flags>: Specify CMAKE_CXX_FLAGS to locate soundtouch headers.
<#:test-target>: New argument.
[inputs]: Add bzip2, cubeb, enet, fmt-7, minizip-ng, xxhash and
zstd:lib.  Replace soundtouch with soundtouch-1/integer-samples.

Change-Id: Id996d992674f9efbbb2eb562286447a388716a82
---
 gnu/packages/emulators.scm | 142 ++++++++++++++++++++++++++-----------
 1 file changed, 100 insertions(+), 42 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9e2d6485dd..6f77329f27 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2020 Christopher Howard <christopher <at> librehacker.com>
 ;;; Copyright © 2021 Felipe Balbi <balbi <at> kernel.org>
 ;;; Copyright © 2021, 2024 Felix Gruber <felgru <at> posteo.net>
-;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
+;;; Copyright © 2021, 2024, 2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;; Copyright © 2023 c4droid <c4droid <at> foxmail.com>
 ;;; Copyright © 2023 Yovan Naumovski <yovan <at> gorski.stream>
@@ -94,6 +94,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
@@ -294,58 +295,112 @@ (define-public dolphin-emu
              ;; Remove external stuff we don't need.
              (for-each (lambda (dir)
                          (delete-file-recursively
-                           (string-append "Externals/" dir)))
-                       '("LZO" "OpenAL" "Qt" "SFML" "curl" "ffmpeg"
-                         "gettext" "hidapi" "libpng" "libusb" "mbedtls"
-                         "miniupnpc" "MoltenVK" "zlib"))
+                          (string-append "Externals/" dir)))
+                       '("LZO" "OpenAL" "Qt" "SFML" "bzip2"
+                         ;; 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"
+                         ;; XXX: Attempting to use an unbundled glslang at the
+                         ;; exact commit used by Dolphin still results in
+                         ;; "error: ‘DefaultTBuiltInResource’ is not a member
+                         ;; of ‘glslang’".
+                         ;;"glslang"
+                         ;; XXX: Googletest cannot currently easily be
+                         ;; unbundled, as there are missing linking
+                         ;; directives.
+                         ;;"gtest"
+                         "hidapi" "libpng" "libusb" "mbedtls"
+                         "miniupnpc" "minizip" "MoltenVK" "pugixml"
+                         "soundtouch"
+                         "xxhash" "zlib" "zstd"))
              ;; Clean up source.
              (for-each delete-file
-                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))))))
+                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
+             ;; Do not attempt to include now-missing directories.
+             (substitute* "CMakeLists.txt"
+               ((".*add_subdirectory.*Externals/enet.*") "")
+               ((".*add_subdirectory.*Externals/soundtouch.*") "")
+               ((".*add_subdirectory.*Externals/xxhash.*") ""))))))
       (build-system cmake-build-system)
       (arguments
-       '(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((fontfile
-                      (search-input-file inputs
-                                         "/share/fonts/truetype/wqy-microhei.ttc"))
-                     (libvulkan
-                      (search-input-file inputs "/lib/libvulkan.so")))
-                 (chdir "docs")
-                 (invoke "bash" "-c" "g++ -O2 $(freetype-config \
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'configure 'remove-unittests-target-post-build-command
+              (lambda _
+                ;; To skip a few problematic tests, CTest will be manually
+                ;; invoked in the post-check phase.
+                (with-directory-excursion "Source/UnitTests"
+                  (substitute* "CMakeLists.txt"
+                    (("add_custom_command\\(TARGET unittests POST_BUILD.*")
+                     "")))))
+            (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
+              (lambda* (#:key inputs #:allow-other-keys)
+                (let ((fontfile
+                       (search-input-file inputs
+                                          "/share/fonts/truetype/wqy-microhei.ttc"))
+                      (libvulkan
+                       (search-input-file inputs "/lib/libvulkan.so")))
+                  (chdir "docs")
+                  (invoke "bash" "-c" "g++ -O2 $(freetype-config \
 --cflags --libs) gc-font-tool.cpp -o gc-font-tool")
-                 (invoke "./gc-font-tool" "a" fontfile "font_western.bin")
-                 (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
-                 (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
-                 (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
-                 (chdir "..")
-                 (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
-                   (("\"vulkan\", 1") (string-append "\"vulkan\""))
-                   (("\"vulkan\"") (string-append "\"" libvulkan "\""))
-                   (("Common::DynamicLibrary::GetVersionedFilename") ""))))))
-
-         ;; The FindGTK2 cmake script only checks hardcoded directories for
-         ;; glib/gtk headers.
-
-         #:configure-flags
-         (list (string-append "-DX11_INCLUDE_DIR="
-                              (assoc-ref %build-inputs "libx11")
-                              "/include")
-               (string-append "-DX11_LIBRARIES="
-                              (assoc-ref %build-inputs "libx11")
-                              "/lib/libX11.so")
-               "-DX11_FOUND=1")))
+                  (invoke "./gc-font-tool" "a" fontfile "font_western.bin")
+                  (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
+                  (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
+                  (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
+                  (chdir "..")
+                  (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
+                    (("\"vulkan\", 1") (string-append "\"vulkan\""))
+                    (("\"vulkan\"") (string-append "\"" libvulkan "\""))
+                    (("Common::DynamicLibrary::GetVersionedFilename") "")))))
+            (add-after 'check 'post-check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (with-directory-excursion "Source/UnitTests"
+                    (invoke "ctest" "-V" "--output-on-failure"
+                            ;; These tests fail due to libusb failing to
+                            ;; init inside the build container.
+                            "-E" (string-join
+                                  '("MMIOTest"
+                                    "PageFaultTest"
+                                    "CoreTimingTest"
+                                    "FileSystemTest"
+                                    "PowerPCTest"
+                                    "VertexLoaderTest")
+                                  "|")))))))
+        ;; The FindGTK2 cmake script only checks hardcoded directories for
+        ;; glib/gtk headers.  Also add some include directories via the CXX
+        ;; flags to let GCC find some headers not actively searched by the
+        ;; build system.
+        #:configure-flags
+        #~(list (string-append "-DCMAKE_CXX_FLAGS="
+                               "-I" (search-input-directory
+                                     %build-inputs "include/soundtouch"))
+                (string-append "-DX11_INCLUDE_DIR="
+                               #$(this-package-input "libx11")
+                               "/include")
+                (string-append "-DX11_LIBRARIES="
+                               (search-input-file %build-inputs
+                                                  "lib/libX11.so"))
+                "-DX11_FOUND=1")
+        #:test-target "unittests"))
       (native-inputs
        (list gettext-minimal pkg-config))
       (inputs
        (list alsa-lib
              ao
              bluez
+             bzip2
+             cubeb
              curl
+             enet
              eudev
              ffmpeg-4
+             fmt-7
              font-wqy-microhei
              freetype
              glew
@@ -363,6 +418,7 @@ (define-public dolphin-emu
              mbedtls-lts
              mesa
              miniupnpc
+             minizip-ng
              openal
              pugixml
              pulseaudio
@@ -370,9 +426,11 @@ (define-public dolphin-emu
              sdl2
              sfml
              soil
-             soundtouch
+             soundtouch-1/integer-samples
              vulkan-loader
-             zlib))
+             xxhash
+             zlib
+             `(,zstd "lib")))
       (home-page "https://dolphin-emu.org/")
       (synopsis "Nintendo Wii and GameCube emulator")
       (description
@@ -380,7 +438,7 @@ (define-public dolphin-emu
 GameCube and the Wii.  It provides compatibility with all PC controllers,
 turbo speed, networked multiplayer, and graphical enhancements.")
       (supported-systems '("x86_64-linux" "aarch64-linux"))
-      ; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
+      ;; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
       (license (list license:gpl2+ license:asl2.0 license:fdl1.2+)))))
 
 (define-public dosbox
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:02 GMT) Full text and rfc822 format available.

Message #38 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 03/10] gnu: dolphin-emu: Build .bin binary files and
 preserve data ones.
Date: Sat, 18 Jan 2025 17:50:47 +0900
These files are necessary to save games, enable cheat codes, etc.

* gnu/packages/emulators.scm (dolphin-emu) [source] <snippet>: Refine to avoid
deleting a few .bin which are not executable objects but rather configuration
files samples.
[phases]: Add build-codeloader.bin, build-dsp_rom.bin and build-dsp_coefs.bin
phases.
[arguments] <configure-flags>: Add -DDSPTOOL=ON.
[native-inputs]: Add a cross-compiler for powerpc.  Add python-minimal and
python-numpy.

Change-Id: Ida8df1add940e1708c557223409d854aa995e8a5
---
 gnu/packages/emulators.scm | 50 ++++++++++++++++++++++++++++++++++----
 1 file changed, 45 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 6f77329f27..2486485805 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -98,6 +98,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sphinx)
@@ -289,7 +290,8 @@ (define-public dolphin-emu
          (file-name (git-file-name name version))
          (sha256
           (base32 "1p8qsxlabgmz3nic0a9ghh9d3lzl5f8i3kmdrrvx6w8kdlp33018"))
-         (modules '((guix build utils)))
+         (modules '((guix build utils)
+                    (ice-9 regex)))
          (snippet
           '(begin
              ;; Remove external stuff we don't need.
@@ -317,9 +319,19 @@ (define-public dolphin-emu
                          "miniupnpc" "minizip" "MoltenVK" "pugixml"
                          "soundtouch"
                          "xxhash" "zlib" "zstd"))
-             ;; Clean up source.
+             ;; Clean up the source.
              (for-each delete-file
-                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
+                       (find-files
+                        "."
+                        (lambda (file _)
+                          (and (string-match "\\.(bin|dsy|exe|jar|rar)$" file)
+                               ;; Preserve the important wc24 .bin
+                               ;; configuration *data* files.
+                               (not (member (basename file)
+                                            '("misc.bin"
+                                              "nwc24dl.bin"
+                                              "nwc24fl.bin"
+                                              "nwc24fls.bin")))))))
              ;; Do not attempt to include now-missing directories.
              (substitute* "CMakeLists.txt"
                ((".*add_subdirectory.*Externals/enet.*") "")
@@ -371,7 +383,30 @@ (define-public dolphin-emu
                                     "FileSystemTest"
                                     "PowerPCTest"
                                     "VertexLoaderTest")
-                                  "|")))))))
+                                  "|"))))))
+            (add-before 'install 'build-codeloader.bin
+              (lambda _
+                (with-directory-excursion "../source/docs"
+                  ;; The following command-line is adapted from the example in
+                  ;; codehandler.s.
+                  (invoke "powerpc-linux-gnu-gcc" "-mpowerpc" "-mbig"
+                          "codehandler.s" "-nostartfiles" "-nodefaultlibs"
+                          "-nostdlib" "-T" "codehandler.ld"
+                          "-o" "codehandler.bin")
+                  (copy-file "codehandler.bin" "../Data/Sys/codehandler.bin"))))
+            (add-before 'install 'build-dsp_rom.bin
+              (lambda _
+                ;; Ensure dsptool is on PATH.
+                (setenv "PATH" (string-append (getenv "PATH") ":"
+                                              (getcwd) "/Binaries"))
+                (with-directory-excursion "../source"
+                  (invoke "dsptool" "-o" "Data/Sys/GC/dsp_rom.bin"
+                          "docs/DSP/free_dsp_rom/dsp_rom.ds"))))
+            (add-before 'install 'build-dsp_coefs.bin
+              (lambda _
+                (with-directory-excursion "../source"
+                  (invoke "python3" "docs/DSP/free_dsp_rom/generate_coefs.py")
+                  (rename-file "dsp_coef.bin" "Data/Sys/GC/dsp_coef.bin")))))
         ;; The FindGTK2 cmake script only checks hardcoded directories for
         ;; glib/gtk headers.  Also add some include directories via the CXX
         ;; flags to let GCC find some headers not actively searched by the
@@ -380,6 +415,7 @@ (define-public dolphin-emu
         #~(list (string-append "-DCMAKE_CXX_FLAGS="
                                "-I" (search-input-directory
                                      %build-inputs "include/soundtouch"))
+                "-DDSPTOOL=ON"
                 (string-append "-DX11_INCLUDE_DIR="
                                #$(this-package-input "libx11")
                                "/include")
@@ -389,7 +425,11 @@ (define-public dolphin-emu
                 "-DX11_FOUND=1")
         #:test-target "unittests"))
       (native-inputs
-       (list gettext-minimal pkg-config))
+       (list (cross-gcc "powerpc-linux-gnu")
+             gettext-minimal
+             pkg-config
+             python-minimal
+             python-numpy))
       (inputs
        (list alsa-lib
              ao
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:03 GMT) Full text and rfc822 format available.

Message #41 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 04/10] gnu: retroarch-minimal: Add new search paths for
 database and system files.
Date: Sat, 18 Jan 2025 17:50:48 +0900
This makes it possible to locate system files provided by libretro cores, as
well as database files.

* gnu/packages/patches/retroarch-improved-search-paths.patch: Extend patch.
* gnu/packages/emulators.scm (retroarch-minimal) [native-search-paths]:
Register new search paths for the LIBRETRO_DATABASE_DIRECTORY and
LIBRETRO_SYSTEM_DIRECTORY variables.

Change-Id: I48f9a92608c0e36922ce9dcc9bbb61d6ca915002
---
 gnu/packages/emulators.scm                    |   8 ++
 .../retroarch-improved-search-paths.patch     | 127 ++++++++++++++----
 2 files changed, 108 insertions(+), 27 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 2486485805..28b8914902 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -2632,6 +2632,14 @@ (define-public retroarch-minimal
               (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
               (separator #f)            ;single entry
               (files '("share/libretro/autoconfig")))
+             (search-path-specification
+              (variable "LIBRETRO_DATABASE_DIRECTORY")
+              (separator #f)            ;single entry
+            (files '("share/libretro/database/rdb")))
+             (search-path-specification
+              (variable "LIBRETRO_SYSTEM_DIRECTORY")
+              (separator #f)            ;single entry
+              (files '("share/libretro/system")))
              (search-path-specification
               (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
               (separator #f)            ;single entry
diff --git a/gnu/packages/patches/retroarch-improved-search-paths.patch b/gnu/packages/patches/retroarch-improved-search-paths.patch
index 6fcd4745ac..037e73fa09 100644
--- a/gnu/packages/patches/retroarch-improved-search-paths.patch
+++ b/gnu/packages/patches/retroarch-improved-search-paths.patch
@@ -1,25 +1,22 @@
-Allows discovery of assets file via the LIBRETRO_ASSETS_DIRECTORY environment
-variable.
-
-Upstream-status: https://github.com/libretro/RetroArch/pull/17054
-
 diff --git a/configuration.c b/configuration.c
-index 5808a3f21c..0cc2909102 100644
+index 5808a3f21c..e1c56f2f1b 100644
 --- a/configuration.c
 +++ b/configuration.c
-@@ -3573,6 +3573,11 @@ static bool config_load_file(global_t *global,
+@@ -3573,6 +3573,13 @@ static bool config_load_file(global_t *global,
  {
     unsigned i;
     char tmp_str[PATH_MAX_LENGTH];
 +   char* libretro_directory                        = NULL;
 +   char* libretro_assets_directory                 = NULL;
 +   char* libretro_autoconfig_directory             = NULL;
++   char* libretro_database_directory               = NULL;
++   char* libretro_system_directory                 = NULL;
 +   char* libretro_video_filter_directory           = NULL;
 +   char* libretro_video_shader_directory           = NULL;
     static bool first_load                          = true;
     bool without_overrides                          = false;
     unsigned msg_color                              = 0;
-@@ -3848,12 +3853,6 @@ static bool config_load_file(global_t *global,
+@@ -3848,12 +3855,6 @@ static bool config_load_file(global_t *global,
           strlcpy(path_settings[i].ptr, tmp_str, PATH_MAX_LENGTH);
     }
  
@@ -32,7 +29,7 @@ index 5808a3f21c..0cc2909102 100644
  #ifdef RARCH_CONSOLE
     if (conf)
        video_driver_load_settings(global, conf);
-@@ -3861,6 +3860,20 @@ static bool config_load_file(global_t *global,
+@@ -3861,6 +3862,32 @@ static bool config_load_file(global_t *global,
  
     /* Post-settings load */
  
@@ -45,15 +42,27 @@ index 5808a3f21c..0cc2909102 100644
 +   }
 +
 +   libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
-+   if (libretro_autoconfig_directory)
++   if (libretro_autoconfig_directory) /* override configuration value */
 +       configuration_set_string(settings,
 +				settings->paths.directory_autoconfig,
 +				libretro_autoconfig_directory);
++
++   libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
++   if (libretro_database_directory) /* override configuration value */
++       configuration_set_string(settings,
++				settings->paths.path_content_database,
++				libretro_database_directory);
++
++   libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
++   if (libretro_system_directory) /* override configuration value */
++       configuration_set_string(settings,
++				settings->paths.directory_system,
++				libretro_system_directory);
 +
     if (     (rarch_flags & RARCH_FLAGS_HAS_SET_USERNAME)
           && (override_username))
     {
-@@ -4032,15 +4045,27 @@ static bool config_load_file(global_t *global,
+@@ -4032,15 +4059,27 @@ static bool config_load_file(global_t *global,
        *settings->paths.path_menu_wallpaper = '\0';
     if (string_is_equal(settings->paths.path_rgui_theme_preset, "default"))
        *settings->paths.path_rgui_theme_preset = '\0';
@@ -85,18 +94,18 @@ index 5808a3f21c..0cc2909102 100644
  #ifdef _3DS
     if (string_is_equal(settings->paths.directory_bottom_assets, "default"))
 diff --git a/docs/retroarch.6 b/docs/retroarch.6
-index 7478040e17..f864e0e0d5 100644
+index 7478040e17..f26a1219f0 100644
 --- a/docs/retroarch.6
 +++ b/docs/retroarch.6
 @@ -1,6 +1,6 @@
  .\" retroarch.6:
  
 -.TH  "RETROARCH" "6" "November 1, 2011" "RETROARCH" "System Manager's Manual: retroarch"
-+.TH  "RETROARCH" "6" "September 28, 2024" "RETROARCH" "System Manager's Manual: retroarch"
++.TH  "RETROARCH" "6" "January 18, 2025" "RETROARCH" "System Manager's Manual: retroarch"
  
  .SH NAME
  
-@@ -239,3 +239,36 @@ Disables all kinds of content patching.
+@@ -239,3 +239,48 @@ Disables all kinds of content patching.
  .TP
  \fB-D, --detach\fR
  Detach from the current console. This is currently only relevant for Microsoft Windows.
@@ -123,6 +132,18 @@ index 7478040e17..f864e0e0d5 100644
 +"joypad_autoconfig_dir" configuration file option.
 +
 +.TP
++\fBLIBRETRO_DATABASE_DIRECTORY\fR
++Specify the directory where RetroArch looks for database files,
++overriding the value of the "content_database_path" configuration file
++option.
++
++.TP
++\fBLIBRETRO_SYSTEM_DIRECTORY\fR
++Specify the directory where RetroArch looks for system files,
++overriding the value of the "system_directory" configuration file
++option.
++
++.TP
 +\fBLIBRETRO_VIDEO_FILTER_DIRECTORY\fR
 +Specify the directory where RetroArch looks for video filters,
 +overriding the value of the "video_filter_dir" configuration file
@@ -134,21 +155,23 @@ index 7478040e17..f864e0e0d5 100644
 +overriding the value of the "video_shader_dir" configuration file
 +option.
 diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c
-index c157d355a1..ddf0b5ca87 100644
+index c157d355a1..bec65ca949 100644
 --- a/frontend/drivers/platform_unix.c
 +++ b/frontend/drivers/platform_unix.c
-@@ -1324,6 +1324,10 @@ static void frontend_unix_get_env(int *argc,
+@@ -1324,6 +1324,12 @@ static void frontend_unix_get_env(int *argc,
  {
     unsigned i;
     const char* libretro_directory = getenv("LIBRETRO_DIRECTORY");
 +   const char* libretro_assets_directory = getenv("LIBRETRO_ASSETS_DIRECTORY");
 +   const char* libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
++   const char* libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
++   const char* libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
 +   const char* libretro_video_filter_directory = getenv("LIBRETRO_VIDEO_FILTER_DIRECTORY");
 +   const char* libretro_video_shader_directory = getenv("LIBRETRO_VIDEO_SHADER_DIRECTORY");
  #ifdef ANDROID
     int32_t major, minor, rel;
     char device_model[PROP_VALUE_MAX]  = {0};
-@@ -1765,12 +1769,20 @@ static void frontend_unix_get_env(int *argc,
+@@ -1765,12 +1771,20 @@ static void frontend_unix_get_env(int *argc,
              "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
     else
  #endif
@@ -174,7 +197,7 @@ index c157d355a1..ddf0b5ca87 100644
  #ifdef ASSETS_DIR
     if (path_is_directory(ASSETS_DIR "/assets"))
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS],
-@@ -1778,7 +1790,10 @@ static void frontend_unix_get_env(int *argc,
+@@ -1778,7 +1792,10 @@ static void frontend_unix_get_env(int *argc,
              "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
     else
  #endif
@@ -186,7 +209,7 @@ index c157d355a1..ddf0b5ca87 100644
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS],
              "/usr/local/share/retroarch",
              "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
-@@ -1838,7 +1853,11 @@ static void frontend_unix_get_env(int *argc,
+@@ -1838,7 +1855,11 @@ static void frontend_unix_get_env(int *argc,
              "filters/video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
     else
  #endif
@@ -199,12 +222,21 @@ index c157d355a1..ddf0b5ca87 100644
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER],
              "/usr/local/share/retroarch",
              "filters/video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
-@@ -1872,8 +1891,13 @@ static void frontend_unix_get_env(int *argc,
+@@ -1870,10 +1891,20 @@ static void frontend_unix_get_env(int *argc,
+          "records_config", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG]));
+    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT], base_path,
           "records", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT]));
-    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_DATABASE], base_path,
-          "database/rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
+-   fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_DATABASE], base_path,
+-         "database/rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
 -   fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SHADER], base_path,
 -         "shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER]));
++   if (!string_is_empty(libretro_database_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_DATABASE],
++	       libretro_database_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
++   else
++       fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_DATABASE], base_path,
++             "database/rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
 +   if (!string_is_empty(libretro_video_shader_directory))
 +       strlcpy(g_defaults.dirs[DEFAULT_DIR_SHADER],
 +	       libretro_video_shader_directory,
@@ -215,16 +247,34 @@ index c157d355a1..ddf0b5ca87 100644
     fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], base_path,
           "cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
     fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_OVERLAY], base_path,
+@@ -1892,8 +1923,13 @@ static void frontend_unix_get_env(int *argc,
+          "saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
+    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SAVESTATE], base_path,
+          "states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
+-   fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SYSTEM], base_path,
+-         "system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   if (!string_is_empty(libretro_system_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++	       libretro_system_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   else
++       fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SYSTEM], base_path,
++             "system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
+ #endif
+ 
+ #ifndef IS_SALAMANDER
 diff --git a/frontend/drivers/platform_win32.c b/frontend/drivers/platform_win32.c
-index 26ed25c04f..0cc9a9dc95 100644
+index 26ed25c04f..77d415f0e7 100644
 --- a/frontend/drivers/platform_win32.c
 +++ b/frontend/drivers/platform_win32.c
-@@ -565,24 +565,38 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+@@ -565,24 +565,45 @@ static void frontend_win32_env_get(int *argc, char *argv[],
  {
     const char *tmp_dir = getenv("TMP");
     const char *libretro_directory = getenv("LIBRETRO_DIRECTORY");
 +   const char *libretro_assets_directory = getenv("LIBRETRO_ASSETS_DIRECTORY");
 +   const char* libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
++   const char* libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
++   const char* libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
 +   const char* libretro_video_filter_directory = getenv("LIBRETRO_VIDEO_FILTER_DIRECTORY");
 +   const char* libretro_video_shader_directory = getenv("LIBRETRO_VIDEO_SHADER_DIRECTORY");
     if (!string_is_empty(tmp_dir))
@@ -255,15 +305,22 @@ index 26ed25c04f..0cc9a9dc95 100644
 +           ":\\filters\\video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS],
        ":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
-    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE],
-       ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
+-   fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE],
+-      ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
++   if (!string_is_empty(libretro_database_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_DATABASE],
++	       libretro_database_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
++   else
++       fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE],
++           ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_PLAYLIST],
 -      ":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
 +      ":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_PLAYLIST]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG],
        ":\\config\\record", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT],
-@@ -605,12 +619,26 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+@@ -605,12 +626,26 @@ static void frontend_win32_env_get(int *argc, char *argv[],
     else
        fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE],
              ":\\cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
@@ -296,3 +353,19 @@ index 26ed25c04f..0cc9a9dc95 100644
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
        ":\\downloads", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT],
+@@ -619,8 +654,13 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+       ":\\saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
+    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SAVESTATE],
+       ":\\states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
+-   fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
+-      ":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   if (!string_is_empty(libretro_system_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++	       libretro_system_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   else
++       fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++             ":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
+    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_LOGS],
+       ":\\logs", sizeof(g_defaults.dirs[DEFAULT_DIR_LOGS]));
+ 
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:03 GMT) Full text and rfc822 format available.

Message #44 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 05/10] gnu: Add libretro-dolphin-emu.
Date: Sat, 18 Jan 2025 17:50:49 +0900
* gnu/packages/emulators.scm (libretro-dolphin-emu): New variable.

Change-Id: Id05e1d17ff6927bb1492ce2816790f7d94f9e1b8
---
 gnu/packages/emulators.scm | 51 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 28b8914902..242c1fa03b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -481,6 +481,57 @@ (define-public dolphin-emu
       ;; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
       (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.
+  (let ((commit "89a4df725d4eb24537728f7d655cddb1add25c18")
+        (revision "0"))
+    (package
+      (inherit dolphin-emu)
+      (name "libretro-dolphin-emu")
+      (version (git-version "5.0" revision commit))
+      (source (origin
+                (inherit (package-source dolphin-emu))
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/libretro/dolphin")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1fvm6hy0ihc0j3sgv88a7ak08c0kyikmmiif827j981fy7zvglvz"))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments dolphin-emu)
+         ((#:configure-flags flags ''())
+          #~(cons "-DLIBRETRO=ON" #$flags))
+         ((#:phases phases '%standard-phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'deregister-bundled-sources
+                (lambda _
+                  (substitute* "CMakeLists.txt"
+                    ((".*add_subdirectory.*Externals/curl.*") "")
+                    ((".*add_subdirectory.*Externals/libpng.*") ""))))
+              (replace 'install
+                (lambda _
+                  (install-file "dolphin_libretro.so"
+                                (string-append #$output "/lib/libretro"))
+                  ;; The system data files are also required for the proper
+                  ;; functioning of dolphin; without them, it crashes with
+                  ;; segmentation faults and cannot save files to the memory
+                  ;; card.
+                  (let ((sysdir (string-append
+                                 #$output
+                                 "/share/libretro/system/dolphin-emu")))
+                    (mkdir-p sysdir)
+                    (copy-recursively "../source/Data/Sys"
+                                      (string-append sysdir "/Sys")))))))))
+      (inputs
+       ;; Delete large and extraneous inputs.
+       (modify-inputs (package-inputs dolphin-emu)
+         (delete "ffmpeg"
+                 "gtk+"
+                 "qtbase")))
+      (synopsis "Libretro port of Dolphin, the Nintendo Wii/GameCube emulator"))))
+
 (define-public dosbox
   (package
     (name "dosbox")
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:04 GMT) Full text and rfc822 format available.

Message #47 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 06/10] gnu: retroarch-minimal: Update to 1.20.0.
Date: Sat, 18 Jan 2025 17:50:50 +0900
* gnu/packages/emulators.scm (retroarch-minimal): Update to 1.20.0.

Change-Id: I3b4121d2520ee08a9d8454f2666ed30c140ced5b
---
 gnu/packages/emulators.scm | 334 ++++++++++++++++++-------------------
 1 file changed, 166 insertions(+), 168 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 242c1fa03b..0cfce8a924 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -2536,181 +2536,179 @@ (define-public libretro-slang-shaders
                      license:unlicense)))))
 
 (define-public retroarch-minimal
-  (let ((commit "48b71d5cf8a070e785e2302d8fe241a7c2180fdd")
-        (revision "1"))
-    (package
-      (name "retroarch-minimal")
-      (version "1.19.1")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/libretro/RetroArch")
-               (commit commit)))
-         (snippet
-          #~(begin
-              (use-modules (guix build utils)
-                           (ice-9 ftw)
-                           (srfi srfi-26))
-              ;; XXX: 'delete-all-but' is copied from the turbovnc package.
-              (define (delete-all-but directory . preserve)
-                (define (directory? x)
-                  (and=> (stat x #f)
-                         (compose (cut eq? 'directory <>) stat:type)))
-                (with-directory-excursion directory
-                  (let* ((pred
-                          (negate (cut member <> (append '("." "..") preserve))))
-                         (items (scandir "." pred)))
-                    (for-each (lambda (item)
-                                (if (directory? item)
-                                    (delete-file-recursively item)
-                                    (delete-file item)))
-                              items))))
-              ;; Remove as much bundled sources as possible, shaving off about
-              ;; 65 MiB.
-              (delete-all-but "deps"
-                              "feralgamemode" ;used in platform_unix.c
-                              "mbedtls"       ;further refined below
-                              "yxml")         ;used in rxml.c
-              ;; This is an old root certificate used in net_socket_ssl_mbed.c,
-              ;; not actually from mbedtls.
-              (delete-all-but "deps/mbedtls" "cacert.h")))
-         (patches (search-patches "retroarch-improved-search-paths.patch"
-                                  "retroarch-unbundle-spirv-cross.patch"))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "13hgg4pxkpwlcmmyp9npr9k9cb94waqiyjpy2jzs8m9rc7xl2ap9"))))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-        #:tests? #f                     ; no tests
-        #:phases
-        #~(modify-phases %standard-phases
-            (replace 'configure
-              (lambda* (#:key inputs #:allow-other-keys)
-                ;; Hard-code some store file names.
-                (substitute* "gfx/common/vulkan_common.c"
-                  (("libvulkan.so")
-                   (search-input-file inputs "lib/libvulkan.so")))
-                (substitute* "gfx/common/wayland/generate_wayland_protos.sh"
-                  (("/usr/local/share/wayland-protocols")
-                   (search-input-directory inputs "share/wayland-protocols")))
+  (package
+    (name "retroarch-minimal")
+    (version "1.20.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/libretro/RetroArch")
+             (commit (string-append "v" version))))
+       (snippet
+        #~(begin
+            (use-modules (guix build utils)
+                         (ice-9 ftw)
+                         (srfi srfi-26))
+            ;; XXX: 'delete-all-but' is copied from the turbovnc package.
+            (define (delete-all-but directory . preserve)
+              (define (directory? x)
+                (and=> (stat x #f)
+                       (compose (cut eq? 'directory <>) stat:type)))
+              (with-directory-excursion directory
+                (let* ((pred
+                        (negate (cut member <> (append '("." "..") preserve))))
+                       (items (scandir "." pred)))
+                  (for-each (lambda (item)
+                              (if (directory? item)
+                                  (delete-file-recursively item)
+                                  (delete-file item)))
+                            items))))
+            ;; Remove as much bundled sources as possible, shaving off about
+            ;; 65 MiB.
+            (delete-all-but "deps"
+                            "feralgamemode" ;used in platform_unix.c
+                            "mbedtls"       ;further refined below
+                            "yxml")         ;used in rxml.c
+            ;; This is an old root certificate used in net_socket_ssl_mbed.c,
+            ;; not actually from mbedtls.
+            (delete-all-but "deps/mbedtls" "cacert.h")))
+       (patches (search-patches "retroarch-improved-search-paths.patch"
+                                "retroarch-unbundle-spirv-cross.patch"))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0yc16j3g2g0if64xqd7qr4dza8rw10x0zypwbl92y735825p87qi"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ; no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Hard-code some store file names.
+              (substitute* "gfx/common/vulkan_common.c"
+                (("libvulkan.so")
+                 (search-input-file inputs "lib/libvulkan.so")))
+              (substitute* "gfx/common/wayland/generate_wayland_protos.sh"
+                (("/usr/local/share/wayland-protocols")
+                 (search-input-directory inputs "share/wayland-protocols")))
 
-                ;; Without HLSL, we can still enable GLSLANG and Vulkan support.
-                (substitute* "qb/config.libs.sh"
-                  (("[$]HAVE_GLSLANG_HLSL") "notcare"))
+              ;; Without HLSL, we can still enable GLSLANG and Vulkan support.
+              (substitute* "qb/config.libs.sh"
+                (("[$]HAVE_GLSLANG_HLSL") "notcare"))
 
-                ;; The configure script does not yet accept the extra arguments
-                ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
-                (invoke
-                 "./configure"
-                 #$@(if (string-prefix? "armhf" (or (%current-target-system)
-                                                    (%current-system)))
-                        '("--enable-neon" "--enable-floathard")
-                        '())
-                 (string-append "--prefix=" #$output)
-                 ;; D-Bus support is required for 'suspend screensaver' option
-                 ;; to work.
-                 "--enable-dbus"
-                 ;; Non-free software are available through the core updater,
-                 ;; disable it.  See <https://issues.guix.gnu.org/38360>.
-                 "--disable-update_cores"
-                 "--disable-update_core_info"
-                 "--disable-online_updater"
-                 ;; The assets are provided via the `retroarch-assets' package.
-                 "--disable-update_assets"
-                 "--disable-builtinmbedtls"
-                 "--disable-builtinbearssl"
-                 "--disable-builtinzlib"
-                 "--disable-builtinflac"
-                 "--disable-builtinglslang"
-                 "--disable-builtinspirv_cross"
-                 ;; These are disabled to avoid requiring the bundled
-                 ;; dependencies.
-                 "--disable-7zip"
-                 "--disable-cheevos"
-                 "--disable-crtswitchres"
-                 "--disable-discord"
-                 "--disable-dr_mp3"
-                 "--disable-ibxm"
-                 "--disable-stb_font"
-                 "--disable-stb_image"
-                 "--disable-stb_vorbis"
-                 "--disable-xdelta"))))))
-      (native-inputs
-       (list pkg-config
-             wayland-protocols
-             which))
-      (inputs
-       (list alsa-lib
-             dbus
-             eudev
-             ffmpeg
-             flac
-             fontconfig
-             freetype
-             glslang
-             libxinerama
-             libxkbcommon
-             libxml2
-             libxrandr
-             libxv
-             mbedtls-lts
-             mesa
-             openal
-             openssl
-             pulseaudio
-             python
-             qtbase-5
-             sdl2
-             spirv-cross
-             spirv-headers
-             spirv-tools
-             v4l-utils
-             vulkan-loader
-             wayland
-             zlib))
-      (native-search-paths
-       (list (search-path-specification
-              (variable "LIBRETRO_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("lib/libretro")))
-             (search-path-specification
-              (variable "LIBRETRO_ASSETS_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/assets")))
-             (search-path-specification
-              (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/autoconfig")))
-             (search-path-specification
-              (variable "LIBRETRO_DATABASE_DIRECTORY")
-              (separator #f)            ;single entry
+              ;; The configure script does not yet accept the extra arguments
+              ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
+              (invoke
+               "./configure"
+               #$@(if (string-prefix? "armhf" (or (%current-target-system)
+                                                  (%current-system)))
+                      '("--enable-neon" "--enable-floathard")
+                      '())
+               (string-append "--prefix=" #$output)
+               ;; D-Bus support is required for 'suspend screensaver' option
+               ;; to work.
+               "--enable-dbus"
+               ;; Non-free software are available through the core updater,
+               ;; disable it.  See <https://issues.guix.gnu.org/38360>.
+               "--disable-update_cores"
+               "--disable-update_core_info"
+               "--disable-online_updater"
+               ;; The assets are provided via the `retroarch-assets' package.
+               "--disable-update_assets"
+               "--disable-builtinmbedtls"
+               "--disable-builtinbearssl"
+               "--disable-builtinzlib"
+               "--disable-builtinflac"
+               "--disable-builtinglslang"
+               "--disable-builtinspirv_cross"
+               ;; These are disabled to avoid requiring the bundled
+               ;; dependencies.
+               "--disable-7zip"
+               "--disable-cheevos"
+               "--disable-crtswitchres"
+               "--disable-discord"
+               "--disable-dr_mp3"
+               "--disable-ibxm"
+               "--disable-stb_font"
+               "--disable-stb_image"
+               "--disable-stb_vorbis"
+               "--disable-xdelta"))))))
+    (native-inputs
+     (list pkg-config
+           wayland-protocols
+           which))
+    (inputs
+     (list alsa-lib
+           dbus
+           eudev
+           ffmpeg
+           flac
+           fontconfig
+           freetype
+           glslang
+           libxinerama
+           libxkbcommon
+           libxml2
+           libxrandr
+           libxv
+           mbedtls-lts
+           mesa
+           openal
+           openssl
+           pulseaudio
+           python
+           qtbase-5
+           sdl2
+           spirv-cross
+           spirv-headers
+           spirv-tools
+           v4l-utils
+           vulkan-loader
+           wayland
+           zlib))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "LIBRETRO_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("lib/libretro")))
+           (search-path-specification
+            (variable "LIBRETRO_ASSETS_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/assets")))
+           (search-path-specification
+            (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/autoconfig")))
+           (search-path-specification
+            (variable "LIBRETRO_DATABASE_DIRECTORY")
+            (separator #f)              ;single entry
             (files '("share/libretro/database/rdb")))
-             (search-path-specification
-              (variable "LIBRETRO_SYSTEM_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/system")))
-             (search-path-specification
-              (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/filters/video")))
-             (search-path-specification
-              (variable "LIBRETRO_VIDEO_SHADER_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/shaders")))))
-      (home-page "https://www.libretro.com/")
-      (synopsis "Reference frontend for the libretro API")
-      (description
-       "Libretro is a simple but powerful development interface that allows for
+           (search-path-specification
+            (variable "LIBRETRO_SYSTEM_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/system")))
+           (search-path-specification
+            (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/filters/video")))
+           (search-path-specification
+            (variable "LIBRETRO_VIDEO_SHADER_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/shaders")))))
+    (home-page "https://www.libretro.com/")
+    (synopsis "Reference frontend for the libretro API")
+    (description
+     "Libretro is a simple but powerful development interface that allows for
 the easy creation of emulators, games and multimedia applications that can plug
 straight into any libretro-compatible frontend.  RetroArch is the official
 reference frontend for the libretro API, currently used by most as a modular
 multi-system game/emulator system.")
-      (license (list license:gpl3+      ;for RetroArch itself
-                     license:asl2.0     ;SPIRV-Cross
-                     license:expat      ;yxml
-                     license:bsd-3))))) ;feragamemode
+    (license (list license:gpl3+        ;for RetroArch itself
+                   license:asl2.0       ;SPIRV-Cross
+                   license:expat        ;yxml
+                   license:bsd-3)))) ;feragamemode
 
 (define-public retroarch
   (package
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:04 GMT) Full text and rfc822 format available.

Message #50 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 07/10] gnu: retroarch-core-info: Update to 1.20.0.
Date: Sat, 18 Jan 2025 17:50:51 +0900
* gnu/packages/emulators.scm (retroarch-core-info): Update to 1.20.0.

Change-Id: I85eec43eedf24df44b5d486a2410652ad87536db
---
 gnu/packages/emulators.scm | 43 ++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 23 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 0cfce8a924..bcc078aa8b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1779,31 +1779,28 @@ (define-public retroarch-assets
     (license license:cc-by4.0)))
 
 (define-public retroarch-core-info
-  ;; Use the latest commit, to get recent additions such as bsnes-jg.
-  (let ((commit "c0e7b76d02504754de67a1318f93089f1e29f15f")
-        (revision "0"))
-    (package
-      (name "retroarch-core-info")
-      (version (git-version "1.19.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/libretro/libretro-core-info")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "11xpy3zhy2smp4a70fc0r1b76mvmjyabkaaipifsxm3j25drki5z"))))
-      (build-system copy-build-system)
-      (arguments
-       (list #:install-plan #~'(("." "lib/libretro/"
-                                 #:include-regexp ("\\.info$")))))
-      (home-page "https://github.com/libretro/libretro-core-info")
-      (synopsis "Libretro core info files")
-      (description "This is a versioned snapshot of the files containing
+  (package
+    (name "retroarch-core-info")
+    (version "1.20.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libretro/libretro-core-info")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rfvp0lkv99jgpfyb9pp6vrh1i1974p3lckh93y1bibdizyxmwjg"))))
+    (build-system copy-build-system)
+    (arguments
+     (list #:install-plan #~'(("." "lib/libretro/"
+                               #:include-regexp ("\\.info$")))))
+    (home-page "https://github.com/libretro/libretro-core-info")
+    (synopsis "Libretro core info files")
+    (description "This is a versioned snapshot of the files containing
 metadata about each known libretro core.  The snapshot is taken from the
 @url{https://github.com/libretro/libretro-super, libretro-super} repository.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public retroarch-joypad-autoconfig
   (package
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:05 GMT) Full text and rfc822 format available.

Message #53 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 08/10] gnu: retroarch-core-info: Rename to
 libretro-core-info.
Date: Sat, 18 Jan 2025 17:50:52 +0900
This is to match the upstream name.

* gnu/packages/emulators.scm (retroarch-core-info): Rename to...
(libretro-core-info): ... this, and mark the previous name as deprecated.
(retroarch): Adjust accordingly.

Change-Id: I634f4b2ecc6d798b8a5386d9449fd32945453844
---
 gnu/packages/emulators.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index bcc078aa8b..d0c52ce2b6 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1778,9 +1778,9 @@ (define-public retroarch-assets
 generate the various User Experience (UX) environments.")
     (license license:cc-by4.0)))
 
-(define-public retroarch-core-info
+(define-public libretro-core-info
   (package
-    (name "retroarch-core-info")
+    (name "libretro-core-info")
     (version "1.20.0")
     (source (origin
               (method git-fetch)
@@ -1802,6 +1802,9 @@ (define-public retroarch-core-info
 @url{https://github.com/libretro/libretro-super, libretro-super} repository.")
     (license license:expat)))
 
+(define-public retroarch-core-info
+  (deprecated-package "retroarch-core-info" libretro-core-info))
+
 (define-public retroarch-joypad-autoconfig
   (package
     (name "retroarch-joypad-autoconfig")
@@ -2721,7 +2724,7 @@ (define-public retroarch
            ;; which is problematic.  The environment variables overrides the
            ;; configuration file values.
            retroarch-assets
-           retroarch-core-info
+           libretro-core-info
            retroarch-joypad-autoconfig))))
 
 (define-public wasm4
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:06 GMT) Full text and rfc822 format available.

Message #56 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 09/10] gnu: Add libretro-database.
Date: Sat, 18 Jan 2025 17:50:53 +0900
* gnu/packages/emulators.scm (libretro-database): New variable.

Change-Id: I97b10abf9b2984cf2a622517b3c794474e98a3d0
---
 gnu/packages/emulators.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index d0c52ce2b6..898eb1c587 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1805,6 +1805,44 @@ (define-public libretro-core-info
 (define-public retroarch-core-info
   (deprecated-package "retroarch-core-info" libretro-core-info))
 
+(define-public libretro-database
+  (package
+    (name "libretro-database")
+    (version "1.20.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libretro/libretro-database")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "086a9grpd1irsdns2zx3hlna72bbrmsfra4r498wi4ia9zf8nb0p"))))
+    (build-system gnu-build-system)
+    (arguments (list #:tests? #f
+                     #:make-flags #~(list (string-append "PREFIX=" #$output))))
+    (home-page "https://github.com/libretro/libretro-database/")
+    (synopsis "Cheat codes and content data files for RetroArch")
+    (description "RetroArch incorporates a ROM scanning system to
+automatically produce playlists.  Each ROM that is scanned by the playlist
+generator is checked against a database of ROMs that are known to be good
+copies.  The various directories contain:
+@table @code
+@item cht
+Cheat codes for various games
+@item cursors
+Methods for querying the playlists
+@item dat
+Customized DAT files, maintained by the libretro team
+@item metadat
+Different metadata and third-party DATs available to the system
+@item rdb
+The compiled RetroArch database files
+@item scripts
+Various scripts that are used to maintain the database files.
+@end table")
+    (license license:cc-by-sa4.0)))
+
 (define-public retroarch-joypad-autoconfig
   (package
     (name "retroarch-joypad-autoconfig")
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 18 Jan 2025 08:52:06 GMT) Full text and rfc822 format available.

Message #59 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v2 10/10] gnu: retroarch: Propagate libretro-database.
Date: Sat, 18 Jan 2025 17:50:54 +0900
Otherwise, the search functionality of RetroArch would not work out of the
box.

* gnu/packages/emulators.scm (retroarch) [propagated-inputs]: Add
libretro-database.

Change-Id: I63edad8d3e886a2be2a2f4f48f59fb5cbbf239f8
---
 gnu/packages/emulators.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 898eb1c587..210800363a 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -2763,6 +2763,7 @@ (define-public retroarch
            ;; configuration file values.
            retroarch-assets
            libretro-core-info
+           libretro-database
            retroarch-joypad-autoconfig))))
 
 (define-public wasm4
-- 
2.47.1





Information forwarded to guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sun, 19 Jan 2025 03:50:01 GMT) Full text and rfc822 format available.

Message #62 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: 宋文武 <iyzsong <at> envs.net>,
 Adam Faiz <adam.faiz <at> disroot.org>, 75619 <at> debbugs.gnu.org
Subject: Re: [bug#75619] [PATCH 3/7] gnu: dolphin-emu: Build .bin binary
 files and preserve data ones.
Date: Sun, 19 Jan 2025 12:49:29 +0900
Hi Liliana,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:

> Am Freitag, dem 17.01.2025 um 13:45 +0900 schrieb Maxim Cournoyer:
>> These files are necessary to save games, enable cheat codes, etc.
>> 
>> * gnu/packages/emulators.scm (dolphin-emu) [source] <snippet>: Refine
>> to avoid deleting a few .bin which are not executable objects but
>> rather configuration files samples.
>> [phases]: Add build-codeloader.bin, build-dsp_rom.bin and build-
>> dsp_coefs.bin phases.
>> [arguments] <configure-flags>: Add -DDSPTOOL=ON.
>> [native-inputs]: Add a cross-compiler for powerpc.  Add python-
>> minimal and python-numpy.
>> 
>> Change-Id: Ida8df1add940e1708c557223409d854aa995e8a5
>> ---
> Is there a way to rebuild those data files?  If not, then LGTM, I
> guess.

I looked, but it doesn't seem like there are scripts or anything to
regenerated those.  They are mostly filled with zeros, were probably
hacked with an hex editor, or so I assume.

I'll wait for the whole series to be reviewed before merging, thanks
looking at this one!

-- 
Thanks,
Maxim




Information forwarded to gabriel <at> erlikon.ch, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:04 GMT) Full text and rfc822 format available.

Message #65 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 01/11] gnu: Add soundtouch-1/integer-samples.
Date: Thu, 23 Jan 2025 21:21:37 +0900
* gnu/packages/audio.scm (soundtouch-1/integer-samples): New variable.

Change-Id: Iea6e1313f2c7189ded9abf100f07ed530793f9f0
---

(no changes since v1)

 gnu/packages/audio.scm | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 76b16bc0fd..41d3d0bf47 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016–2023 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2018, 2020, 2024 Oleg Pykhalov <go.wigust <at> gmail.com>
 ;;; Copyright © 2018 okapi <okapi <at> firemail.cc>
-;;; Copyright © 2018, 2020, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
+;;; Copyright © 2018, 2020, 2022-2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 ;;; Copyright © 2018 Clément Lassieur <clement <at> lassieur.org>
 ;;; Copyright © 2018 Brett Gilio <brettg <at> gnu.org>
 ;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius <at> gnu.org>
@@ -4409,6 +4409,30 @@ (define-public soundtouch
 control functionality, or just for playing around with the sound effects.")
     (license license:lgpl2.1+)))
 
+(define-public soundtouch-1/integer-samples
+  (package
+    (inherit soundtouch)
+    (name "soundtouch")
+    (version "1.9.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/soundtouch/soundtouch.git")
+             (commit (string-append name "-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ir961w5gz86cm6yivr1ypi6n2y52vn319gy2gvdkkbbz5wyjkrq"))))
+    (arguments
+     ;; Dolphin expects the samples to be of the integer type.
+     (list #:configure-flags #~(list "--enable-integer-samples")
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'bootstrap
+                          (lambda _
+                            ;; Avoid the bootstrap script, which has a broken
+                            ;; shebang.
+                            (invoke "autoreconf" "-vif"))))))))
+
 (define-public stargate-soundtouch
   ;; Stargate's fork of soundtouch.
   (let ((commit "464f474c0be5d7e0970909dd30593012e4621468")

base-commit: 4241a5a4688e8a118b2f66423abd3ef8baae98fc
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:05 GMT) Full text and rfc822 format available.

Message #68 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 02/11] gnu: dolphin-emu: Unbundle more libraries and enable
 tests.
Date: Thu, 23 Jan 2025 21:21:38 +0900
* gnu/packages/emulators.scm (dolphin-emu)
[source] <snippet>: Delete bzip2, cubeb, enet, fmt, pugixml, soundtouch,
xxhash and zstd sources and de-register enet, soundtouch and xxhash from the
build system.
[arguments] <#:tests?>: Delete argument.
<#:phases>: Add remove-unittests-target-post-build-command and post-check
phases.
<#:configure-flags>: Specify CMAKE_CXX_FLAGS to locate soundtouch headers.
<#:test-target>: New argument.
[inputs]: Add bzip2, cubeb, enet, fmt-7, minizip-ng, xxhash and
zstd:lib.  Replace soundtouch with soundtouch-1/integer-samples.

Change-Id: Id996d992674f9efbbb2eb562286447a388716a82
---

(no changes since v1)

 gnu/packages/emulators.scm | 142 ++++++++++++++++++++++++++-----------
 1 file changed, 100 insertions(+), 42 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 1331fa1716..90c3845243 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2020 Christopher Howard <christopher <at> librehacker.com>
 ;;; Copyright © 2021 Felipe Balbi <balbi <at> kernel.org>
 ;;; Copyright © 2021, 2024 Felix Gruber <felgru <at> posteo.net>
-;;; Copyright © 2021, 2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
+;;; Copyright © 2021, 2024, 2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;; Copyright © 2023 c4droid <c4droid <at> foxmail.com>
 ;;; Copyright © 2023 Yovan Naumovski <yovan <at> gorski.stream>
@@ -95,6 +95,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
@@ -295,58 +296,112 @@ (define-public dolphin-emu
              ;; Remove external stuff we don't need.
              (for-each (lambda (dir)
                          (delete-file-recursively
-                           (string-append "Externals/" dir)))
-                       '("LZO" "OpenAL" "Qt" "SFML" "curl" "ffmpeg"
-                         "gettext" "hidapi" "libpng" "libusb" "mbedtls"
-                         "miniupnpc" "MoltenVK" "zlib"))
+                          (string-append "Externals/" dir)))
+                       '("LZO" "OpenAL" "Qt" "SFML" "bzip2"
+                         ;; 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"
+                         ;; XXX: Attempting to use an unbundled glslang at the
+                         ;; exact commit used by Dolphin still results in
+                         ;; "error: ‘DefaultTBuiltInResource’ is not a member
+                         ;; of ‘glslang’".
+                         ;;"glslang"
+                         ;; XXX: Googletest cannot currently easily be
+                         ;; unbundled, as there are missing linking
+                         ;; directives.
+                         ;;"gtest"
+                         "hidapi" "libpng" "libusb" "mbedtls"
+                         "miniupnpc" "minizip" "MoltenVK" "pugixml"
+                         "soundtouch"
+                         "xxhash" "zlib" "zstd"))
              ;; Clean up source.
              (for-each delete-file
-                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))))))
+                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
+             ;; Do not attempt to include now-missing directories.
+             (substitute* "CMakeLists.txt"
+               ((".*add_subdirectory.*Externals/enet.*") "")
+               ((".*add_subdirectory.*Externals/soundtouch.*") "")
+               ((".*add_subdirectory.*Externals/xxhash.*") ""))))))
       (build-system cmake-build-system)
       (arguments
-       '(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((fontfile
-                      (search-input-file inputs
-                                         "/share/fonts/truetype/wqy-microhei.ttc"))
-                     (libvulkan
-                      (search-input-file inputs "/lib/libvulkan.so")))
-                 (chdir "docs")
-                 (invoke "bash" "-c" "g++ -O2 $(freetype-config \
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'configure 'remove-unittests-target-post-build-command
+              (lambda _
+                ;; To skip a few problematic tests, CTest will be manually
+                ;; invoked in the post-check phase.
+                (with-directory-excursion "Source/UnitTests"
+                  (substitute* "CMakeLists.txt"
+                    (("add_custom_command\\(TARGET unittests POST_BUILD.*")
+                     "")))))
+            (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
+              (lambda* (#:key inputs #:allow-other-keys)
+                (let ((fontfile
+                       (search-input-file inputs
+                                          "/share/fonts/truetype/wqy-microhei.ttc"))
+                      (libvulkan
+                       (search-input-file inputs "/lib/libvulkan.so")))
+                  (chdir "docs")
+                  (invoke "bash" "-c" "g++ -O2 $(freetype-config \
 --cflags --libs) gc-font-tool.cpp -o gc-font-tool")
-                 (invoke "./gc-font-tool" "a" fontfile "font_western.bin")
-                 (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
-                 (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
-                 (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
-                 (chdir "..")
-                 (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
-                   (("\"vulkan\", 1") (string-append "\"vulkan\""))
-                   (("\"vulkan\"") (string-append "\"" libvulkan "\""))
-                   (("Common::DynamicLibrary::GetVersionedFilename") ""))))))
-
-         ;; The FindGTK2 cmake script only checks hardcoded directories for
-         ;; glib/gtk headers.
-
-         #:configure-flags
-         (list (string-append "-DX11_INCLUDE_DIR="
-                              (assoc-ref %build-inputs "libx11")
-                              "/include")
-               (string-append "-DX11_LIBRARIES="
-                              (assoc-ref %build-inputs "libx11")
-                              "/lib/libX11.so")
-               "-DX11_FOUND=1")))
+                  (invoke "./gc-font-tool" "a" fontfile "font_western.bin")
+                  (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
+                  (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
+                  (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
+                  (chdir "..")
+                  (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
+                    (("\"vulkan\", 1") (string-append "\"vulkan\""))
+                    (("\"vulkan\"") (string-append "\"" libvulkan "\""))
+                    (("Common::DynamicLibrary::GetVersionedFilename") "")))))
+            (add-after 'check 'post-check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (with-directory-excursion "Source/UnitTests"
+                    (invoke "ctest" "-V" "--output-on-failure"
+                            ;; These tests fail due to libusb failing to
+                            ;; init inside the build container.
+                            "-E" (string-join
+                                  '("MMIOTest"
+                                    "PageFaultTest"
+                                    "CoreTimingTest"
+                                    "FileSystemTest"
+                                    "PowerPCTest"
+                                    "VertexLoaderTest")
+                                  "|")))))))
+        ;; The FindGTK2 cmake script only checks hardcoded directories for
+        ;; glib/gtk headers.  Also add some include directories via the CXX
+        ;; flags to let GCC find some headers not actively searched by the
+        ;; build system.
+        #:configure-flags
+        #~(list (string-append "-DCMAKE_CXX_FLAGS="
+                               "-I" (search-input-directory
+                                     %build-inputs "include/soundtouch"))
+                (string-append "-DX11_INCLUDE_DIR="
+                               #$(this-package-input "libx11")
+                               "/include")
+                (string-append "-DX11_LIBRARIES="
+                               (search-input-file %build-inputs
+                                                  "lib/libX11.so"))
+                "-DX11_FOUND=1")
+        #:test-target "unittests"))
       (native-inputs
        (list gettext-minimal pkg-config))
       (inputs
        (list alsa-lib
              ao
              bluez
+             bzip2
+             cubeb
              curl
+             enet
              eudev
              ffmpeg-4
+             fmt-7
              font-wqy-microhei
              freetype
              glew
@@ -364,6 +419,7 @@ (define-public dolphin-emu
              mbedtls-lts
              mesa
              miniupnpc
+             minizip-ng
              openal
              pugixml
              pulseaudio
@@ -371,9 +427,11 @@ (define-public dolphin-emu
              sdl2
              sfml
              soil
-             soundtouch
+             soundtouch-1/integer-samples
              vulkan-loader
-             zlib))
+             xxhash
+             zlib
+             `(,zstd "lib")))
       (home-page "https://dolphin-emu.org/")
       (synopsis "Nintendo Wii and GameCube emulator")
       (description
@@ -381,7 +439,7 @@ (define-public dolphin-emu
 GameCube and the Wii.  It provides compatibility with all PC controllers,
 turbo speed, networked multiplayer, and graphical enhancements.")
       (supported-systems '("x86_64-linux" "aarch64-linux"))
-      ; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
+      ;; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
       (license (list license:gpl2+ license:asl2.0 license:fdl1.2+)))))
 
 (define-public dosbox
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:05 GMT) Full text and rfc822 format available.

Message #71 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 03/11] gnu: dolphin-emu: Build .bin binary files and
 preserve data ones.
Date: Thu, 23 Jan 2025 21:21:39 +0900
These files are necessary to save games, enable cheat codes, etc.

* gnu/packages/emulators.scm (dolphin-emu) [source] <snippet>: Refine to avoid
deleting a few .bin which are not executable objects but rather configuration
files samples.
[phases]: Add build-codeloader.bin, build-dsp_rom.bin and build-dsp_coefs.bin
phases.
[arguments] <configure-flags>: Add -DDSPTOOL=ON.
[native-inputs]: Add a cross-compiler for powerpc.  Add python-minimal and
python-numpy.

Change-Id: Ida8df1add940e1708c557223409d854aa995e8a5
---

(no changes since v1)

 gnu/packages/emulators.scm | 50 ++++++++++++++++++++++++++++++++++----
 1 file changed, 45 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 90c3845243..49a1b12713 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -99,6 +99,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sphinx)
@@ -290,7 +291,8 @@ (define-public dolphin-emu
          (file-name (git-file-name name version))
          (sha256
           (base32 "1p8qsxlabgmz3nic0a9ghh9d3lzl5f8i3kmdrrvx6w8kdlp33018"))
-         (modules '((guix build utils)))
+         (modules '((guix build utils)
+                    (ice-9 regex)))
          (snippet
           '(begin
              ;; Remove external stuff we don't need.
@@ -318,9 +320,19 @@ (define-public dolphin-emu
                          "miniupnpc" "minizip" "MoltenVK" "pugixml"
                          "soundtouch"
                          "xxhash" "zlib" "zstd"))
-             ;; Clean up source.
+             ;; Clean up the source.
              (for-each delete-file
-                       (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
+                       (find-files
+                        "."
+                        (lambda (file _)
+                          (and (string-match "\\.(bin|dsy|exe|jar|rar)$" file)
+                               ;; Preserve the important wc24 .bin
+                               ;; configuration *data* files.
+                               (not (member (basename file)
+                                            '("misc.bin"
+                                              "nwc24dl.bin"
+                                              "nwc24fl.bin"
+                                              "nwc24fls.bin")))))))
              ;; Do not attempt to include now-missing directories.
              (substitute* "CMakeLists.txt"
                ((".*add_subdirectory.*Externals/enet.*") "")
@@ -372,7 +384,30 @@ (define-public dolphin-emu
                                     "FileSystemTest"
                                     "PowerPCTest"
                                     "VertexLoaderTest")
-                                  "|")))))))
+                                  "|"))))))
+            (add-before 'install 'build-codeloader.bin
+              (lambda _
+                (with-directory-excursion "../source/docs"
+                  ;; The following command-line is adapted from the example in
+                  ;; codehandler.s.
+                  (invoke "powerpc-linux-gnu-gcc" "-mpowerpc" "-mbig"
+                          "codehandler.s" "-nostartfiles" "-nodefaultlibs"
+                          "-nostdlib" "-T" "codehandler.ld"
+                          "-o" "codehandler.bin")
+                  (copy-file "codehandler.bin" "../Data/Sys/codehandler.bin"))))
+            (add-before 'install 'build-dsp_rom.bin
+              (lambda _
+                ;; Ensure dsptool is on PATH.
+                (setenv "PATH" (string-append (getenv "PATH") ":"
+                                              (getcwd) "/Binaries"))
+                (with-directory-excursion "../source"
+                  (invoke "dsptool" "-o" "Data/Sys/GC/dsp_rom.bin"
+                          "docs/DSP/free_dsp_rom/dsp_rom.ds"))))
+            (add-before 'install 'build-dsp_coefs.bin
+              (lambda _
+                (with-directory-excursion "../source"
+                  (invoke "python3" "docs/DSP/free_dsp_rom/generate_coefs.py")
+                  (rename-file "dsp_coef.bin" "Data/Sys/GC/dsp_coef.bin")))))
         ;; The FindGTK2 cmake script only checks hardcoded directories for
         ;; glib/gtk headers.  Also add some include directories via the CXX
         ;; flags to let GCC find some headers not actively searched by the
@@ -381,6 +416,7 @@ (define-public dolphin-emu
         #~(list (string-append "-DCMAKE_CXX_FLAGS="
                                "-I" (search-input-directory
                                      %build-inputs "include/soundtouch"))
+                "-DDSPTOOL=ON"
                 (string-append "-DX11_INCLUDE_DIR="
                                #$(this-package-input "libx11")
                                "/include")
@@ -390,7 +426,11 @@ (define-public dolphin-emu
                 "-DX11_FOUND=1")
         #:test-target "unittests"))
       (native-inputs
-       (list gettext-minimal pkg-config))
+       (list (cross-gcc "powerpc-linux-gnu")
+             gettext-minimal
+             pkg-config
+             python-minimal
+             python-numpy))
       (inputs
        (list alsa-lib
              ao
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:06 GMT) Full text and rfc822 format available.

Message #74 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 04/11] gnu: retroarch-minimal: Add new search paths.
Date: Thu, 23 Jan 2025 21:21:40 +0900
This makes it possible to locate system files provided by libretro cores, as
well as database and cheat files.

* gnu/packages/patches/retroarch-improved-search-paths.patch: Extend patch.
* gnu/packages/emulators.scm (retroarch-minimal) [native-search-paths]:
Register new search paths for the LIBRETRO_CHEATS_DIRECTORY,
LIBRETRO_DATABASE_DIRECTORY and LIBRETRO_SYSTEM_DIRECTORY variables.

Change-Id: I48f9a92608c0e36922ce9dcc9bbb61d6ca915002
---

(no changes since v1)

 gnu/packages/emulators.scm                    |  12 +
 .../retroarch-improved-search-paths.patch     | 210 ++++++++++++++----
 2 files changed, 181 insertions(+), 41 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 49a1b12713..46a7ee3707 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -2633,6 +2633,18 @@ (define-public retroarch-minimal
               (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
               (separator #f)            ;single entry
               (files '("share/libretro/autoconfig")))
+             (search-path-specification
+              (variable "LIBRETRO_CHEATS_DIRECTORY")
+              (separator #f)            ;single entry
+              (files '("share/libretro/database/cht")))
+             (search-path-specification
+              (variable "LIBRETRO_DATABASE_DIRECTORY")
+              (separator #f)            ;single entry
+              (files '("share/libretro/database/rdb")))
+             (search-path-specification
+              (variable "LIBRETRO_SYSTEM_DIRECTORY")
+              (separator #f)            ;single entry
+              (files '("share/libretro/system")))
              (search-path-specification
               (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
               (separator #f)            ;single entry
diff --git a/gnu/packages/patches/retroarch-improved-search-paths.patch b/gnu/packages/patches/retroarch-improved-search-paths.patch
index 6fcd4745ac..ae815bfbb1 100644
--- a/gnu/packages/patches/retroarch-improved-search-paths.patch
+++ b/gnu/packages/patches/retroarch-improved-search-paths.patch
@@ -1,38 +1,27 @@
-Allows discovery of assets file via the LIBRETRO_ASSETS_DIRECTORY environment
-variable.
+Add support for various environment variables, used in search paths.
 
-Upstream-status: https://github.com/libretro/RetroArch/pull/17054
+Upstream status: https://github.com/libretro/RetroArch/pull/17440
 
 diff --git a/configuration.c b/configuration.c
-index 5808a3f21c..0cc2909102 100644
+index 7eb6c08e1e..0449e77ac2 100644
 --- a/configuration.c
 +++ b/configuration.c
-@@ -3573,6 +3573,11 @@ static bool config_load_file(global_t *global,
+@@ -3568,6 +3568,14 @@ static bool config_load_file(global_t *global,
  {
     unsigned i;
     char tmp_str[PATH_MAX_LENGTH];
 +   char* libretro_directory                        = NULL;
 +   char* libretro_assets_directory                 = NULL;
 +   char* libretro_autoconfig_directory             = NULL;
++   char* libretro_cheats_directory                 = NULL;
++   char* libretro_database_directory               = NULL;
++   char* libretro_system_directory                 = NULL;
 +   char* libretro_video_filter_directory           = NULL;
 +   char* libretro_video_shader_directory           = NULL;
     static bool first_load                          = true;
     bool without_overrides                          = false;
     unsigned msg_color                              = 0;
-@@ -3848,12 +3853,6 @@ static bool config_load_file(global_t *global,
-          strlcpy(path_settings[i].ptr, tmp_str, PATH_MAX_LENGTH);
-    }
- 
--#if !IOS
--   if (config_get_path(conf, "libretro_directory", tmp_str, sizeof(tmp_str)))
--      configuration_set_string(settings,
--            settings->paths.directory_libretro, tmp_str);
--#endif
--
- #ifdef RARCH_CONSOLE
-    if (conf)
-       video_driver_load_settings(global, conf);
-@@ -3861,6 +3860,20 @@ static bool config_load_file(global_t *global,
+@@ -3862,6 +3870,38 @@ static bool config_load_file(global_t *global,
  
     /* Post-settings load */
  
@@ -45,15 +34,33 @@ index 5808a3f21c..0cc2909102 100644
 +   }
 +
 +   libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
-+   if (libretro_autoconfig_directory)
++   if (libretro_autoconfig_directory) /* override configuration value */
 +       configuration_set_string(settings,
 +				settings->paths.directory_autoconfig,
 +				libretro_autoconfig_directory);
++
++   libretro_cheats_directory = getenv("LIBRETRO_CHEATS_DIRECTORY");
++   if (libretro_cheats_directory) /* override configuration value */
++       configuration_set_string(settings,
++				settings->paths.path_cheat_database,
++				libretro_cheats_directory);
++
++   libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
++   if (libretro_database_directory) /* override configuration value */
++       configuration_set_string(settings,
++				settings->paths.path_content_database,
++				libretro_database_directory);
++
++   libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
++   if (libretro_system_directory) /* override configuration value */
++       configuration_set_string(settings,
++				settings->paths.directory_system,
++				libretro_system_directory);
 +
     if (     (rarch_flags & RARCH_FLAGS_HAS_SET_USERNAME)
           && (override_username))
     {
-@@ -4032,15 +4045,27 @@ static bool config_load_file(global_t *global,
+@@ -4026,15 +4066,27 @@ static bool config_load_file(global_t *global,
        *settings->paths.path_menu_wallpaper = '\0';
     if (string_is_equal(settings->paths.path_rgui_theme_preset, "default"))
        *settings->paths.path_rgui_theme_preset = '\0';
@@ -85,18 +92,18 @@ index 5808a3f21c..0cc2909102 100644
  #ifdef _3DS
     if (string_is_equal(settings->paths.directory_bottom_assets, "default"))
 diff --git a/docs/retroarch.6 b/docs/retroarch.6
-index 7478040e17..f864e0e0d5 100644
+index 7478040e17..d38a8ee565 100644
 --- a/docs/retroarch.6
 +++ b/docs/retroarch.6
 @@ -1,6 +1,6 @@
  .\" retroarch.6:
  
 -.TH  "RETROARCH" "6" "November 1, 2011" "RETROARCH" "System Manager's Manual: retroarch"
-+.TH  "RETROARCH" "6" "September 28, 2024" "RETROARCH" "System Manager's Manual: retroarch"
++.TH  "RETROARCH" "6" "January 20, 2025" "RETROARCH" "System Manager's Manual: retroarch"
  
  .SH NAME
  
-@@ -239,3 +239,36 @@ Disables all kinds of content patching.
+@@ -239,3 +239,54 @@ Disables all kinds of content patching.
  .TP
  \fB-D, --detach\fR
  Detach from the current console. This is currently only relevant for Microsoft Windows.
@@ -123,6 +130,24 @@ index 7478040e17..f864e0e0d5 100644
 +"joypad_autoconfig_dir" configuration file option.
 +
 +.TP
++\fBLIBRETRO_CHEATS_DIRECTORY\fR
++Specify the directory where RetroArch looks for cheat files,
++overriding the value of the "cheat_database_path" configuration file
++option.
++
++.TP
++\fBLIBRETRO_DATABASE_DIRECTORY\fR
++Specify the directory where RetroArch looks for database files,
++overriding the value of the "content_database_path" configuration file
++option.
++
++.TP
++\fBLIBRETRO_SYSTEM_DIRECTORY\fR
++Specify the directory where RetroArch looks for system files,
++overriding the value of the "system_directory" configuration file
++option.
++
++.TP
 +\fBLIBRETRO_VIDEO_FILTER_DIRECTORY\fR
 +Specify the directory where RetroArch looks for video filters,
 +overriding the value of the "video_filter_dir" configuration file
@@ -134,21 +159,24 @@ index 7478040e17..f864e0e0d5 100644
 +overriding the value of the "video_shader_dir" configuration file
 +option.
 diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c
-index c157d355a1..ddf0b5ca87 100644
+index 778f54eeda..cce011c875 100644
 --- a/frontend/drivers/platform_unix.c
 +++ b/frontend/drivers/platform_unix.c
-@@ -1324,6 +1324,10 @@ static void frontend_unix_get_env(int *argc,
+@@ -1323,6 +1323,13 @@ static void frontend_unix_get_env(int *argc,
  {
     unsigned i;
     const char* libretro_directory = getenv("LIBRETRO_DIRECTORY");
 +   const char* libretro_assets_directory = getenv("LIBRETRO_ASSETS_DIRECTORY");
 +   const char* libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
++   const char* libretro_cheats_directory = getenv("LIBRETRO_CHEATS_DIRECTORY");
++   const char* libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
++   const char* libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
 +   const char* libretro_video_filter_directory = getenv("LIBRETRO_VIDEO_FILTER_DIRECTORY");
 +   const char* libretro_video_shader_directory = getenv("LIBRETRO_VIDEO_SHADER_DIRECTORY");
  #ifdef ANDROID
     int32_t major, minor, rel;
     char device_model[PROP_VALUE_MAX]  = {0};
-@@ -1765,12 +1769,20 @@ static void frontend_unix_get_env(int *argc,
+@@ -1764,12 +1771,20 @@ static void frontend_unix_get_env(int *argc,
              "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
     else
  #endif
@@ -174,7 +202,7 @@ index c157d355a1..ddf0b5ca87 100644
  #ifdef ASSETS_DIR
     if (path_is_directory(ASSETS_DIR "/assets"))
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS],
-@@ -1778,7 +1790,10 @@ static void frontend_unix_get_env(int *argc,
+@@ -1777,7 +1792,10 @@ static void frontend_unix_get_env(int *argc,
              "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
     else
  #endif
@@ -186,7 +214,7 @@ index c157d355a1..ddf0b5ca87 100644
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS],
              "/usr/local/share/retroarch",
              "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
-@@ -1838,7 +1853,11 @@ static void frontend_unix_get_env(int *argc,
+@@ -1837,7 +1855,11 @@ static void frontend_unix_get_env(int *argc,
              "filters/video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
     else
  #endif
@@ -199,12 +227,23 @@ index c157d355a1..ddf0b5ca87 100644
        fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER],
              "/usr/local/share/retroarch",
              "filters/video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
-@@ -1872,8 +1891,13 @@ static void frontend_unix_get_env(int *argc,
+@@ -1869,12 +1891,27 @@ static void frontend_unix_get_env(int *argc,
+          "records_config", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG]));
+    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT], base_path,
           "records", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT]));
-    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_DATABASE], base_path,
-          "database/rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
+-   fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_DATABASE], base_path,
+-         "database/rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
 -   fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SHADER], base_path,
 -         "shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER]));
+-   fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], base_path,
+-         "cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
++   if (!string_is_empty(libretro_database_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_DATABASE],
++	       libretro_database_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
++   else
++       fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_DATABASE], base_path,
++             "database/rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
 +   if (!string_is_empty(libretro_video_shader_directory))
 +       strlcpy(g_defaults.dirs[DEFAULT_DIR_SHADER],
 +	       libretro_video_shader_directory,
@@ -212,19 +251,45 @@ index c157d355a1..ddf0b5ca87 100644
 +   else
 +       fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SHADER], base_path,
 +             "shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER]));
-    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], base_path,
-          "cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
++   if (!string_is_empty(libretro_cheats_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_CHEATS],
++	       libretro_cheats_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
++   else
++       fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], base_path,
++             "cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
     fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_OVERLAY], base_path,
+          "overlays", sizeof(g_defaults.dirs[DEFAULT_DIR_OVERLAY]));
+    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_OSK_OVERLAY], base_path,
+@@ -1891,8 +1928,13 @@ static void frontend_unix_get_env(int *argc,
+          "saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
+    fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SAVESTATE], base_path,
+          "states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
+-   fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SYSTEM], base_path,
+-         "system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   if (!string_is_empty(libretro_system_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++	       libretro_system_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   else
++       fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SYSTEM], base_path,
++             "system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
+ #endif
+ 
+ #ifndef IS_SALAMANDER
 diff --git a/frontend/drivers/platform_win32.c b/frontend/drivers/platform_win32.c
-index 26ed25c04f..0cc9a9dc95 100644
+index adb27b425c..f12fb8717e 100644
 --- a/frontend/drivers/platform_win32.c
 +++ b/frontend/drivers/platform_win32.c
-@@ -565,24 +565,38 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+@@ -566,24 +566,51 @@ static void frontend_win32_env_get(int *argc, char *argv[],
  {
     const char *tmp_dir = getenv("TMP");
     const char *libretro_directory = getenv("LIBRETRO_DIRECTORY");
 +   const char *libretro_assets_directory = getenv("LIBRETRO_ASSETS_DIRECTORY");
 +   const char* libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
++   const char* libretro_cheats_directory = getenv("LIBRETRO_CHEATS_DIRECTORY");
++   const char* libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
++   const char* libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
 +   const char* libretro_video_filter_directory = getenv("LIBRETRO_VIDEO_FILTER_DIRECTORY");
 +   const char* libretro_video_shader_directory = getenv("LIBRETRO_VIDEO_SHADER_DIRECTORY");
     if (!string_is_empty(tmp_dir))
@@ -246,6 +311,10 @@ index 26ed25c04f..0cc9a9dc95 100644
        ":\\filters\\audio", sizeof(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER]));
 -   fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER],
 -      ":\\filters\\video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
+-   fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS],
+-      ":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
+-   fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE],
+-      ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
 +   if (!string_is_empty(libretro_video_filter_directory))
 +       strlcpy(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER],
 +	       libretro_video_filter_directory,
@@ -253,17 +322,27 @@ index 26ed25c04f..0cc9a9dc95 100644
 +   else
 +       fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER],
 +           ":\\filters\\video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
-    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS],
-       ":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
-    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE],
-       ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
++   if (!string_is_empty(libretro_cheats_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_CHEATS],
++	       libretro_cheats_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
++   else
++       fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS],
++           ":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
++   if (!string_is_empty(libretro_database_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_DATABASE],
++	       libretro_database_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
++   else
++       fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE],
++           ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_PLAYLIST],
 -      ":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
 +      ":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_PLAYLIST]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG],
        ":\\config\\record", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT],
-@@ -605,12 +619,26 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+@@ -606,12 +633,26 @@ static void frontend_win32_env_get(int *argc, char *argv[],
     else
        fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE],
              ":\\cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
@@ -296,3 +375,52 @@ index 26ed25c04f..0cc9a9dc95 100644
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
        ":\\downloads", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
     fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT],
+@@ -620,8 +661,13 @@ static void frontend_win32_env_get(int *argc, char *argv[],
+       ":\\saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
+    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SAVESTATE],
+       ":\\states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
+-   fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
+-      ":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   if (!string_is_empty(libretro_system_directory))
++       strlcpy(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++	       libretro_system_directory,
++	       sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
++   else
++       fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
++             ":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
+    fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_LOGS],
+       ":\\logs", sizeof(g_defaults.dirs[DEFAULT_DIR_LOGS]));
+ 
+diff --git a/retroarch.c b/retroarch.c
+index a7e5f5299f..59d7879ec5 100644
+--- a/retroarch.c
++++ b/retroarch.c
+@@ -6516,7 +6516,28 @@ static void retroarch_print_help(const char *arg0)
+          "Path for the save state files (*.state). (DEPRECATED, use --appendconfig and savestate_directory)\n"
+          , sizeof(buf) - _len);
+ 
++   /* Flush buffer here to avoid the error "error: string length ‘752’
++    * is greater than the length ‘509’ ISO C90 compilers are required
++    * to support" */
+    fputs(buf, stdout);
++
++#if defined(__linux__) || defined(__GNU__) || (defined(BSD) && !defined(__MACH__))
++   buf[0] = '\0';
++   _len   = 0;
++   _len += strlcpy(buf + _len,
++         "\nThe following environment variables are supported:\n\n"
++         "  LIBRETRO_ASSETS_DIRECTORY\n"
++         "  LIBRETRO_AUTOCONFIG_DIRECTORY\n"
++         "  LIBRETRO_CHEATS_DIRECTORY\n"
++         "  LIBRETRO_DATABASE_DIRECTORY\n"
++         "  LIBRETRO_DIRECTORY\n"
++         "  LIBRETRO_SYSTEM_DIRECTORY\n"
++         "  LIBRETRO_VIDEO_FILTER_DIRECTORY\n"
++         "  LIBRETRO_VIDEO_SHADER_DIRECTORY\n\n"
++         "Refer to `man 6 retroarch' for a description of what they do.\n"
++         , sizeof(buf) - _len);
++   fputs(buf, stdout);
++#endif
+ }
+ 
+ #ifdef HAVE_DYNAMIC
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:06 GMT) Full text and rfc822 format available.

Message #77 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 05/11] gnu: Add libretro-dolphin-emu.
Date: Thu, 23 Jan 2025 21:21:41 +0900
* gnu/packages/emulators.scm (libretro-dolphin-emu): New variable.

Change-Id: Id05e1d17ff6927bb1492ce2816790f7d94f9e1b8
---

(no changes since v1)

 gnu/packages/emulators.scm | 51 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 46a7ee3707..aa03f0550c 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -482,6 +482,57 @@ (define-public dolphin-emu
       ;; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
       (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.
+  (let ((commit "89a4df725d4eb24537728f7d655cddb1add25c18")
+        (revision "0"))
+    (package
+      (inherit dolphin-emu)
+      (name "libretro-dolphin-emu")
+      (version (git-version "5.0" revision commit))
+      (source (origin
+                (inherit (package-source dolphin-emu))
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/libretro/dolphin")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1fvm6hy0ihc0j3sgv88a7ak08c0kyikmmiif827j981fy7zvglvz"))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments dolphin-emu)
+         ((#:configure-flags flags ''())
+          #~(cons "-DLIBRETRO=ON" #$flags))
+         ((#:phases phases '%standard-phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'deregister-bundled-sources
+                (lambda _
+                  (substitute* "CMakeLists.txt"
+                    ((".*add_subdirectory.*Externals/curl.*") "")
+                    ((".*add_subdirectory.*Externals/libpng.*") ""))))
+              (replace 'install
+                (lambda _
+                  (install-file "dolphin_libretro.so"
+                                (string-append #$output "/lib/libretro"))
+                  ;; The system data files are also required for the proper
+                  ;; functioning of dolphin; without them, it crashes with
+                  ;; segmentation faults and cannot save files to the memory
+                  ;; card.
+                  (let ((sysdir (string-append
+                                 #$output
+                                 "/share/libretro/system/dolphin-emu")))
+                    (mkdir-p sysdir)
+                    (copy-recursively "../source/Data/Sys"
+                                      (string-append sysdir "/Sys")))))))))
+      (inputs
+       ;; Delete large and extraneous inputs.
+       (modify-inputs (package-inputs dolphin-emu)
+         (delete "ffmpeg"
+                 "gtk+"
+                 "qtbase")))
+      (synopsis "Libretro port of Dolphin, the Nintendo Wii/GameCube emulator"))))
+
 (define-public dosbox
   (package
     (name "dosbox")
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:07 GMT) Full text and rfc822 format available.

Message #80 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 06/11] gnu: retroarch-minimal: Update to 1.20.0.
Date: Thu, 23 Jan 2025 21:21:42 +0900
* gnu/packages/emulators.scm (retroarch-minimal): Update to 1.20.0.

Change-Id: I3b4121d2520ee08a9d8454f2666ed30c140ced5b
---

(no changes since v1)

 gnu/packages/emulators.scm | 344 ++++++++++++++++++-------------------
 1 file changed, 171 insertions(+), 173 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index aa03f0550c..bb73d216a5 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -2537,185 +2537,183 @@ (define-public libretro-slang-shaders
                      license:unlicense)))))
 
 (define-public retroarch-minimal
-  (let ((commit "48b71d5cf8a070e785e2302d8fe241a7c2180fdd")
-        (revision "1"))
-    (package
-      (name "retroarch-minimal")
-      (version "1.19.1")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/libretro/RetroArch")
-               (commit commit)))
-         (snippet
-          #~(begin
-              (use-modules (guix build utils)
-                           (ice-9 ftw)
-                           (srfi srfi-26))
-              ;; XXX: 'delete-all-but' is copied from the turbovnc package.
-              (define (delete-all-but directory . preserve)
-                (define (directory? x)
-                  (and=> (stat x #f)
-                         (compose (cut eq? 'directory <>) stat:type)))
-                (with-directory-excursion directory
-                  (let* ((pred
-                          (negate (cut member <> (append '("." "..") preserve))))
-                         (items (scandir "." pred)))
-                    (for-each (lambda (item)
-                                (if (directory? item)
-                                    (delete-file-recursively item)
-                                    (delete-file item)))
-                              items))))
-              ;; Remove as much bundled sources as possible, shaving off about
-              ;; 65 MiB.
-              (delete-all-but "deps"
-                              "feralgamemode" ;used in platform_unix.c
-                              "mbedtls"       ;further refined below
-                              "yxml")         ;used in rxml.c
-              ;; This is an old root certificate used in net_socket_ssl_mbed.c,
-              ;; not actually from mbedtls.
-              (delete-all-but "deps/mbedtls" "cacert.h")))
-         (patches (search-patches "retroarch-improved-search-paths.patch"
-                                  "retroarch-unbundle-spirv-cross.patch"))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "13hgg4pxkpwlcmmyp9npr9k9cb94waqiyjpy2jzs8m9rc7xl2ap9"))))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-        #:tests? #f                     ; no tests
-        #:phases
-        #~(modify-phases %standard-phases
-            (replace 'configure
-              (lambda* (#:key inputs #:allow-other-keys)
-                ;; Hard-code some store file names.
-                (substitute* "gfx/common/vulkan_common.c"
-                  (("libvulkan.so")
-                   (search-input-file inputs "lib/libvulkan.so")))
-                (substitute* "gfx/common/wayland/generate_wayland_protos.sh"
-                  (("/usr/local/share/wayland-protocols")
-                   (search-input-directory inputs "share/wayland-protocols")))
+  (package
+    (name "retroarch-minimal")
+    (version "1.20.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/libretro/RetroArch")
+             (commit (string-append "v" version))))
+       (snippet
+        #~(begin
+            (use-modules (guix build utils)
+                         (ice-9 ftw)
+                         (srfi srfi-26))
+            ;; XXX: 'delete-all-but' is copied from the turbovnc package.
+            (define (delete-all-but directory . preserve)
+              (define (directory? x)
+                (and=> (stat x #f)
+                       (compose (cut eq? 'directory <>) stat:type)))
+              (with-directory-excursion directory
+                (let* ((pred
+                        (negate (cut member <> (append '("." "..") preserve))))
+                       (items (scandir "." pred)))
+                  (for-each (lambda (item)
+                              (if (directory? item)
+                                  (delete-file-recursively item)
+                                  (delete-file item)))
+                            items))))
+            ;; Remove as much bundled sources as possible, shaving off about
+            ;; 65 MiB.
+            (delete-all-but "deps"
+                            "feralgamemode" ;used in platform_unix.c
+                            "mbedtls"       ;further refined below
+                            "yxml")         ;used in rxml.c
+            ;; This is an old root certificate used in net_socket_ssl_mbed.c,
+            ;; not actually from mbedtls.
+            (delete-all-but "deps/mbedtls" "cacert.h")))
+       (patches (search-patches "retroarch-improved-search-paths.patch"
+                                "retroarch-unbundle-spirv-cross.patch"))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0yc16j3g2g0if64xqd7qr4dza8rw10x0zypwbl92y735825p87qi"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ; no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Hard-code some store file names.
+              (substitute* "gfx/common/vulkan_common.c"
+                (("libvulkan.so")
+                 (search-input-file inputs "lib/libvulkan.so")))
+              (substitute* "gfx/common/wayland/generate_wayland_protos.sh"
+                (("/usr/local/share/wayland-protocols")
+                 (search-input-directory inputs "share/wayland-protocols")))
 
-                ;; Without HLSL, we can still enable GLSLANG and Vulkan support.
-                (substitute* "qb/config.libs.sh"
-                  (("[$]HAVE_GLSLANG_HLSL") "notcare"))
+              ;; Without HLSL, we can still enable GLSLANG and Vulkan support.
+              (substitute* "qb/config.libs.sh"
+                (("[$]HAVE_GLSLANG_HLSL") "notcare"))
 
-                ;; The configure script does not yet accept the extra arguments
-                ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
-                (invoke
-                 "./configure"
-                 #$@(if (string-prefix? "armhf" (or (%current-target-system)
-                                                    (%current-system)))
-                        '("--enable-neon" "--enable-floathard")
-                        '())
-                 (string-append "--prefix=" #$output)
-                 ;; D-Bus support is required for 'suspend screensaver' option
-                 ;; to work.
-                 "--enable-dbus"
-                 ;; Non-free software are available through the core updater,
-                 ;; disable it.  See <https://issues.guix.gnu.org/38360>.
-                 "--disable-update_cores"
-                 "--disable-update_core_info"
-                 "--disable-online_updater"
-                 ;; The assets are provided via the `retroarch-assets' package.
-                 "--disable-update_assets"
-                 "--disable-builtinmbedtls"
-                 "--disable-builtinbearssl"
-                 "--disable-builtinzlib"
-                 "--disable-builtinflac"
-                 "--disable-builtinglslang"
-                 "--disable-builtinspirv_cross"
-                 ;; These are disabled to avoid requiring the bundled
-                 ;; dependencies.
-                 "--disable-7zip"
-                 "--disable-cheevos"
-                 "--disable-crtswitchres"
-                 "--disable-discord"
-                 "--disable-dr_mp3"
-                 "--disable-ibxm"
-                 "--disable-stb_font"
-                 "--disable-stb_image"
-                 "--disable-stb_vorbis"
-                 "--disable-xdelta"))))))
-      (native-inputs
-       (list pkg-config
-             wayland-protocols
-             which))
-      (inputs
-       (list alsa-lib
-             dbus
-             eudev
-             ffmpeg
-             flac
-             fontconfig
-             freetype
-             glslang
-             libxinerama
-             libxkbcommon
-             libxml2
-             libxrandr
-             libxv
-             mbedtls-lts
-             mesa
-             openal
-             openssl
-             pulseaudio
-             python
-             qtbase-5
-             sdl2
-             spirv-cross
-             spirv-headers
-             spirv-tools
-             v4l-utils
-             vulkan-loader
-             wayland
-             zlib))
-      (native-search-paths
-       (list (search-path-specification
-              (variable "LIBRETRO_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("lib/libretro")))
-             (search-path-specification
-              (variable "LIBRETRO_ASSETS_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/assets")))
-             (search-path-specification
-              (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/autoconfig")))
-             (search-path-specification
-              (variable "LIBRETRO_CHEATS_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/database/cht")))
-             (search-path-specification
-              (variable "LIBRETRO_DATABASE_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/database/rdb")))
-             (search-path-specification
-              (variable "LIBRETRO_SYSTEM_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/system")))
-             (search-path-specification
-              (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/filters/video")))
-             (search-path-specification
-              (variable "LIBRETRO_VIDEO_SHADER_DIRECTORY")
-              (separator #f)            ;single entry
-              (files '("share/libretro/shaders")))))
-      (home-page "https://www.libretro.com/")
-      (synopsis "Reference frontend for the libretro API")
-      (description
-       "Libretro is a simple but powerful development interface that allows for
+              ;; The configure script does not yet accept the extra arguments
+              ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
+              (invoke
+               "./configure"
+               #$@(if (string-prefix? "armhf" (or (%current-target-system)
+                                                  (%current-system)))
+                      '("--enable-neon" "--enable-floathard")
+                      '())
+               (string-append "--prefix=" #$output)
+               ;; D-Bus support is required for 'suspend screensaver' option
+               ;; to work.
+               "--enable-dbus"
+               ;; Non-free software are available through the core updater,
+               ;; disable it.  See <https://issues.guix.gnu.org/38360>.
+               "--disable-update_cores"
+               "--disable-update_core_info"
+               "--disable-online_updater"
+               ;; The assets are provided via the `retroarch-assets' package.
+               "--disable-update_assets"
+               "--disable-builtinmbedtls"
+               "--disable-builtinbearssl"
+               "--disable-builtinzlib"
+               "--disable-builtinflac"
+               "--disable-builtinglslang"
+               "--disable-builtinspirv_cross"
+               ;; These are disabled to avoid requiring the bundled
+               ;; dependencies.
+               "--disable-7zip"
+               "--disable-cheevos"
+               "--disable-crtswitchres"
+               "--disable-discord"
+               "--disable-dr_mp3"
+               "--disable-ibxm"
+               "--disable-stb_font"
+               "--disable-stb_image"
+               "--disable-stb_vorbis"
+               "--disable-xdelta"))))))
+    (native-inputs
+     (list pkg-config
+           wayland-protocols
+           which))
+    (inputs
+     (list alsa-lib
+           dbus
+           eudev
+           ffmpeg
+           flac
+           fontconfig
+           freetype
+           glslang
+           libxinerama
+           libxkbcommon
+           libxml2
+           libxrandr
+           libxv
+           mbedtls-lts
+           mesa
+           openal
+           openssl
+           pulseaudio
+           python
+           qtbase-5
+           sdl2
+           spirv-cross
+           spirv-headers
+           spirv-tools
+           v4l-utils
+           vulkan-loader
+           wayland
+           zlib))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "LIBRETRO_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("lib/libretro")))
+           (search-path-specification
+            (variable "LIBRETRO_ASSETS_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/assets")))
+           (search-path-specification
+            (variable "LIBRETRO_AUTOCONFIG_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/autoconfig")))
+           (search-path-specification
+            (variable "LIBRETRO_CHEATS_DIRECTORY")
+            (separator #f)            ;single entry
+            (files '("share/libretro/database/cht")))
+           (search-path-specification
+            (variable "LIBRETRO_DATABASE_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/database/rdb")))
+           (search-path-specification
+            (variable "LIBRETRO_SYSTEM_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/system")))
+           (search-path-specification
+            (variable "LIBRETRO_VIDEO_FILTER_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/filters/video")))
+           (search-path-specification
+            (variable "LIBRETRO_VIDEO_SHADER_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/libretro/shaders")))))
+    (home-page "https://www.libretro.com/")
+    (synopsis "Reference frontend for the libretro API")
+    (description
+     "Libretro is a simple but powerful development interface that allows for
 the easy creation of emulators, games and multimedia applications that can plug
 straight into any libretro-compatible frontend.  RetroArch is the official
 reference frontend for the libretro API, currently used by most as a modular
 multi-system game/emulator system.")
-      (license (list license:gpl3+      ;for RetroArch itself
-                     license:asl2.0     ;SPIRV-Cross
-                     license:expat      ;yxml
-                     license:bsd-3))))) ;feragamemode
+    (license (list license:gpl3+        ;for RetroArch itself
+                   license:asl2.0       ;SPIRV-Cross
+                   license:expat        ;yxml
+                   license:bsd-3)))) ;feragamemode
 
 (define-public retroarch
   (package
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:07 GMT) Full text and rfc822 format available.

Message #83 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 07/11] gnu: retroarch-core-info: Update to 1.20.0.
Date: Thu, 23 Jan 2025 21:21:43 +0900
* gnu/packages/emulators.scm (retroarch-core-info): Update to 1.20.0.

Change-Id: I85eec43eedf24df44b5d486a2410652ad87536db
---

(no changes since v1)

 gnu/packages/emulators.scm | 43 ++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 23 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index bb73d216a5..b569f30e49 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1780,31 +1780,28 @@ (define-public retroarch-assets
     (license license:cc-by4.0)))
 
 (define-public retroarch-core-info
-  ;; Use the latest commit, to get recent additions such as bsnes-jg.
-  (let ((commit "c0e7b76d02504754de67a1318f93089f1e29f15f")
-        (revision "0"))
-    (package
-      (name "retroarch-core-info")
-      (version (git-version "1.19.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/libretro/libretro-core-info")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "11xpy3zhy2smp4a70fc0r1b76mvmjyabkaaipifsxm3j25drki5z"))))
-      (build-system copy-build-system)
-      (arguments
-       (list #:install-plan #~'(("." "lib/libretro/"
-                                 #:include-regexp ("\\.info$")))))
-      (home-page "https://github.com/libretro/libretro-core-info")
-      (synopsis "Libretro core info files")
-      (description "This is a versioned snapshot of the files containing
+  (package
+    (name "retroarch-core-info")
+    (version "1.20.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libretro/libretro-core-info")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rfvp0lkv99jgpfyb9pp6vrh1i1974p3lckh93y1bibdizyxmwjg"))))
+    (build-system copy-build-system)
+    (arguments
+     (list #:install-plan #~'(("." "lib/libretro/"
+                               #:include-regexp ("\\.info$")))))
+    (home-page "https://github.com/libretro/libretro-core-info")
+    (synopsis "Libretro core info files")
+    (description "This is a versioned snapshot of the files containing
 metadata about each known libretro core.  The snapshot is taken from the
 @url{https://github.com/libretro/libretro-super, libretro-super} repository.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public retroarch-joypad-autoconfig
   (package
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:08 GMT) Full text and rfc822 format available.

Message #86 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 08/11] gnu: retroarch-core-info: Rename to
 libretro-core-info.
Date: Thu, 23 Jan 2025 21:21:44 +0900
This is to match the upstream name.

* gnu/packages/emulators.scm (retroarch-core-info): Rename to...
(libretro-core-info): ... this, and mark the previous name as deprecated.
(retroarch): Adjust accordingly.

Change-Id: I634f4b2ecc6d798b8a5386d9449fd32945453844
---

(no changes since v1)

 gnu/packages/emulators.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index b569f30e49..58ef76048b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1779,9 +1779,9 @@ (define-public retroarch-assets
 generate the various User Experience (UX) environments.")
     (license license:cc-by4.0)))
 
-(define-public retroarch-core-info
+(define-public libretro-core-info
   (package
-    (name "retroarch-core-info")
+    (name "libretro-core-info")
     (version "1.20.0")
     (source (origin
               (method git-fetch)
@@ -1803,6 +1803,9 @@ (define-public retroarch-core-info
 @url{https://github.com/libretro/libretro-super, libretro-super} repository.")
     (license license:expat)))
 
+(define-public retroarch-core-info
+  (deprecated-package "retroarch-core-info" libretro-core-info))
+
 (define-public retroarch-joypad-autoconfig
   (package
     (name "retroarch-joypad-autoconfig")
@@ -2726,7 +2729,7 @@ (define-public retroarch
            ;; which is problematic.  The environment variables overrides the
            ;; configuration file values.
            retroarch-assets
-           retroarch-core-info
+           libretro-core-info
            retroarch-joypad-autoconfig))))
 
 (define-public wasm4
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:08 GMT) Full text and rfc822 format available.

Message #89 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 09/11] gnu: Add libretro-database.
Date: Thu, 23 Jan 2025 21:21:45 +0900
* gnu/packages/emulators.scm (libretro-database): New variable.

Change-Id: I97b10abf9b2984cf2a622517b3c794474e98a3d0
---

(no changes since v1)

 gnu/packages/emulators.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 58ef76048b..9f03ea6409 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1806,6 +1806,44 @@ (define-public libretro-core-info
 (define-public retroarch-core-info
   (deprecated-package "retroarch-core-info" libretro-core-info))
 
+(define-public libretro-database
+  (package
+    (name "libretro-database")
+    (version "1.20.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libretro/libretro-database")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "086a9grpd1irsdns2zx3hlna72bbrmsfra4r498wi4ia9zf8nb0p"))))
+    (build-system gnu-build-system)
+    (arguments (list #:tests? #f
+                     #:make-flags #~(list (string-append "PREFIX=" #$output))))
+    (home-page "https://github.com/libretro/libretro-database/")
+    (synopsis "Cheat codes and content data files for RetroArch")
+    (description "RetroArch incorporates a ROM scanning system to
+automatically produce playlists.  Each ROM that is scanned by the playlist
+generator is checked against a database of ROMs that are known to be good
+copies.  The various directories contain:
+@table @code
+@item cht
+Cheat codes for various games
+@item cursors
+Methods for querying the playlists
+@item dat
+Customized DAT files, maintained by the libretro team
+@item metadat
+Different metadata and third-party DATs available to the system
+@item rdb
+The compiled RetroArch database files
+@item scripts
+Various scripts that are used to maintain the database files.
+@end table")
+    (license license:cc-by-sa4.0)))
+
 (define-public retroarch-joypad-autoconfig
   (package
     (name "retroarch-joypad-autoconfig")
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:24:09 GMT) Full text and rfc822 format available.

Message #92 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 10/11] gnu: retroarch: Propagate libretro-database.
Date: Thu, 23 Jan 2025 21:21:46 +0900
Otherwise, the search functionality of RetroArch would not work out of the
box.

* gnu/packages/emulators.scm (retroarch) [propagated-inputs]: Add
libretro-database.

Change-Id: I63edad8d3e886a2be2a2f4f48f59fb5cbbf239f8
---

(no changes since v1)

 gnu/packages/emulators.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9f03ea6409..43d8d2bdf7 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -2768,6 +2768,7 @@ (define-public retroarch
            ;; configuration file values.
            retroarch-assets
            libretro-core-info
+           libretro-database
            retroarch-joypad-autoconfig))))
 
 (define-public wasm4
-- 
2.47.1





Information forwarded to adam.faiz <at> disroot.org, liliana.prikler <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Thu, 23 Jan 2025 12:26:02 GMT) Full text and rfc822 format available.

Message #95 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 75619 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH v3 11/11] gnu: dolphin-emu: Patch data.
Date: Thu, 23 Jan 2025 21:21:47 +0900
This resolves a hang in the menu of the WaveRace game.

* gnu/packages/patches/dolphin-emu-data.patch: New file.
* gnu/packages/patches/libretro-dolphin-emu-data.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): Register them.
* gnu/packages/emulators.scm (dolphin-emu) [source]: Apply dolphin-emu patch.
(libretro-dolphin-emu) [source]: Apply libretro-dolphin-emu patch.

Change-Id: Ie22a7bba527724179f5296a44f1874d2efdbd94c
---

(no changes since v1)

 gnu/local.mk                                    |  4 +++-
 gnu/packages/emulators.scm                      |  6 ++++--
 gnu/packages/patches/dolphin-emu-data.patch     | 15 +++++++++++++++
 .../patches/libretro-dolphin-emu-data.patch     | 17 +++++++++++++++++
 4 files changed, 39 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/dolphin-emu-data.patch
 create mode 100644 gnu/packages/patches/libretro-dolphin-emu-data.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5091f93eb8..9457fbf4cb 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -19,7 +19,7 @@
 # Copyright © 2018 Amirouche Boubekki <amirouche <at> hypermove.net>
 # Copyright © 2018, 2019, 2020, 2021, 2022, 2024 Oleg Pykhalov <go.wigust <at> gmail.com>
 # Copyright © 2018 Stefan Stefanović <stefanx2ovic <at> gmail.com>
-# Copyright © 2018, 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
+# Copyright © 2018, 2020-2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
 # Copyright © 2019, 2020, 2021, 2022, 2024 Guillaume Le Vaillant <glv <at> posteo.net>
 # Copyright © 2019, 2020 John Soo <jsoo1 <at> asu.edu>
 # Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier <at> web.de>
@@ -1182,6 +1182,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/docbook2x-static-datadir-evaluation.patch	\
   %D%/packages/patches/doc++-include-directives.patch		\
   %D%/packages/patches/doc++-segfault-fix.patch			\
+  %D%/packages/patches/dolphin-emu-data.patch			\
   %D%/packages/patches/dovecot-opensslv3.patch			\
   %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch	\
   %D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch	\
@@ -1659,6 +1660,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libgeotiff-fix-tests-on-i386.patch	\
   %D%/packages/patches/libguestfs-syms.patch            	\
   %D%/packages/patches/libobjc2-unbundle-robin-map.patch	\
+  %D%/packages/patches/libretro-dolphin-emu-data.patch		\
   %D%/packages/patches/librewolf-use-system-wide-dir.patch	\
   %D%/packages/patches/libvirt-add-install-prefix.patch	\
   %D%/packages/patches/libziparchive-add-includes.patch		\
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 43d8d2bdf7..f20b6da79b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -337,7 +337,8 @@ (define-public dolphin-emu
              (substitute* "CMakeLists.txt"
                ((".*add_subdirectory.*Externals/enet.*") "")
                ((".*add_subdirectory.*Externals/soundtouch.*") "")
-               ((".*add_subdirectory.*Externals/xxhash.*") ""))))))
+               ((".*add_subdirectory.*Externals/xxhash.*") ""))))
+         (patches (search-patches "dolphin-emu-data.patch"))))
       (build-system cmake-build-system)
       (arguments
        (list
@@ -499,7 +500,8 @@ (define-public libretro-dolphin-emu
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1fvm6hy0ihc0j3sgv88a7ak08c0kyikmmiif827j981fy7zvglvz"))))
+                  "1fvm6hy0ihc0j3sgv88a7ak08c0kyikmmiif827j981fy7zvglvz"))
+                (patches (search-patches "libretro-dolphin-emu-data.patch"))))
       (arguments
        (substitute-keyword-arguments (package-arguments dolphin-emu)
          ((#:configure-flags flags ''())
diff --git a/gnu/packages/patches/dolphin-emu-data.patch b/gnu/packages/patches/dolphin-emu-data.patch
new file mode 100644
index 0000000000..6ba959b929
--- /dev/null
+++ b/gnu/packages/patches/dolphin-emu-data.patch
@@ -0,0 +1,15 @@
+Resolve a hang in the menu of this game.
+
+Upstream-status: https://github.com/dolphin-emu/dolphin/pull/13285
+
+diff --git a/Data/Sys/GameSettings/GWR.ini b/Data/Sys/GameSettings/GWR.ini
+new file mode 100644
+index 0000000000..fdbc0c312f
+--- /dev/null
++++ b/Data/Sys/GameSettings/GWR.ini
+@@ -0,0 +1,5 @@
++# GWR - WAVE RACE / BLUE STORM
++
++[Core]
++# Disable multi-threading to avoid a hang in the game menu.
++CPUThread = False
diff --git a/gnu/packages/patches/libretro-dolphin-emu-data.patch b/gnu/packages/patches/libretro-dolphin-emu-data.patch
new file mode 100644
index 0000000000..e98660d8ab
--- /dev/null
+++ b/gnu/packages/patches/libretro-dolphin-emu-data.patch
@@ -0,0 +1,17 @@
+Resolve a hang in the menu of this game.
+
+Upstream-status: https://github.com/libretro/dolphin/pull/337
+
+diff --git a/Data/Sys/GameSettings/GWR.ini b/Data/Sys/GameSettings/GWR.ini
+new file mode 100644
+index 0000000000..a55f4d29cd
+--- /dev/null
++++ b/Data/Sys/GameSettings/GWR.ini
+@@ -0,0 +1,7 @@
++# GWR - WAVE RACE / BLUE STORM
++
++[Core]
++# Disable multi-threading to avoid a hang in the game menu.
++# TODO: Change to 'CPUThread = False' after rebasing to latest
++# upstream (see commit 869edd5a66).
++SyncGPU = True
-- 
2.47.1





Information forwarded to guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sat, 25 Jan 2025 07:19:02 GMT) Full text and rfc822 format available.

Message #98 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: 宋文武 <iyzsong <at> envs.net>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: Gabriel Wicki <gabriel <at> erlikon.ch>, 75619 <at> debbugs.gnu.org
Subject: Re: [bug#75619] [PATCH v3 01/11] gnu: Add
 soundtouch-1/integer-samples.
Date: Sat, 25 Jan 2025 15:21:37 +0800
Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> +(define-public soundtouch-1/integer-samples
> +  (package
> +    (inherit soundtouch)
> +    (name "soundtouch")
> +    (version "1.9.2")

Maybe mark this package as hidden, if it is only useful for dolphin-emu?




Information forwarded to guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sun, 26 Jan 2025 01:15:02 GMT) Full text and rfc822 format available.

Message #101 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 宋文武 <iyzsong <at> envs.net>
Cc: Gabriel Wicki <gabriel <at> erlikon.ch>, 75619 <at> debbugs.gnu.org
Subject: Re: [bug#75619] [PATCH v3 01/11] gnu: Add
 soundtouch-1/integer-samples.
Date: Sun, 26 Jan 2025 10:13:42 +0900
Hi,

宋文武 <iyzsong <at> envs.net> writes:

> Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:
>
>> +(define-public soundtouch-1/integer-samples
>> +  (package
>> +    (inherit soundtouch)
>> +    (name "soundtouch")
>> +    (version "1.9.2")
>
> Maybe mark this package as hidden, if it is only useful for dolphin-emu?

I think it could technically be useful to others wanting soundtouch
version 1, and makes it easier to upddate via 'guix refresh' if it's not
hidden, so I'm inclined to leave it public.

-- 
Thanks,
Maxim




Information forwarded to guix-patches <at> gnu.org:
bug#75619; Package guix-patches. (Sun, 26 Jan 2025 03:25:02 GMT) Full text and rfc822 format available.

Message #104 received at 75619 <at> debbugs.gnu.org (full text, mbox):

From: 宋文武 <iyzsong <at> envs.net>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: Gabriel Wicki <gabriel <at> erlikon.ch>, 75619 <at> debbugs.gnu.org
Subject: Re: [bug#75619] [PATCH v3 01/11] gnu: Add
 soundtouch-1/integer-samples.
Date: Sun, 26 Jan 2025 11:28:00 +0800
Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Hi,
>
> 宋文武 <iyzsong <at> envs.net> writes:
>
>> Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:
>>
>>> +(define-public soundtouch-1/integer-samples
>>> +  (package
>>> +    (inherit soundtouch)
>>> +    (name "soundtouch")
>>> +    (version "1.9.2")
>>
>> Maybe mark this package as hidden, if it is only useful for dolphin-emu?
>
> I think it could technically be useful to others wanting soundtouch
> version 1, and makes it easier to upddate via 'guix refresh' if it's not
> hidden, so I'm inclined to leave it public.

Okay, the whole v3 series look good to me.  Please push, thank you!




Reply sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
You have taken responsibility. (Sun, 26 Jan 2025 14:14:02 GMT) Full text and rfc822 format available.

Notification sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
bug acknowledged by developer. (Sun, 26 Jan 2025 14:14:02 GMT) Full text and rfc822 format available.

Message #109 received at 75619-done <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 宋文武 <iyzsong <at> envs.net>
Cc: 75619-done <at> debbugs.gnu.org, Gabriel Wicki <gabriel <at> erlikon.ch>
Subject: Re: [bug#75619] [PATCH v3 01/11] gnu: Add
 soundtouch-1/integer-samples.
Date: Sun, 26 Jan 2025 23:12:45 +0900
Hi,

宋文武 <iyzsong <at> envs.net> writes:

[...]

> Okay, the whole v3 series look good to me.  Please push, thank you!

I've added Reviewed-by git trailers to each commit of this series and
pushed.  Thanks for the review!  Closing.

-- 
Thanks,
Maxim




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 24 Feb 2025 12:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 17 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.