From 61ffb5da597bf3825cc56556b07d8213d9e86819 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Fri, 23 Dec 2022 21:46:32 +0000 Subject: [PATCH 1/3] libretro-core-info: set INSTALLDIR to RetroArch's expected location --- .../emulators/retroarch/libretro-core-info.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/emulators/retroarch/libretro-core-info.nix b/pkgs/applications/emulators/retroarch/libretro-core-info.nix index 4edd94f363e6..79f9002ed402 100644 --- a/pkgs/applications/emulators/retroarch/libretro-core-info.nix +++ b/pkgs/applications/emulators/retroarch/libretro-core-info.nix @@ -14,7 +14,12 @@ stdenvNoCC.mkDerivation rec { rev = "v${version}"; }; - makeFlags = [ "PREFIX=$(out)" ]; + makeFlags = [ + "PREFIX=$(out)" + # By default install in $(PREFIX)/share/libretro/info + # that is not in RetroArch's core info path + "INSTALLDIR=$(PREFIX)/share/retroarch/cores" + ]; dontBuild = true; From 1aacb258cbd283356b3637bbf27deaab1596b978 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Fri, 23 Dec 2022 21:46:49 +0000 Subject: [PATCH 2/3] retroarchBare: backport patches from upstream --- .../emulators/retroarch/default.nix | 29 +++++---- ...arch-assets-to-retroarch_assets_path.patch | 60 ------------------- ...-libretro_info_path-assets_directory.patch | 34 +++++++++++ ...se-fixed-path-for-libretro_core_info.patch | 41 ------------- 4 files changed, 51 insertions(+), 113 deletions(-) delete mode 100644 pkgs/applications/emulators/retroarch/move-retroarch-assets-to-retroarch_assets_path.patch create mode 100644 pkgs/applications/emulators/retroarch/use-default-values-for-libretro_info_path-assets_directory.patch delete mode 100644 pkgs/applications/emulators/retroarch/use-fixed-path-for-libretro_core_info.patch diff --git a/pkgs/applications/emulators/retroarch/default.nix b/pkgs/applications/emulators/retroarch/default.nix index b8ae0fe0181d..442d7caa2e1a 100644 --- a/pkgs/applications/emulators/retroarch/default.nix +++ b/pkgs/applications/emulators/retroarch/default.nix @@ -10,6 +10,7 @@ , alsa-lib , dbus , fetchFromGitHub +, fetchpatch , ffmpeg_4 , flac , freetype @@ -57,16 +58,18 @@ stdenv.mkDerivation rec { rev = "v${version}"; }; - patches = lib.optional withAssets - (substituteAll { - src = ./move-retroarch-assets-to-retroarch_assets_path.patch; - retroarch_assets_path = retroarch-assets; + patches = [ + ./use-default-values-for-libretro_info_path-assets_directory.patch + # TODO: remove those two patches in the next RetroArch release + (fetchpatch { + url = "https://github.com/libretro/RetroArch/commit/894c44c5ea7f1eada9207be3c29e8d5c0a7a9e1f.patch"; + hash = "sha256-ThB6jd9pmsipT8zjehz7znK/s0ofHHCJeEYBKur6sO8="; }) - ++ lib.optional withCoreInfo - (substituteAll { - src = ./use-fixed-path-for-libretro_core_info.patch; - libretro_info_path = libretro-core-info; - }); + (fetchpatch { + url = "https://github.com/libretro/RetroArch/commit/c5bfd52159cf97312bb28fc42203c39418d1bbbd.patch"; + hash = "sha256-rb1maAvCSUgq2VtJ67iqUY+Fz00Fchl8YGG0EPm0+F0="; + }) + ]; nativeBuildInputs = [ pkg-config ] ++ lib.optional withWayland wayland ++ @@ -113,9 +116,11 @@ stdenv.mkDerivation rec { ] ++ lib.optionals withAssets [ "--disable-update_assets" - # TODO: investigate why we also need this patch: - # ./move-retroarch-assets-to-retroarch_assets_path.patch - "--with-assets_dir=${retroarch-assets}" + "--with-assets_dir=${retroarch-assets}/share" + ] ++ + lib.optionals withCoreInfo [ + "--disable-update_core_info" + "--with-core_info_dir=${libretro-core-info}/share" ] ++ lib.optionals stdenv.isLinux [ "--enable-dbus" diff --git a/pkgs/applications/emulators/retroarch/move-retroarch-assets-to-retroarch_assets_path.patch b/pkgs/applications/emulators/retroarch/move-retroarch-assets-to-retroarch_assets_path.patch deleted file mode 100644 index 477cc4c626fb..000000000000 --- a/pkgs/applications/emulators/retroarch/move-retroarch-assets-to-retroarch_assets_path.patch +++ /dev/null @@ -1,60 +0,0 @@ -From b3ccf05014f4a79800d8bed05b0dcfdc010e191c Mon Sep 17 00:00:00 2001 -From: Thiago Kenji Okada -Date: Sun, 18 Dec 2022 22:06:48 +0000 -Subject: [PATCH 2/2] Move retroarch assets path to @retroarch_assets_path@ - ---- - configuration.c | 2 +- - frontend/drivers/platform_unix.c | 16 ++++++++-------- - 2 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/configuration.c b/configuration.c -index 06a99236c2..15b575d8a2 100644 ---- a/configuration.c -+++ b/configuration.c -@@ -1539,7 +1539,7 @@ static struct config_path_setting *populate_settings_path( - SETTING_PATH("core_assets_directory", - settings->paths.directory_core_assets, true, NULL, true); - SETTING_PATH("assets_directory", -- settings->paths.directory_assets, true, NULL, true); -+ settings->paths.directory_assets, true, NULL, false); - SETTING_PATH("dynamic_wallpapers_directory", - settings->paths.directory_dynamic_wallpapers, true, NULL, true); - SETTING_PATH("thumbnails_directory", -diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c -index 43ea5f80c9..01b6cccbcc 100644 ---- a/frontend/drivers/platform_unix.c -+++ b/frontend/drivers/platform_unix.c -@@ -1778,21 +1778,21 @@ static void frontend_unix_get_env(int *argc, - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG], base_path, - "autoconfig", sizeof(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG])); - -- if (path_is_directory("/usr/local/share/retroarch/assets")) -+ if (path_is_directory("@retroarch_assets_path@/local/share/retroarch/assets")) - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], -- "/usr/local/share/retroarch", -+ "@retroarch_assets_path@/local/share/retroarch", - "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); -- else if (path_is_directory("/usr/share/retroarch/assets")) -+ else if (path_is_directory("@retroarch_assets_path@/share/retroarch/assets")) - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], -- "/usr/share/retroarch", -+ "@retroarch_assets_path@/share/retroarch", - "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); -- else if (path_is_directory("/usr/local/share/games/retroarch/assets")) -+ else if (path_is_directory("@retroarch_assets_path@/local/share/games/retroarch/assets")) - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], -- "/usr/local/share/games/retroarch", -+ "@retroarch_assets_path@/local/share/games/retroarch", - "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); -- else if (path_is_directory("/usr/share/games/retroarch/assets")) -+ else if (path_is_directory("@retroarch_assets_path@/share/games/retroarch/assets")) - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], -- "/usr/share/games/retroarch", -+ "@retroarch_assets_path@/share/games/retroarch", - "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); - else - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], base_path, --- -2.38.1 - diff --git a/pkgs/applications/emulators/retroarch/use-default-values-for-libretro_info_path-assets_directory.patch b/pkgs/applications/emulators/retroarch/use-default-values-for-libretro_info_path-assets_directory.patch new file mode 100644 index 000000000000..7ef7f439ecd1 --- /dev/null +++ b/pkgs/applications/emulators/retroarch/use-default-values-for-libretro_info_path-assets_directory.patch @@ -0,0 +1,34 @@ +From 6960855a0cdfd671d214030260b340a73878af52 Mon Sep 17 00:00:00 2001 +From: Thiago Kenji Okada +Date: Fri, 23 Dec 2022 21:42:15 +0000 +Subject: [PATCH] Use default values for libretro_info_path/assets_directories + +--- + configuration.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configuration.c b/configuration.c +index d9ab8370c4..15b575d8a2 100644 +--- a/configuration.c ++++ b/configuration.c +@@ -1483,7 +1483,7 @@ static struct config_path_setting *populate_settings_path( + SETTING_PATH("core_options_path", + settings->paths.path_core_options, false, NULL, true); + SETTING_PATH("libretro_info_path", +- settings->paths.path_libretro_info, false, NULL, true); ++ settings->paths.path_libretro_info, false, NULL, false); + SETTING_PATH("content_database_path", + settings->paths.path_content_database, false, NULL, true); + SETTING_PATH("cheat_database_path", +@@ -1539,7 +1539,7 @@ static struct config_path_setting *populate_settings_path( + SETTING_PATH("core_assets_directory", + settings->paths.directory_core_assets, true, NULL, true); + SETTING_PATH("assets_directory", +- settings->paths.directory_assets, true, NULL, true); ++ settings->paths.directory_assets, true, NULL, false); + SETTING_PATH("dynamic_wallpapers_directory", + settings->paths.directory_dynamic_wallpapers, true, NULL, true); + SETTING_PATH("thumbnails_directory", +-- +2.38.1 + diff --git a/pkgs/applications/emulators/retroarch/use-fixed-path-for-libretro_core_info.patch b/pkgs/applications/emulators/retroarch/use-fixed-path-for-libretro_core_info.patch deleted file mode 100644 index 256397fd49ea..000000000000 --- a/pkgs/applications/emulators/retroarch/use-fixed-path-for-libretro_core_info.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 6145cb9ed935621f1974655fe1ab44cf2f0fbcce Mon Sep 17 00:00:00 2001 -From: Thiago Kenji Okada -Date: Sat, 29 Oct 2022 12:27:55 +0100 -Subject: [PATCH] Use fixed path for libretro_core_info - ---- - configuration.c | 2 +- - frontend/drivers/platform_unix.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/configuration.c b/configuration.c -index af3fc8f43c..c6d56308b3 100644 ---- a/configuration.c -+++ b/configuration.c -@@ -1468,7 +1468,7 @@ static struct config_path_setting *populate_settings_path( - SETTING_PATH("core_options_path", - settings->paths.path_core_options, false, NULL, true); - SETTING_PATH("libretro_info_path", -- settings->paths.path_libretro_info, false, NULL, true); -+ settings->paths.path_libretro_info, false, NULL, false); - SETTING_PATH("content_database_path", - settings->paths.path_content_database, false, NULL, true); - SETTING_PATH("cheat_database_path", -diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c -index fe5f7341c9..c2a91f8c99 100644 ---- a/frontend/drivers/platform_unix.c -+++ b/frontend/drivers/platform_unix.c -@@ -1799,8 +1799,8 @@ static void frontend_unix_get_env(int *argc, - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], base_path, - "core_info", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO])); - #else -- fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], base_path, -- "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO])); -+ fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], "@libretro_info_path@", -+ "share/libretro/info", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO])); - #endif - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG], base_path, - "autoconfig", sizeof(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG])); --- -2.38.0 - From 3b2ea169f1adc4a03ac93f9f917fc570bf167651 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Fri, 23 Dec 2022 22:11:18 +0000 Subject: [PATCH 3/3] retroarch: fix retroarch-cg2glsl script Patch script so it loads `cgc` from the correct place when `enableNvidiaCgToolkit` is set to `true`. Also, in case `enableNvidiaCgToolkit` is set to `false`, also remove the manual for the script. --- pkgs/applications/emulators/retroarch/default.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/emulators/retroarch/default.nix b/pkgs/applications/emulators/retroarch/default.nix index 442d7caa2e1a..5c18d47daa8a 100644 --- a/pkgs/applications/emulators/retroarch/default.nix +++ b/pkgs/applications/emulators/retroarch/default.nix @@ -131,9 +131,16 @@ stdenv.mkDerivation rec { postInstall = lib.optionalString (runtimeLibs != [ ]) '' wrapProgram $out/bin/retroarch \ --prefix LD_LIBRARY_PATH ':' ${lib.makeLibraryPath runtimeLibs} + '' + + lib.optionalString enableNvidiaCgToolkit '' + wrapProgram $out/bin/retroarch-cg2glsl \ + --prefix PATH ':' ${lib.makeBinPath [ nvidia_cg_toolkit ]} ''; - preFixup = "rm $out/bin/retroarch-cg2glsl"; + preFixup = lib.optionalString (!enableNvidiaCgToolkit) '' + rm $out/bin/retroarch-cg2glsl + rm $out/share/man/man6/retroarch-cg2glsl.6* + ''; passthru.tests = nixosTests.retroarch;