Switch to using dconf
* Add dconf and dependencies to the moduleset and add libxml2 dependency to gnome-shell-build-setup.sh * if we can't ping the dconf D-Bus service, try to activate it manually. * Stop forcing GConf via GSETTINGS_BACKEND https://bugzilla.gnome.org/show_bug.cgi?id=622308
This commit is contained in:
parent
a160e31c2a
commit
e8b72a2a59
@ -16,7 +16,6 @@ progName="`basename $0`"
|
|||||||
localeDir="@localedir@"
|
localeDir="@localedir@"
|
||||||
uiFile="$uiDir/clock-preferences.ui"
|
uiFile="$uiDir/clock-preferences.ui"
|
||||||
export GJS_PATH="$jsDir"
|
export GJS_PATH="$jsDir"
|
||||||
export GSETTINGS_BACKEND="gconf"
|
|
||||||
export GSETTINGS_SCHEMA_DIR="$schemaDir"
|
export GSETTINGS_SCHEMA_DIR="$schemaDir"
|
||||||
|
|
||||||
@GJS_CONSOLE@ -c "const ClockPreferences = imports.prefs.clockPreferences;
|
@GJS_CONSOLE@ -c "const ClockPreferences = imports.prefs.clockPreferences;
|
||||||
|
@ -3,6 +3,9 @@
|
|||||||
|
|
||||||
import atexit
|
import atexit
|
||||||
import datetime
|
import datetime
|
||||||
|
import dbus
|
||||||
|
from dbus.mainloop.glib import DBusGMainLoop
|
||||||
|
import gobject
|
||||||
try:
|
try:
|
||||||
import json
|
import json
|
||||||
except ImportError:
|
except ImportError:
|
||||||
@ -119,6 +122,60 @@ def start_xephyr():
|
|||||||
|
|
||||||
return xephyr;
|
return xephyr;
|
||||||
|
|
||||||
|
def start_dconf_await_service():
|
||||||
|
DCONF_NAME = 'ca.desrt.dconf'
|
||||||
|
|
||||||
|
dbus_loop = DBusGMainLoop()
|
||||||
|
bus = dbus.SessionBus(mainloop=dbus_loop)
|
||||||
|
|
||||||
|
# See if the service is already running or normal D-Bus activation works
|
||||||
|
need_manual_activate = False
|
||||||
|
try:
|
||||||
|
dconf_proxy = bus.get_object(DCONF_NAME, '/')
|
||||||
|
dconf_proxy.Ping(dbus_interface='org.freedesktop.DBus.Peer')
|
||||||
|
except dbus.exceptions.DBusException, e:
|
||||||
|
if e.get_dbus_name() == 'org.freedesktop.DBus.Error.ServiceUnknown':
|
||||||
|
need_manual_activate = True
|
||||||
|
else:
|
||||||
|
raise e
|
||||||
|
|
||||||
|
if not need_manual_activate:
|
||||||
|
return
|
||||||
|
|
||||||
|
# At this point, it looks like we just have a jhbuild install
|
||||||
|
# of dconf, not known to the session dbus-daemon, so we start
|
||||||
|
# it manually and wait for it to join the bus
|
||||||
|
|
||||||
|
print "Starting dconf-service... ",
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
dconf_path = os.path.join('@libexecdir@', 'dconf-service')
|
||||||
|
try:
|
||||||
|
subprocess.Popen([dconf_path, '--keep-alive'])
|
||||||
|
except OSError, e:
|
||||||
|
print "\nFailed to start %s: %s" % (dconf_path, e)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
bus_proxy = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
|
||||||
|
bus_iface = dbus.Interface(bus_proxy, 'org.freedesktop.DBus')
|
||||||
|
|
||||||
|
loop = gobject.MainLoop()
|
||||||
|
|
||||||
|
def on_name_owner_changed(name, prev_owner, new_owner):
|
||||||
|
if not (name == DCONF_NAME and new_owner != ''):
|
||||||
|
return
|
||||||
|
print "started"
|
||||||
|
loop.quit()
|
||||||
|
return
|
||||||
|
bus_iface.connect_to_signal('NameOwnerChanged', on_name_owner_changed)
|
||||||
|
|
||||||
|
def on_timeout():
|
||||||
|
print "\nFailed to start %s: timed out" % (dconf_path,)
|
||||||
|
sys.exit(1)
|
||||||
|
gobject.timeout_add_seconds(7, on_timeout)
|
||||||
|
|
||||||
|
loop.run()
|
||||||
|
|
||||||
GLXINFO_RE = re.compile(r"^(\S.*):\s*\n((?:^\s+.*\n)*)", re.MULTILINE)
|
GLXINFO_RE = re.compile(r"^(\S.*):\s*\n((?:^\s+.*\n)*)", re.MULTILINE)
|
||||||
|
|
||||||
def _get_glx_extensions():
|
def _get_glx_extensions():
|
||||||
@ -155,7 +212,6 @@ def start_shell(perf_output=None):
|
|||||||
# Set up environment
|
# Set up environment
|
||||||
env = dict(os.environ)
|
env = dict(os.environ)
|
||||||
env.update({'GNOME_SHELL_JS' : '@GJS_JS_DIR@:@GJS_JS_NATIVE_DIR@:' + js_dir,
|
env.update({'GNOME_SHELL_JS' : '@GJS_JS_DIR@:@GJS_JS_NATIVE_DIR@:' + js_dir,
|
||||||
'GSETTINGS_BACKEND' : 'gconf',
|
|
||||||
'PATH' : '@MUTTER_BIN_DIR@:' + os.environ.get('PATH', ''),
|
'PATH' : '@MUTTER_BIN_DIR@:' + os.environ.get('PATH', ''),
|
||||||
'XDG_CONFIG_DIRS' : '@sysconfdir@/xdg:' + (os.environ.get('XDG_CONFIG_DIRS') or '/etc/xdg'),
|
'XDG_CONFIG_DIRS' : '@sysconfdir@/xdg:' + (os.environ.get('XDG_CONFIG_DIRS') or '/etc/xdg'),
|
||||||
'GNOME_DISABLE_CRASH_DIALOG' : '1'})
|
'GNOME_DISABLE_CRASH_DIALOG' : '1'})
|
||||||
@ -656,8 +712,6 @@ if 'DISPLAY' not in os.environ:
|
|||||||
os.environ.update(running_env)
|
os.environ.update(running_env)
|
||||||
|
|
||||||
if options.eval_file:
|
if options.eval_file:
|
||||||
import dbus
|
|
||||||
|
|
||||||
f = open(options.eval_file)
|
f = open(options.eval_file)
|
||||||
contents = f.read()
|
contents = f.read()
|
||||||
f.close()
|
f.close()
|
||||||
@ -694,6 +748,9 @@ else:
|
|||||||
# something else.
|
# something else.
|
||||||
normal_exit = False
|
normal_exit = False
|
||||||
|
|
||||||
|
# Make sure dconf daemon is running
|
||||||
|
start_dconf_await_service()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if options.perf:
|
if options.perf:
|
||||||
normal_exit = run_performance_test()
|
normal_exit = run_performance_test()
|
||||||
|
@ -48,8 +48,8 @@ fi
|
|||||||
#
|
#
|
||||||
# Devel packages needed by gnome-shell and its deps:
|
# Devel packages needed by gnome-shell and its deps:
|
||||||
# dbus-glib, gconf, GL, gnome-menus, gstreamer, gtk, libffi,
|
# dbus-glib, gconf, GL, gnome-menus, gstreamer, gtk, libffi,
|
||||||
# libgnomeui, librsvg, libwnck, python, readline, spidermonkey
|
# libgnomeui, librsvg, libwnck, libxml2, python, readline,
|
||||||
# ({mozilla,firefox,xulrunner}-js), xdamage
|
# spidermonkey ({mozilla,firefox,xulrunner}-js), xdamage
|
||||||
#
|
#
|
||||||
# Non-devel packages needed by gnome-shell and its deps:
|
# Non-devel packages needed by gnome-shell and its deps:
|
||||||
# glxinfo, gstreamer-plugins-base, gstreamer-plugins-good,
|
# glxinfo, gstreamer-plugins-base, gstreamer-plugins-good,
|
||||||
@ -79,7 +79,7 @@ if test x$system = xUbuntu -o x$system = xDebian -o x$system = xLinuxMint ; then
|
|||||||
automake bison flex git-core gnome-common gtk-doc-tools \
|
automake bison flex git-core gnome-common gtk-doc-tools \
|
||||||
libdbus-glib-1-dev libgconf2-dev libgtk2.0-dev libffi-dev \
|
libdbus-glib-1-dev libgconf2-dev libgtk2.0-dev libffi-dev \
|
||||||
libgnome-menu-dev libgnome-desktop-dev librsvg2-dev libwnck-dev libgl1-mesa-dev \
|
libgnome-menu-dev libgnome-desktop-dev librsvg2-dev libwnck-dev libgl1-mesa-dev \
|
||||||
libreadline5-dev mesa-common-dev mesa-utils python-dev python-gconf python-gobject \
|
libreadline5-dev libxml2-dev mesa-common-dev mesa-utils python-dev python-gconf python-gobject \
|
||||||
xulrunner-dev xserver-xephyr gnome-terminal libcroco3-dev \
|
xulrunner-dev xserver-xephyr gnome-terminal libcroco3-dev \
|
||||||
libgstreamer0.10-dev gstreamer0.10-plugins-base gstreamer0.10-plugins-good \
|
libgstreamer0.10-dev gstreamer0.10-plugins-base gstreamer0.10-plugins-good \
|
||||||
; do
|
; do
|
||||||
@ -101,9 +101,9 @@ if test x$system = xFedora ; then
|
|||||||
automake bison flex git gnome-common gnome-doc-utils intltool \
|
automake bison flex git gnome-common gnome-doc-utils intltool \
|
||||||
libtool pkgconfig \
|
libtool pkgconfig \
|
||||||
dbus-glib-devel GConf2-devel gnome-menus-devel gnome-python2-gconf gtk2-devel libffi-devel \
|
dbus-glib-devel GConf2-devel gnome-menus-devel gnome-python2-gconf gtk2-devel libffi-devel \
|
||||||
gnome-desktop-devel librsvg2-devel libwnck-devel mesa-libGL-devel python-devel pygobject2 \
|
gnome-desktop-devel librsvg2-devel libwnck-devel mesa-libGL-devel \
|
||||||
readline-devel xulrunner-devel libXdamage-devel libcroco-devel \
|
python-devel pygobject2 readline-devel xulrunner-devel libXdamage-devel libcroco-devel \
|
||||||
gstreamer-devel gstreamer-plugins-base gstreamer-plugins-good \
|
libxml2-devel gstreamer-devel gstreamer-plugins-base gstreamer-plugins-good \
|
||||||
glx-utils xorg-x11-server-Xephyr gnome-terminal zenity \
|
glx-utils xorg-x11-server-Xephyr gnome-terminal zenity \
|
||||||
; do
|
; do
|
||||||
if ! rpm -q $pkg > /dev/null 2>&1; then
|
if ! rpm -q $pkg > /dev/null 2>&1; then
|
||||||
|
@ -21,6 +21,23 @@
|
|||||||
<branch repo="git.gnome.org" module="glib"/>
|
<branch repo="git.gnome.org" module="glib"/>
|
||||||
</autotools>
|
</autotools>
|
||||||
|
|
||||||
|
<tarball id="vala" version="0.9.2" autogenargs="--enable-vapigen">
|
||||||
|
<source href="http://ftp.gnome.org/pub/GNOME/sources/vala/0.9/vala-0.9.2.tar.bz2"
|
||||||
|
hash="sha256:22e1e224790663929f5df8b0611bd4928c065a8354ee7cdd2c97b6b37ed33c1d"
|
||||||
|
md5sum="583f2c46da49f54e4f639eb706475abe" size="2358061"/>
|
||||||
|
<dependencies>
|
||||||
|
<dep package="glib"/>
|
||||||
|
</dependencies>
|
||||||
|
</tarball>
|
||||||
|
|
||||||
|
<autotools id="libgee">
|
||||||
|
<branch repo="git.gnome.org" module="libgee"/>
|
||||||
|
<dependencies>
|
||||||
|
<dep package="vala"/>
|
||||||
|
<dep package="glib"/>
|
||||||
|
</dependencies>
|
||||||
|
</autotools>
|
||||||
|
|
||||||
<autotools id="atk">
|
<autotools id="atk">
|
||||||
<branch repo="git.gnome.org" module="atk"/>
|
<branch repo="git.gnome.org" module="atk"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -84,6 +101,16 @@
|
|||||||
</after>
|
</after>
|
||||||
</autotools>
|
</autotools>
|
||||||
|
|
||||||
|
<autotools id="dconf">
|
||||||
|
<branch repo="git.gnome.org" module="dconf"/>
|
||||||
|
<dependencies>
|
||||||
|
<dep package="glib"/>
|
||||||
|
<dep package="gobject-introspection"/>
|
||||||
|
<dep package="libgee"/>
|
||||||
|
<dep package="vala"/>
|
||||||
|
</dependencies>
|
||||||
|
</autotools>
|
||||||
|
|
||||||
<autotools id="gconf" autogenargs="--disable-defaults-service">
|
<autotools id="gconf" autogenargs="--disable-defaults-service">
|
||||||
<branch repo="git.gnome.org" module="gconf"/>
|
<branch repo="git.gnome.org" module="gconf"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -108,6 +135,7 @@
|
|||||||
<dep package="gobject-introspection"/>
|
<dep package="gobject-introspection"/>
|
||||||
<dep package="mutter"/>
|
<dep package="mutter"/>
|
||||||
<dep package="gjs"/>
|
<dep package="gjs"/>
|
||||||
|
<dep package="dconf"/>
|
||||||
<dep package="gconf"/>
|
<dep package="gconf"/>
|
||||||
<dep package="glib"/>
|
<dep package="glib"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
Loading…
Reference in New Issue
Block a user