Start DBus and HAL on anaconda startup if needed.
---
anaconda | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 48 insertions(+), 1 deletions(-)
diff --git a/anaconda b/anaconda
index 4bbdfc5..2e1a175 100755
--- a/anaconda
+++ b/anaconda
@@ -27,7 +27,7 @@
# This toplevel file is a little messy at the moment...
-import sys, os, re
+import sys, os, re, time, subprocess
from optparse import OptionParser
# keep up with process ID of miniwm if we start it
@@ -38,6 +38,30 @@ miniwm_pid = None
def AnacondaShowWarning(message, category, filename, lineno, file=sys.stderr):
log.warning("%s" % warnings.formatwarning(message, category, filename, lineno))
+# start DBus
+def startDBus():
+ path = "/bin/dbus-daemon"
+ if not os.access(path, os.X_OK):
+ path = "/usr/bin/dbus-daemon"
+ if not os.access(path, os.X_OK):
+ return None
+ fd = open("/dev/null","rw")
+ try:
+ pid = subprocess.Popen([path,"--system"], stdin = fd, stdout = fd, stderr = fd, close_fds = True).pid
+ except OSError:
+ return None
+ return pid
+
+def startHal(root='/'):
+ if not os.access("/usr/sbin/hald", os.X_OK):
+ return None
+ fd = open("/dev/null","rw")
+ try:
+ pid = subprocess.Popen(["/usr/sbin/hald","--use-syslog","--verbose=yes"], stdin = fd, stdout = fd, stderr = fd, close_fds = True).pid
+ except OSError:
+ return None
+ return pid
+
# start miniWM
def startMiniWM(root='/'):
(rd, wr) = os.pipe()
@@ -655,6 +679,29 @@ if __name__ == "__main__":
except:
pass
+ # setup dbus, hal, if necessary
+ if not flags.test:
+ import dbus
+
+ try:
+ bus = dbus.SystemBus()
+ except dbus.exceptions.DBusException:
+ log.info("Starting message bus...")
+ pid = startDBus()
+ if not pid:
+ log.error("Unable to start message bus")
+ time.sleep(5)
+ bus = dbus.SystemBus()
+
+ try:
+ halobj = bus.get_object("org.freedesktop.Hal","/org/freedesktop/Hal/Manager")
+ except dbus.exceptions.DBusException:
+ log.info("Starting HAL daemon...")
+ pid = startHal()
+ if not pid:
+ log.error("Unable to start HAL daemon")
+ time.sleep(5)
+
#
# must specify install, rescue mode
#
--
1.5.3.4
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list