From d13f3a033e42b4a14d581390b8fa36cd1db7d023 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus <rekado@elephly.net>
Date: Thu, 6 Dec 2018 12:22:34 +0100
Subject: gnu: gnome-tweak-tool: Update to 3.28.1.

Fixes <https://bugs.gnu.org/35597>.

* gnu/packages/gnome.scm (gnome-tweak-tool): Deprecate and rename...
(gnome-tweaks): ...to this.  Update to 3.28.1.
[build-system]: Use meson-build-system.
[arguments]: Adjust configure flags; pass glib-or-gtk? flag; remove custom
phases that are now provided by the meson-build-system; add phases "wrap" and
"wrap-gi-typelib".
[native-inputs]: Remove meson-for-build and ninja.
[home-page]: Update.
[description]: Use "Tweaks" instead of "Tweak Tool".
* gnu/packages/patches/gnome-tweak-tool-search-paths.patch: Rename file...
* gnu/packages/patches/gnome-tweaks-search-paths.patch: ...to this.
* gnu/local.mk (dist_patch_DATA): Update patch file name.
---
 gnu/local.mk                                       |  2 +-
 gnu/packages/gnome.scm                             | 66 ++++++++++------------
 .../patches/gnome-tweak-tool-search-paths.patch    | 52 -----------------
 .../patches/gnome-tweaks-search-paths.patch        | 52 +++++++++++++++++
 4 files changed, 83 insertions(+), 89 deletions(-)
 delete mode 100644 gnu/packages/patches/gnome-tweak-tool-search-paths.patch
 create mode 100644 gnu/packages/patches/gnome-tweaks-search-paths.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 3f97397c4a..133293aad3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -862,7 +862,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gmp-arm-asm-nothumb.patch		\
   %D%/packages/patches/gmp-faulty-test.patch			\
   %D%/packages/patches/gnome-shell-theme.patch			\
-  %D%/packages/patches/gnome-tweak-tool-search-paths.patch	\
+  %D%/packages/patches/gnome-tweaks-search-paths.patch		\
   %D%/packages/patches/gnucash-fix-test-transaction-failure.patch \
   %D%/packages/patches/gnutls-skip-trust-store-test.patch	\
   %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 7c40a39f01..e1d2a65ccb 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -6777,51 +6777,41 @@ fit the GNOME desktop.")
 existing databases over the internet.")
     (license license:gpl3+)))
 
