[PATCH 0/7] Add libretro-dolphin-emu and update retroarch

  • Done
  • quality assurance status badge
Details
3 participants
  • 宋文武
  • Liliana Marie Prikler
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal

Debbugs page

Maxim Cournoyer wrote 2 months ago
(address . guix-patches@gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
cover.1737083128.git.maxim.cournoyer@gmail.com
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
Maxim Cournoyer wrote 2 months ago
[PATCH 1/7] gnu: Add soundtouch-1/integer-samples.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
035ad50ab4e122c87225bd43e423fb17c75578e1.1737083128.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (46 lines)
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@tobias.gr>
;;; Copyright © 2018, 2020, 2024 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 okapi <okapi@firemail.cc>
-;;; Copyright © 2018, 2020, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020, 2022-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@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
Maxim Cournoyer wrote 2 months ago
[PATCH 2/7] gnu: dolphin-emu: Unbundle more libraries and enable tests.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
d6cdead2734e6a8f2fe275a2f306d8c11f02c4b0.1737083128.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (205 lines)
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@librehacker.com>
;;; Copyright © 2021 Felipe Balbi <balbi@kernel.org>
;;; Copyright © 2021, 2024 Felix Gruber <felgru@posteo.net>
-;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2024, 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2023 c4droid <c4droid@foxmail.com>
;;; Copyright © 2023 Yovan Naumovski <yovan@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
Maxim Cournoyer wrote 2 months ago
[PATCH 3/7] gnu: dolphin-emu: Build .bin binary files and preserve data ones.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87b75e47d4fc308896e1ab8e86bd58cd049ab97f.1737083128.git.maxim.cournoyer@gmail.com
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(-)

Toggle diff (99 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH 4/7] gnu: retroarch-minimal: Add search path for LIBRETRO_SYSTEM_DIRECTORY.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
e625b3241d18a8b47d00aa71f44b6784a517deca.1737083128.git.maxim.cournoyer@gmail.com
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(-)

Toggle diff (236 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH 5/7] gnu: Add libretro-dolphin-emu.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
4c08249e6903a7cec93fdbb9973996d9719266ad.1737083128.git.maxim.cournoyer@gmail.com
* gnu/packages/emulators.scm (libretro-dolphin-emu): New variable.

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

Toggle diff (64 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH 6/7] gnu: retroarch-minimal: Update to 1.20.0.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
24bea41b98fa9c4c62120051c34d82cc6a573539.1737083128.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (347 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH 7/7] gnu: retroarch-core-info: Update to 1.20.0.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
7f465086dffd3f104ff82a193aab7bda593f2e93.1737083128.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (57 lines)
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
Liliana Marie Prikler wrote 2 months ago
Re: [bug#75619] [PATCH 3/7] gnu: dolphin-emu: Build .bin binary files and preserve data ones.
dd2965c20637089a6bea44a659f04bf9b19a5d31.camel@gmail.com
Am Freitag, dem 17.01.2025 um 13:45 +0900 schrieb Maxim Cournoyer:
Toggle quote (13 lines)
> 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.
Maxim Cournoyer wrote 2 months ago
[PATCH v2 01/10] gnu: Add soundtouch-1/integer-samples.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
035ad50ab4e122c87225bd43e423fb17c75578e1.1737190254.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (48 lines)
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@tobias.gr>
;;; Copyright © 2018, 2020, 2024 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 okapi <okapi@firemail.cc>
-;;; Copyright © 2018, 2020, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020, 2022-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 02/10] gnu: dolphin-emu: Unbundle more libraries and enable tests.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
d6cdead2734e6a8f2fe275a2f306d8c11f02c4b0.1737190254.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (205 lines)
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@librehacker.com>
;;; Copyright © 2021 Felipe Balbi <balbi@kernel.org>
;;; Copyright © 2021, 2024 Felix Gruber <felgru@posteo.net>
-;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2024, 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2023 c4droid <c4droid@foxmail.com>
;;; Copyright © 2023 Yovan Naumovski <yovan@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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 03/10] gnu: dolphin-emu: Build .bin binary files and preserve data ones.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87b75e47d4fc308896e1ab8e86bd58cd049ab97f.1737190254.git.maxim.cournoyer@gmail.com
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(-)

Toggle diff (99 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 04/10] gnu: retroarch-minimal: Add new search paths for database and system files.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
394ce53fdb1066c4aa9f711a27dc2b1c6312d106.1737190254.git.maxim.cournoyer@gmail.com
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(-)

Toggle diff (289 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 05/10] gnu: Add libretro-dolphin-emu.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
d7033ddcae93f2375db3c1fc553a2dd3de0d9733.1737190254.git.maxim.cournoyer@gmail.com
* gnu/packages/emulators.scm (libretro-dolphin-emu): New variable.

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

Toggle diff (64 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 06/10] gnu: retroarch-minimal: Update to 1.20.0.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
df045de7878188775db7747ce75ab071ab8dda43.1737190254.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (354 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 07/10] gnu: retroarch-core-info: Update to 1.20.0.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
de55643ae2d2f44f5787121eadb4912175ae102c.1737190254.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (58 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 08/10] gnu: retroarch-core-info: Rename to libretro-core-info.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
ea2f0724f9d3e0a23a550f084925bcc8a9c55c17.1737190254.git.maxim.cournoyer@gmail.com
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(-)

