All pastes #985953 Raw Edit

Unnamed

public text v1 · immutable
·published 2008-04-15 12:56 UTC
rendered paste body
=== modified file 'bin/ubiquity-dm'
--- bin/ubiquity-dm	2008-03-21 19:09:39 +0000
+++ bin/ubiquity-dm	2008-04-15 12:54:24 +0000
@@ -114,8 +114,32 @@
             time.sleep(1)
             timeout -= 1
 
+        extras = []
         if self.frontend == 'gtk_ui' or self.frontend == 'mythbuntu_ui':
-            if os.access(background, os.R_OK):
+            # Accessibility infrastructure
+            gconf_dir = ('xml:readwrite:%s' %
+                '~root/.gconf')
+            accessibility = 'false'
+            if osextras.find_on_path('gconftool-2'):
+                subp = subprocess.Popen(
+                    ['gconftool-2', '--config-source', gconf_dir,
+                     '--get', '/desktop/gnome/interface/accessibility'],
+                    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+                accessibility = subp.communicate()[0].rstrip('\n')
+            if accessibility == 'true':
+                if os.path.exists('/usr/lib/at-spi/at-spi-registryd'):
+                    extras.append(subprocess.Popen(['/usr/lib/at-spi/at-spi-registryd'],
+                        stdin=null, stdout=logfile, stderr=logfile))
+                    os.environ['GTK_MODULES'] = 'gail:atk-bridge'
+
+            maybe_drop_privileges = []
+            if accessibility != 'true':
+                maybe_drop_privileges['preexec_fn'] = self.drop_privileges
+
+            # Don't show the background image in v1 accessibility profile. It
+            # is not shown in the GNOME desktop after all.
+            fp = open('/proc/cmdline', 'r')
+            if os.access(background, os.R_OK) and not 'access=v1' in fp.readline():
                 import gtk
                 pixbuf = gtk.gdk.pixbuf_new_from_file(background)
                 root = gtk.gdk.get_default_root_window()
@@ -125,53 +149,36 @@
                 root.set_back_pixmap(pixmap, False)
                 root.clear()
                 gtk.gdk.flush()
+            fp.close()
 
-        extras = []
         if self.frontend in ('gtk_ui', 'mythbuntu_ui'):
             if osextras.find_on_path('metacity'):
                 wm = subprocess.Popen(['metacity', '--sm-disable'],
                     stdin=null, stdout=logfile, stderr=logfile,
-                    preexec_fn=self.drop_privileges)
+                    **maybe_drop_privileges)
             elif osextras.find_on_path('xfwm4'):
                 wm = subprocess.Popen('xfwm4',
                     stdin=null, stdout=logfile, stderr=logfile,
-                    preexec_fn=self.drop_privileges)
+                    **maybe_drop_privileges)
             else:
                 raise MissingProgramError, \
                     "No window manager found (tried metacity, xfwm4)"
 
             if os.path.exists('/usr/lib/gnome-settings-daemon/gnome-settings-daemon'):
                 extras.append(subprocess.Popen(['/usr/lib/gnome-settings-daemon/gnome-settings-daemon'],
-                    stdin=null, stdout=logfile, stderr=logfile, preexec_fn=self.drop_privileges))
+                    stdin=null, stdout=logfile, stderr=logfile, **maybe_drop_privileges))
 
-            # Accessibility
-            gconf_dir = ('xml:readwrite:%s' %
-                os.path.expanduser('~%s/.gconf' %
-                self.username))
-            accessibility = 'false'
-            if osextras.find_on_path('gconftool-2'):
-                subp = subprocess.Popen(
-                    ['gconftool-2', '--config-source', gconf_dir,
-                     '--get', '/desktop/gnome/interface/accessibility'],
-                    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-                accessibility = subp.communicate()[0].rstrip('\n')
+            # Accessibility tools
             if accessibility == 'true':
-                if os.path.exists('/usr/lib/at-spi/at-spi-registryd'):
-                    extras.append(subprocess.Popen(['/usr/lib/at-spi/at-spi-registryd'],
-                        stdin=null, stdout=logfile, stderr=logfile,
-                        preexec_fn=self.drop_privileges))
-                    os.environ['GTK_MODULES'] = 'gail:atk-bridge'
                 fp = open('/proc/cmdline', 'r')
                 if 'access=m2' in fp.readline():
                     if osextras.find_on_path('onboard'):
                         extras.append(subprocess.Popen(['onboard'],
-                            stdin=null, stdout=logfile, stderr=logfile,
-                            preexec_fn=self.drop_privileges))
+                            stdin=null, stdout=logfile, stderr=logfile))
                 else:
                     if osextras.find_on_path('orca'):
                         extras.append(subprocess.Popen(['orca', '-n'],
-                            stdin=null, stdout=logfile, stderr=logfile,
-                            preexec_fn=self.drop_privileges))
+                            stdin=null, stdout=logfile, stderr=logfile))
                 fp.close()
         elif self.frontend == 'kde_ui':
             wm = subprocess.Popen('kwin', stdin=null, stdout=logfile,

=== modified file 'debian/changelog'
--- debian/changelog	2008-04-15 00:49:38 +0000
+++ debian/changelog	2008-04-15 12:55:38 +0000
@@ -1,3 +1,17 @@
+ubiquity (1.8.6) UNRELEASED; urgency=low
+
+  * bin/ubiquity-dm:
+    - Move code relating to at-spi-registryd to ensure that a11y is loaded
+      before the background and window manager. (LP: #197887)
+    - Ensure that orca/onboard are only run if the a11y gconf key is set.
+    - Don't show any background image if the v1 profile is selected, similar to
+      what happens in the GNOME desktop with this profile enabled.
+    - Do not drop privileges when running the window manager,
+      gnome-settings-daemon, or any of the a11y tools. Privileges are still
+      dropped when accessibility is not enabled.
+
+ -- Luke Yelavich <luke.yelavich@canonical.com>  Tue, 15 Apr 2008 22:01:16 +1000
+
 ubiquity (1.8.5) hardy; urgency=low
 
   [ Evan Dandrea ]