activation: add /lib/dbus-1/system-services to the search path for services
authorLennart Poettering <lennart@poettering.net>
Fri, 11 Mar 2011 02:03:03 +0000 (03:03 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 28 Jul 2011 19:22:07 +0000 (21:22 +0200)
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).

bus/config-parser.c
dbus/dbus-sysdeps-unix.c

index c9dbdf9..f943255 100644 (file)
@@ -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
index d606371..6b230c4 100644 (file)
@@ -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,