summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-03-11 03:03:03 +0100
committerLennart Poettering <lennart@poettering.net>2011-07-28 21:22:07 +0200
commitd837d937c589e0fb11e4da8d6173ec14f121d1fa (patch)
tree2ff01cc4ab8c229147b734a1ec787245e6be2e55
parent736ddc7f014326590b0126ecc631ae83bc885ff0 (diff)
downloaddbus-d837d937c589e0fb11e4da8d6173ec14f121d1fa.tar.gz
activation: add /lib/dbus-1/system-services to the search path for services
In order to allow D-Bus usage during early boot (where /usr is not accessible) also search for bus activation files in /lib/dbus-1/system-services/. This is only a first step in the right direction, before we really can boot without /usr we'd need to move all current activation files (or possibly replace /usr/dbus-1/system-services to a symlink to /lib/dbus-1/system-services).
-rw-r--r--bus/config-parser.c4
-rw-r--r--dbus/dbus-sysdeps-unix.c16
2 files changed, 15 insertions, 5 deletions
diff --git a/bus/config-parser.c b/bus/config-parser.c
index c9dbdf93..f9432555 100644
--- a/bus/config-parser.c
+++ b/bus/config-parser.c
@@ -3395,6 +3395,10 @@ static const char *test_system_service_dir_matches[] =
"/testusr/testshare/dbus-1/system-services",
#endif
DBUS_DATADIR"/dbus-1/system-services",
+#ifdef DBUS_UNIX
+ "/lib/dbus-1/system-services",
+#endif
+
#ifdef DBUS_WIN
NULL,
#endif
diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c
index d6063713..6b230c4f 100644
--- a/dbus/dbus-sysdeps-unix.c
+++ b/dbus/dbus-sysdeps-unix.c
@@ -3633,12 +3633,18 @@ _dbus_get_standard_system_servicedirs (DBusList **dirs)
}
/*
- * add configured datadir to defaults
- * this may be the same as an xdg dir
- * however the config parser should take
- * care of duplicates
+ * Add configured datadir to defaults. This may be the same as one
+ * of the XDG directories. However, the config parser should take
+ * care of the duplicates.
+ *
+ * Also, append /lib as counterpart of /usr/share on the root
+ * directory (the root directory does not know /share), in order to
+ * facilitate early boot system bus activation where /usr might not
+ * be available.
*/
- if (!_dbus_string_append (&servicedir_path, DBUS_DATADIR":"))
+ if (!_dbus_string_append (&servicedir_path,
+ DBUS_DATADIR":"
+ "/lib:"))
goto oom;
if (!_dbus_split_paths_and_append (&servicedir_path,