summaryrefslogtreecommitdiff
path: root/data/Makefile.am
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2011-10-18 17:34:56 -0400
committerRay Strode <rstrode@redhat.com>2011-10-18 20:45:59 -0400
commit25004e4d11bbd2e8a22d5bcf49f294e9f63d2ce5 (patch)
tree9cc513448d99561aca2aed2637e15496a2ec9af8 /data/Makefile.am
parente6dad812f60c3e043ec74839f33f6574f2f3529a (diff)
downloadgdm-25004e4d11bbd2e8a22d5bcf49f294e9f63d2ce5.tar.gz
data: change the way we do dconf
We currently generate a complete, binary dconf database as part of the install process. In general, system administrators can change dconf settings system-wide using a mechanism described here: https://live.gnome.org/dconf/SystemAdministrators Unfortunately, because of the way we generate our database, any administrator overrides will get discarded during package upgrade, and likewise, our carefully vetted database will get destroyed on any site administrator updates. Rather than step on each others toes, this commit changes GDM to use the same mechanism described above. This should make upstream defaults and system defaults coexist much better. Note, the mechanism used isn't quite as featureful as we would really like. It doesn't support wildcards or changing whole subtrees at a time. That means, in theory, if a new plugin gets added to settings daemon it could be marked active at the login screen without being vetted first. To circumvent this, we add a layer of indirection in and some gross shell scripting to give us the features we need. Distributions should probably run /usr/libexec/gdm-update-dconf-db \ gdm \ /usr/share/gdm/upstream-settings \ 00-upstream-settings In there post transaction hooks, but at a minimum need to run dconf update.
Diffstat (limited to 'data/Makefile.am')
-rw-r--r--data/Makefile.am28
1 files changed, 18 insertions, 10 deletions
diff --git a/data/Makefile.am b/data/Makefile.am
index 3175436f..c9b2d749 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -88,6 +88,12 @@ localealias_DATA = locale.alias
sessiondir = $(datadir)/gnome-session/sessions
session_DATA = gdm-fallback.session gdm-shell.session
+settingsdir = $(datadir)/gdm
+settings_DATA = $(srcdir)/upstream-settings
+
+dconfthingdir = $(libexecdir)
+dconfthing_SCRIPTS = $(srcdir)/gdm-update-dconf-db
+
EXTRA_DIST = \
$(schemas_in_files) \
$(schemas_DATA) \
@@ -107,8 +113,9 @@ EXTRA_DIST = \
gconf.path \
session-setup.entries \
gdm-shell.session.in \
- make-dconf-override-db.sh \
+ gdm-update-dconf-db \
dconf-profile \
+ upstream-settings \
org.gnome.login-screen.gschema.xml.in \
$(NULL)
@@ -118,7 +125,6 @@ CLEANFILES = \
Init \
PreSession \
PostSession \
- dconf-override-db \
$(gsettings_SCHEMAS) \
$(NULL)
@@ -126,19 +132,18 @@ DISTCLEANFILES = \
$(dbusconf_DATA) \
gdm-shell.session \
gdm.schemas \
- dconf-override-db \
$(NULL)
MAINTAINERCLEANFILES = \
*~ \
- dconf-override-db \
Makefile.in
-dconf-override-db: $(srcdir)/make-dconf-override-db.sh
- $(srcdir)/make-dconf-override-db.sh
+00-upstream-settings 00-upstream-settings-locks: $(srcdir)/gdm-update-dconf-db
+ $(srcdir)/gdm-update-dconf-db $(srcdir)/upstream-settings 00-upstream-settings
-dist-hook: $(srcdir)/dconf-override-db
- cp $(srcdir)/dconf-override-db $(distdir)
+dist-hook:
+ cp $(srcdir)/00-upstream-settings $(distdir)
+ cp $(srcdir)/00-upstream-settings-locks $(distdir)
uninstall-hook:
rm -f \
@@ -155,6 +160,7 @@ uninstall-hook:
$(DESTDIR)$(sysconfdir)/dconf/db/gdm \
$(DESTDIR)$(sysconfdir)/dconf/profile/gdm \
-rf \
+ $(DESTDIR)$(sysconfdir)/dconf/db/gdm.d \
$(DESTDIR)$(workingdir)/.gconf.mandatory \
$(DESTDIR)$(workingdir)/.config/dconf \
$(DESTDIR)$(screenshotdir) \
@@ -166,7 +172,7 @@ uninstall-hook:
$(DESTDIR)$(sysconfdir)/dconf/db \
$(DESTDIR)$(sysconfdir)/dconf
-install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path dconf-override-db
+install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path 00-upstream-settings 00-upstream-settings-locks
if test '!' -d $(DESTDIR)$(gdmconfdir); then \
$(mkinstalldirs) $(DESTDIR)$(gdmconfdir); \
chmod 755 $(DESTDIR)$(gdmconfdir); \
@@ -310,5 +316,7 @@ install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.pa
chmod 1750 $(DESTDIR)$(workingdir)/.gconf.mandatory
chmod 1640 $(DESTDIR)$(workingdir)/.gconf.mandatory/*.xml
- $(INSTALL_DATA) $(srcdir)/dconf-override-db $(DESTDIR)$(sysconfdir)/dconf/db/gdm
$(INSTALL_DATA) $(srcdir)/dconf-profile $(DESTDIR)$(sysconfdir)/dconf/profile/gdm
+ $(INSTALL_DATA) $(srcdir)/00-upstream-settings $(DESTDIR)$(sysconfdir)/dconf/db/gdm.d
+ $(INSTALL_DATA) $(srcdir)/00-upstream-settings-locks $(DESTDIR)$(sysconfdir)/dconf/db/gdm.d/locks
+ dconf update || :