-(define-public gnome-tweak-tool
+(define-public gnome-tweaks
   (package
-    (name "gnome-tweak-tool")
-    (version "3.26.4")
+    (name "gnome-tweaks")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/gnome-tweak-tool/"
+              (uri (string-append "mirror://gnome/sources/gnome-tweaks/"
                                   (version-major+minor version) "/"
-                                  "gnome-tweak-tool-" version ".tar.xz"))
-              (patches (list
-                        (search-patch "gnome-tweak-tool-search-paths.patch")))
+                                  "gnome-tweaks-" version ".tar.xz"))
+              (patches
+               (list (search-patch "gnome-tweaks-search-paths.patch")))
               (sha256
                (base32
-                "1pq5a0kzh1sz7s7ax5c7p6212k9d51nk5bfvjfyqn99cs928187x"))))
-    (build-system glib-or-gtk-build-system)
+                "1p5xydr0haz4389h6dvvbna6i1mipdzvmlfksnv0jqfvfs9sy6fp"))))
+    (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("--localstatedir=/tmp"
-                           "--sysconfdir=/tmp")
+     `(#:glib-or-gtk? #t
+       #:configure-flags '("-Dlocalstatedir=/tmp"
+                           "-Dsysconfdir=/tmp")
        #:imported-modules ((guix build python-build-system)
-                           ,@%glib-or-gtk-build-system-modules)
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (replace 'build
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (invoke "meson" "build"
-                                      "--prefix" (assoc-ref outputs "out"))))
-                  (replace 'check
-                    (lambda _ (invoke "ninja" "-C" "build" "test")))
-                  (replace 'install
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (invoke "ninja" "-C" "build" "install")))
-                  (add-after 'install 'wrap-program
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let ((out               (assoc-ref outputs "out"))
-                            (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
-                        (wrap-program (string-append out "/bin/gnome-tweak-tool")
-                          `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
-                      #t))
-                  (add-after 'install 'wrap
-                    (@@ (guix build python-build-system) wrap)))))
+                           ,@%meson-build-system-modules)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap
+           (@@ (guix build python-build-system) wrap))
+         (add-after 'wrap 'wrap-gi-typelib
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out               (assoc-ref outputs "out"))
+                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/gnome-tweaks")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+             #t)))))
     (native-inputs
      `(("gtk+:bin" ,gtk+ "bin")         ; For gtk-update-icon-cache
        ("intltool" ,intltool)
-       ("meson" ,meson-for-build)
-       ("ninja" ,ninja)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gnome-desktop" ,gnome-desktop)
@@ -6834,14 +6824,18 @@ existing databases over the internet.")
        ("python" ,python)
        ("python-pygobject" ,python-pygobject)))
     (synopsis "Customize advanced GNOME 3 options")
-    (home-page "https://wiki.gnome.org/action/show/Apps/GnomeTweakTool")
+    (home-page "https://wiki.gnome.org/Apps/Tweaks")
     (description
-     "GNOME Tweak Tool allows adjusting advanced configuration settings in
+     "GNOME Tweaks allows adjusting advanced configuration settings in
 GNOME 3.  This includes things like the fonts used in user interface elements,
 alternative user interface themes, changes in window management behavior,
 GNOME Shell appearance and extension, etc.")
     (license license:gpl3+)))
 
+;; This package has been renamed by upstream.
+(define-public gnome-tweak-tool
+  (deprecated-package "gnome-tweak-tool" gnome-tweaks))
+
 (define-public gnome-shell-extensions
   (package
     (name "gnome-shell-extensions")
diff --git a/gnu/packages/patches/gnome-tweak-tool-search-paths.patch b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
deleted file mode 100644
index 027c61b3af..0000000000
--- a/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-Gnome-tweak-tool does not look at GSETTINGS_SCHEMA_PATH or XDG_DATA_DIRS, it
-assumes that schemas are installed in one global directory
-(GSETTINGS_SCHEMA_DIR/gsettingsschemadir).
-
-Guix/GuixSD uses a different directory for every gir package and has
-packages pick-up files using XDG_DATA_DIRS.
-
-Upstream ticket: https://bugzilla.gnome.org/show_bug.cgi?id=764537
-janneke@gnu.org
-
---- gnome-tweak-tool-3.18.1.orig/gtweak/gsettings.py	2015-04-08 15:21:32.000000000 +0200
-+++ gnome-tweak-tool-3.18.1/gtweak/gsettings.py	2016-04-03 11:26:38.658482704 +0200
-@@ -16,7 +16,8 @@
- # along with gnome-tweak-tool.  If not, see <http://www.gnu.org/licenses/>.
- 
- import logging
--import os.path
-+import os
-+import sys
- import xml.dom.minidom
- import gettext
- 
-@@ -31,6 +32,13 @@
- class GSettingsMissingError(Exception):
-     pass
- 
-+def file_from_path(path, file_name):
-+    for dir in path:
-+        f = os.path.join(dir, file_name)
-+        if os.path.exists(f):
-+            return f
-+    return None
-+
- class _GSettingsSchema:
-     def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options):
-         if not schema_dir:
-@@ -38,9 +46,14 @@
-         if not schema_filename:
-             schema_filename = schema_name + ".gschema.xml"
- 
-+        schema_prefix = os.path.join('glib-2.0', 'schemas')
-         schema_path = os.path.join(schema_dir, schema_filename)
-         if not os.path.exists(schema_path):
--            logging.critical("Could not find schema %s" % schema_path)
-+            schema_path = file_from_path(os.environ.get ('GSETTINGS_SCHEMA_PATH', '').split(os.path.pathsep), schema_filename)
-+        if not (schema_path and os.path.exists(schema_path)):
-+            schema_path = file_from_path(os.environ.get ('XDG_DATA_DIRS', '').split(os.path.pathsep), os.path.join(schema_prefix, schema_filename))
-+        if not (schema_path and os.path.exists(schema_path)):
-+            logging.critical("Could not find schema %s" % schema_filename)
-             assert(False)
- 
-         self._schema_name = schema_name
diff --git a/gnu/packages/patches/gnome-tweaks-search-paths.patch b/gnu/packages/patches/gnome-tweaks-search-paths.patch
new file mode 100644
index 0000000000..e7524fa675
--- /dev/null
+++ b/gnu/packages/patches/gnome-tweaks-search-paths.patch
@@ -0,0 +1,52 @@
+Gnome-tweaks does not look at GSETTINGS_SCHEMA_PATH or XDG_DATA_DIRS, it
+assumes that schemas are installed in one global directory
+(GSETTINGS_SCHEMA_DIR/gsettingsschemadir).
+
+Guix/GuixSD uses a different directory for every gir package and has
+packages pick-up files using XDG_DATA_DIRS.
+
+Upstream ticket: https://bugzilla.gnome.org/show_bug.cgi?id=764537
+janneke@gnu.org
+
+--- gnome-tweak-3.18.1.orig/gtweak/gsettings.py	2015-04-08 15:21:32.000000000 +0200
++++ gnome-tweak-tool-3.18.1/gtweak/gsettings.py	2016-04-03 11:26:38.658482704 +0200
+@@ -16,7 +16,8 @@
+ # along with gnome-tweak-tool.  If not, see <http://www.gnu.org/licenses/>.
+ 
+ import logging
+-import os.path
++import os
++import sys
+ import xml.dom.minidom
+ import gettext
+ 
+@@ -31,6 +32,13 @@
+ class GSettingsMissingError(Exception):
+     pass
+ 
++def file_from_path(path, file_name):
++    for dir in path:
++        f = os.path.join(dir, file_name)
++        if os.path.exists(f):
++            return f
++    return None
++
+ class _GSettingsSchema:
+     def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options):
+         if not schema_dir:
+@@ -38,9 +46,14 @@
+         if not schema_filename:
+             schema_filename = schema_name + ".gschema.xml"
+ 
++        schema_prefix = os.path.join('glib-2.0', 'schemas')
+         schema_path = os.path.join(schema_dir, schema_filename)
+         if not os.path.exists(schema_path):
+-            logging.critical("Could not find schema %s" % schema_path)
++            schema_path = file_from_path(os.environ.get ('GSETTINGS_SCHEMA_PATH', '').split(os.path.pathsep), schema_filename)
++        if not (schema_path and os.path.exists(schema_path)):
++            schema_path = file_from_path(os.environ.get ('XDG_DATA_DIRS', '').split(os.path.pathsep), os.path.join(schema_prefix, schema_filename))
++        if not (schema_path and os.path.exists(schema_path)):
++            logging.critical("Could not find schema %s" % schema_filename)
+             assert(False)
+ 
+         self._schema_name = schema_name
-- 
cgit v1.2.3