classes-dbus: General refactoring

Take the more idiomatic approach of iterating on
DBUS_PACKAGES to find files.

Change-Id: I7656316b839f666bd1b25b757bef2c14a2cee326
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-phosphor/classes/obmc-phosphor-dbus-service.bbclass b/meta-phosphor/classes/obmc-phosphor-dbus-service.bbclass
index e6132fa..3277cdb 100644
--- a/meta-phosphor/classes/obmc-phosphor-dbus-service.bbclass
+++ b/meta-phosphor/classes/obmc-phosphor-dbus-service.bbclass
@@ -1,20 +1,45 @@
-# Common code for applications providing a D-Bus service.
-
-# Class users should define DBUS_SERVICES prior to including.
+# Utilities and shortcuts for recipes providing D-Bus services.
+# Variables:
+#  DBUS_PACKAGES ?= "${PN}"
+#    The list of packages to which files should be added.
+#
+#  DBUS_SERVICE_${PN} += "org.openbmc.Foo"
+#    A list of dbus service names.  The class will look for a dbus
+#    configuration file with the same name with .conf appended.
+#
+inherit dbus-dir
+inherit obmc-phosphor-utils
 
 RDEPENDS_${PN} += "dbus-perms"
+DBUS_PACKAGES ?= "${PN}"
+
+_INSTALL_DBUS_CONFIGS=""
+
 
 python() {
-        services = d.getVar('DBUS_SERVICES', True)
-        if services:
-                uris = " ".join( [ 'file://' + s + '.conf' for s in services.split() ] )
-                d.appendVar('SRC_URI', ' ' + uris + ' ')
+    searchpaths = d.getVar('FILESPATH', True)
+
+    def add_dbus_config(d, service, pkg):
+        set_append(d, 'SRC_URI', 'file://%s.conf' % service)
+        set_append(d, 'FILES_%s' % pkg, '%s%s.conf' \
+            % (d.getVar('dbus_system_confdir', True), service))
+        set_append(d, '_INSTALL_DBUS_CONFIGS', '%s.conf' % service)
+
+
+    for pkg in listvar_to_list(d, 'DBUS_PACKAGES'):
+        services = listvar_to_list(d, 'DBUS_SERVICE_%s' % pkg)
+
+        for service in services:
+            add_dbus_config(d, service, pkg)
 }
 
+
 do_install_append() {
-        # install the service configuration files
-        install -d ${D}${sysconfdir}/dbus-1/system.d
-        for s in ${DBUS_SERVICES}; do
-                install ${WORKDIR}/$s.conf ${D}${sysconfdir}/dbus-1/system.d/$s.conf
+        # install the dbus configuration files
+        [ -z "${_INSTALL_DBUS_CONFIGS}" ] || \
+                install -d ${D}${dbus_system_confdir}
+        for c in ${_INSTALL_DBUS_CONFIGS}; do
+                install -m 0644 ${WORKDIR}/$c \
+                        ${D}${dbus_system_confdir}$c
         done
 }