Toggle diff (37 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 09/10] gnu: Add libretro-database.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
c1bf6411bf652ed45dcce35492f1282d8cab3672.1737190254.git.maxim.cournoyer@gmail.com
* gnu/packages/emulators.scm (libretro-database): New variable.

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

Toggle diff (51 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v2 10/10] gnu: retroarch: Propagate libretro-database.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
93aef7672edabd2cfd32275495d892511cf43f24.1737190254.git.maxim.cournoyer@gmail.com
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(+)

Toggle diff (14 lines)
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
Maxim Cournoyer wrote 2 months ago
Re: [bug#75619] [PATCH 3/7] gnu: dolphin-emu: Build .bin binary files and preserve data ones.
(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)
875xmbbgza.fsf@gmail.com
Hi Liliana,

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

Toggle quote (17 lines)
> 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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 01/11] gnu: Add soundtouch-1/integer-samples.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
c7f4a0b2e20a139c2de40c662dab5848f8082952.1737634907.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (48 lines)
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@tobias.gr>
;;; Copyright © 2018, 2020, 2024 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 okapi <okapi@firemail.cc>
-;;; Copyright © 2018, 2020, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020, 2022-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 02/11] gnu: dolphin-emu: Unbundle more libraries and enable tests.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
0ea47bda5cbda5e9e3d56df540b13fd8a69d666c.1737634907.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (205 lines)
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@librehacker.com>
;;; Copyright © 2021 Felipe Balbi <balbi@kernel.org>
;;; Copyright © 2021, 2024 Felix Gruber <felgru@posteo.net>
-;;; Copyright © 2021, 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2024, 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2023 c4droid <c4droid@foxmail.com>
;;; Copyright © 2023 Yovan Naumovski <yovan@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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 03/11] gnu: dolphin-emu: Build .bin binary files and preserve data ones.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
f6673f28373b290a3eab6bcb1859e443a3ae800a.1737634907.git.maxim.cournoyer@gmail.com
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(-)

Toggle diff (99 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 04/11] gnu: retroarch-minimal: Add new search paths.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
64dd7ddeae97b82e13eaa749f5a20e4523949067.1737634907.git.maxim.cournoyer@gmail.com
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(-)

Toggle diff (65 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 05/11] gnu: Add libretro-dolphin-emu.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
45917a9ac1b6eb9ef9bc12b121c7e0ccab474990.1737634907.git.maxim.cournoyer@gmail.com
* 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(+)

Toggle diff (64 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 06/11] gnu: retroarch-minimal: Update to 1.20.0.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
11b335f7edfa58f5496ebedaaa405ec4d2415ac9.1737634907.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (363 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 07/11] gnu: retroarch-core-info: Update to 1.20.0.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
3ebc146ee10bb5f86b849bb681700b7700b08726.1737634907.git.maxim.cournoyer@gmail.com
* 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(-)

Toggle diff (58 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 08/11] gnu: retroarch-core-info: Rename to libretro-core-info.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
9a4246f2b02c2a39d43b709dbc151392a594b680.1737634907.git.maxim.cournoyer@gmail.com
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(-)

Toggle diff (37 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 09/11] gnu: Add libretro-database.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
7657ffa178e6a0fe79862eae88253131b27498e6.1737634907.git.maxim.cournoyer@gmail.com
* 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(+)

Toggle diff (51 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 10/11] gnu: retroarch: Propagate libretro-database.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
81d146ebd1b8d9ba70cc53b91ba07f1d88d44ed4.1737634907.git.maxim.cournoyer@gmail.com
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(+)

Toggle diff (14 lines)
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
Maxim Cournoyer wrote 2 months ago
[PATCH v3 11/11] gnu: dolphin-emu: Patch data.
(address . 75619@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
2dc3199ae26721ed38d21de332224f38085aca6f.1737634907.git.maxim.cournoyer@gmail.com
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

Toggle diff (99 lines)
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@hypermove.net>
# Copyright © 2018, 2019, 2020, 2021, 2022, 2024 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
-# Copyright © 2018, 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+# Copyright © 2018, 2020-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
# Copyright © 2019, 2020, 2021, 2022, 2024 Guillaume Le Vaillant <glv@posteo.net>
# Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
# Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@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
宋文武 wrote 2 months ago
Re: [bug#75619] [PATCH v3 01/11] gnu: Add soundtouch-1/integer-samples.
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87r04rwe7y.fsf@envs.net
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (6 lines)
> +(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?
Maxim Cournoyer wrote 1 months ago
(name . 宋文武)(address . iyzsong@envs.net)
87zfje74xl.fsf@gmail.com
Hi,

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

Toggle quote (10 lines)
> Maxim Cournoyer <maxim.cournoyer@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
宋文武 wrote 1 months ago
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87h65m1cfz.fsf@envs.net
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (18 lines)
> Hi,
>
> 宋文武 <iyzsong@envs.net> writes:
>
>> Maxim Cournoyer <maxim.cournoyer@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!
Maxim Cournoyer wrote 1 months ago
(name . 宋文武)(address . iyzsong@envs.net)
87jzah7jfm.fsf@gmail.com
Hi,

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

[...]

Toggle quote (2 lines)
> 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
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 75619@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 75619
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help