Subject: [bug#46588] [PATCH v2] gnu: retroarch: Update to 1.9.0.

From: 宋文武 <[email-masked]>
Date: Sat, 20 Feb 2021 20:56:03 +0800

Change to use 'LIBRETRO_DIRECTORY' and patch 'retroarch.c':

>From 901e294f39975dec78c3ad9e41c23466316e9a92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <[email-masked]>
Date: Wed, 17 Feb 2021 19:50:33 +0800
Subject: [PATCH] gnu: retroarch: Update to 1.9.0.

* gnu/packages/emulators.scm (retroarch): Update to 1.9.0.
[source]: Remove 'retroarch-disable-online-updater.patch' and snippet.
Add 'retroarch-LIBRETRO_DIRECTORY.patch'.
[native-search-paths]: New field.
* gnu/packages/patches/retroarch-disable-online-updater.patch: Remove file.
* gnu/packages/patches/retroarch-LIBRETRO_DIRECTORY: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
---
 gnu/local.mk                                  |  2 +-
 gnu/packages/emulators.scm                    | 24 +++++------
 .../retroarch-LIBRETRO_DIRECTORY.patch        | 32 +++++++++++++++
 .../retroarch-disable-online-updater.patch    | 41 -------------------
 4 files changed, 44 insertions(+), 55 deletions(-)
 create mode 100644 gnu/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch
 delete mode 100644 gnu/packages/patches/retroarch-disable-online-updater.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5588cda2e1..bdb44984a6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1594,7 +1594,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rtags-separate-rct.patch			\
   %D%/packages/patches/racket-store-checksum-override.patch	\
   %D%/packages/patches/remake-impure-dirs.patch			\
-  %D%/packages/patches/retroarch-disable-online-updater.patch	\
+  %D%/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch	\
   %D%/packages/patches/rnp-add-version.cmake.patch		\
   %D%/packages/patches/rnp-disable-ruby-rnp-tests.patch		\
   %D%/packages/patches/rnp-unbundle-googletest.patch		\
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 662542e759..b9bab5ad74 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1273,7 +1273,7 @@ as RetroArch.")
 (define-public retroarch
   (package
     (name "retroarch")
-    (version "1.8.1")
+    (version "1.9.0")
     (source
      (origin
        (method git-fetch)
@@ -1282,18 +1282,9 @@ as RetroArch.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0y7rcpz7psf8k3agsrq277jdm651vbnn9xpqvmj2in1a786idya7"))
+        (base32 "1n0dcv85vqrdr79psnf009hi4r2mvsgsjbghrrc9pm5g7ywwwcvp"))
        (patches
-        (search-patches "retroarch-disable-online-updater.patch"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           ;; Don't suggest using the Online Updater if available: it never
-           ;; is.  This disables translation of this particular message.
-           (substitute* (find-files "menu/drivers" "\\.c$")
-             (("msg_hash_to_str\\(MSG_MISSING_ASSETS\\)")
-              "\"Warning: Missing assets, go get some\""))
-           #t))))
+        (search-patches "retroarch-LIBRETRO_DIRECTORY.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -1328,7 +1319,9 @@ as RetroArch.")
                        '("--enable-neon" "--enable-floathard")
                        '())
                  (string-append "--prefix=" out)
-                 (string-append "--global-config-dir=" etc)
+                 ;; Non-free software are available through the core updater,
+                 ;; disable it.  See <http://issues.guix.gnu.org/issue/38360>.
+                 "--disable-update_cores"
                  "--disable-builtinminiupnpc")))))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -1354,6 +1347,11 @@ as RetroArch.")
      `(("pkg-config" ,pkg-config)
        ("wayland-protocols" ,wayland-protocols)
        ("which" ,which)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "LIBRETRO_DIRECTORY")
+            (separator #f)              ; single entry
+            (files '("lib/libretro")))))
     (home-page "https://www.libretro.com/")
     (synopsis "Reference frontend for the libretro API")
     (description
diff --git a/gnu/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch b/gnu/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch
new file mode 100644
index 0000000000..30515cbe48
--- /dev/null
+++ b/gnu/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch
@@ -0,0 +1,32 @@
+From f308dc91660954ab88bb41868c0b9809592923e6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <[email-masked]>
+Date: Sat, 20 Feb 2021 20:37:39 +0800
+Subject: [PATCH] Allow set libretro_directory via environment variable
+
+---
+ retroarch.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/retroarch.c b/retroarch.c
+index 6a88c3108e..6807c12b5b 100644
+--- a/retroarch.c
++++ b/retroarch.c
+@@ -36038,6 +36038,15 @@ static void retroarch_parse_input_and_config(
+ #endif
+       config_load(&p_rarch->g_extern);
+ 
++   /* Override settings via environment variables */
++   if (getenv("LIBRETRO_DIRECTORY")) {
++      settings_t *settings = p_rarch->configuration_settings;
++      retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY, NULL);
++      configuration_set_string(settings,
++            settings->paths.directory_libretro,
++            getenv("LIBRETRO_DIRECTORY"));
++   }
++
+    /* Second pass: All other arguments override the config file */
+    optind = 1;
+ 
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/retroarch-disable-online-updater.patch b/gnu/packages/patches/retroarch-disable-online-updater.patch
deleted file mode 100644
index ea74cc5409..0000000000
--- a/gnu/packages/patches/retroarch-disable-online-updater.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From: Tobias Geerinckx-Rice <[email-masked]>
-Date: Fri, 29 Nov 2019 20:32:54 +0100
-Subject: [PATCH]: gnu: retroarch: Disable the on-line updater.
-
-This disables the entire ‘Online Updater’ sub-menu to address
-<http://issues.guix.gnu.org/issue/38360>.  Perhaps that is more than is
-necessary.
-
-diff -Naur a/menu/menu_displaylist.c b/menu/menu_displaylist.c
---- a/menu/menu_displaylist.c	1970-01-01 01:00:01.000000000 +0100
-+++ b/menu/menu_displaylist.c	2019-11-29 18:35:27.467948854 +0100
-@@ -8444,11 +8444,6 @@
-                      MENU_ENUM_LABEL_NETPLAY,
-                      PARSE_ACTION, false) == 0)
-                   count++;
--            if (settings->bools.menu_show_online_updater)
--               if (menu_displaylist_parse_settings_enum(info->list,
--                     MENU_ENUM_LABEL_ONLINE_UPDATER,
--                     PARSE_ACTION, false) == 0)
--                  count++;
-             if (menu_displaylist_parse_settings_enum(info->list,
-                   MENU_ENUM_LABEL_SETTINGS, PARSE_ACTION, false) == 0)
-                count++;
-diff -Naur retroarch.a/menu/menu_setting.c retroarch.c/menu/menu_setting.c
---- a/menu/menu_setting.c	1970-01-01 01:00:01.000000000 +0100
-+++ b/menu/menu_setting.c	2019-11-29 18:35:35.753957312 +0100
-@@ -7291,14 +7291,6 @@
-                &group_info,
-                &subgroup_info,
-                parent_group);
--
--         CONFIG_ACTION(
--               list, list_info,
--               MENU_ENUM_LABEL_ONLINE_UPDATER,
--               MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER,
--               &group_info,
--               &subgroup_info,
--               parent_group);
- #endif
- 
-          CONFIG_ACTION(
-- 
2.30.0