aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches/gnome-tweaks-search-paths.patch
blob: e7524fa67520d85a9acd8cd981c76ce43e9b293c (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
-debbugs, guile-email, guile-debbugs-next, guile-newt, guile-mastodon, guile-parted, guile-xosd, guile-dbi, guile-dbd-sqlite3, guile-config, guile-hall, guile-ics, guile-wisp, guile-sly, g-wrap, guile-miniadapton, guile-reader, guile2.2-reader, guile-ncurses, guile-ncurses/gpm, guile-lib, guile2.0-lib, guile2.2-lib, guile-minikanren, guile2.0-minikanren, guile2.2-minikanren, guile-irregex, guile2.0-irregex, guile2.2-irregex, haunt, guile2.0-haunt, guile2.2-haunt, guile-redis, guile2.0-redis, guile2.2-redis, guile-commonmark, guile2.0-commonmark, guile2.2-commonmark, mcron, mcron2): Move these variables from here... * gnu/packages/guile-xyz.scm: ...to this new file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/installer.scm, gnu/packages/bioinformatics.scm, gnu/packages/ci.scm, gnu/packages/gtk.scm, gnu/packages/guile.scm, gnu/packages/mail.scm, gnu/packages/package-management.scm, gnu/packages/skribilo.scm, gnu/packages/web.scm, gnu/services/mcron.scm: Update module references. Ricardo Wurmus 2019-01-11services: Deprecate a few more service procedures....These procedures were already either undocumented (and de facto deprecated) or documented as deprecated or redundant. * gnu/services/base.scm (guix-service, guix-publish-service): Mark as deprecated. * gnu/services/mcron.scm (mcron-service): Likewise. * gnu/services/networking.scm (tor-service): Likewise. * doc/guix.texi (Scheduled Job Execution): Remove 'mcron-service' and adjust example. (Networking Services): Remove 'tor-service'. * gnu/tests/base.scm (%mcron-os): Use 'mcron-service-type' instead of 'mcron-service'. * gnu/tests/networking.scm (%tor-os): Use 'tor-service-type' instead of 'tor-service'. * tests/guix-system.sh: Likewise. Ludovic Courtès 2018-11-13services: mcron: Fix typo in comment....* gnu/services/mcron.scm (shepherd-schedule-action): Fix typo in comment. Ludovic Courtès 2018-07-13services: mcron: Add 'schedule' action....Inspired by <https://lists.gnu.org/archive/html/help-guix/2018-07/msg00035.html>. * gnu/services/mcron.scm (shepherd-schedule-action): New procedure. (mcron-shepherd-services): Add 'actions' field. * gnu/tests/base.scm (run-mcron-test)["schedule action"]: New test. * doc/guix.texi (Scheduled Job Execution): Mention 'herd schedule'. Ludovic Courtès 2018-03-19gnu: mcron: Update to 1.1 and deprecate "mcron2"....* gnu/packages/guile.scm (mcron): Update to 1.1. [native-inputs]: Add TZDATA-FOR-TESTS. [arguments]: New field. (mcron2): Define using 'deprecated-package'. * gnu/services/mcron.scm: Replace 'mcron2' with 'mcron'. * doc/guix.texi (Scheduled Job Execution): Likewise. * gnu/tests/base.scm (%mcron-os): Remove comment about mcron2. Ludovic Courtès 2017-04-16services: Add a default value to various service types....* gnu/services/admin.scm (rottlog-service-type)[default-value]: New field. * gnu/services/base.scm (guix-service-type)[default-value]: New field. (guix-publish-service-type)[default-value]: New field. * gnu/services/cups.scm (cups-service-type)[default-value]: New field. * gnu/services/dict.scm (dicod-service-type)[default-value]: New field. * gnu/services/mcron.scm (mcron-service-type)[default-value]: New field. * gnu/services/networking.scm (<tor-configuration>)[config-file]: Add default value. (tor-service-type)[default-value]: New field. (<bitlbee-configuration>)[interface, port, extra-settings]: Add default values. (bitlbee-service-type)[default-value]: New field. (wpa-supplicant-service-type)[default-value]: New field. (tlp-service-type)[default-value]: New field. (openssh-service-type)[default-value]: New field. * doc/guix.texi (Base Services, Log Rotation) (Networking Services, Printing Services): (Power management Services): Adjust examples accordingly. Ludovic Courtès 2016-06-22services: Add 'mcron-service'....* gnu/services/mcron.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/tests/base.scm (%mcron-os, %test-mcron): New variables. (run-mcron-test): New procedure. * doc/guix.texi (Scheduled Job Execution): New node. Ludovic Courtès