slpd-lite:Create Recipe

-Create the slpd-lite.conf through the bbclass
-Create the service file which starts the slpd

Change-Id: I10b23bb81492270337e02470c75094eff30b4190
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/classes/obmc-phosphor-discovery-service.bbclass b/classes/obmc-phosphor-discovery-service.bbclass
index 8dc6fdc..9b66e7e 100644
--- a/classes/obmc-phosphor-discovery-service.bbclass
+++ b/classes/obmc-phosphor-discovery-service.bbclass
@@ -4,17 +4,25 @@
 python() {
     avahi_enabled = bb.utils.contains(
             'DISTRO_FEATURES', 'avahi', 'true', 'false', d)
-    slp_enabled = False # later
+    slp_enabled = bb.utils.contains(
+            'DISTRO_FEATURES', 'slp', 'true', 'false', d)
+
 
     if not avahi_enabled and slp_enabled:
         return
 
     syscnfdir = d.getVar('sysconfdir', True)
     dest_dir = d.getVar('D', True)
+
     set_append(d, 'AVAHI_SERVICES_DIR', os.path.join(
         dest_dir+syscnfdir,
         'avahi',
         'services'))
+    set_append(d, 'SLP_SERVICES_DIR', os.path.join(
+        dest_dir+syscnfdir,
+        'slp',
+        'services'))
+
 
     for pkg in listvar_to_list(d, 'DISCOVERY_SVC_PACKAGES'):
         for service in listvar_to_list(d, 'REGISTERED_SERVICES_%s' % pkg):
@@ -26,24 +34,39 @@
                     'avahi',
                     'services',
                     '%s.service' % svc_name))
+
+            if slp_enabled:
+                set_append(d, 'RRECOMMENDS_%s' % pkg, 'slpd-lite')
+                svc_name, svc_type, svc_port = service.split(':')
+                set_append(d, 'FILES_%s' % pkg, os.path.join(
+                    syscnfdir,
+                    'slp',
+                    'services',
+                    '%s.service' % svc_name))
+
 }
 
 python discovery_services_postinstall() {
     avahi_enabled = bb.utils.contains(
             'DISTRO_FEATURES', 'avahi', 'true', 'false', d)
-    slp_enabled = False # later
+    slp_enabled = bb.utils.contains(
+            'DISTRO_FEATURES', 'slp', 'true', 'false', d)
 
     if not avahi_enabled and slp_enabled:
         return
 
-    service_dir = d.getVar('AVAHI_SERVICES_DIR', True)
+    avahi_service_dir = d.getVar('AVAHI_SERVICES_DIR', True)
+    slp_service_dir = d.getVar('SLP_SERVICES_DIR', True)
 
-    if not os.path.exists(service_dir):
-        os.makedirs(service_dir)
+    if not os.path.exists(avahi_service_dir):
+        os.makedirs(avahi_service_dir)
+
+    if not os.path.exists(slp_service_dir):
+        os.makedirs(slp_service_dir)
 
     def register_service_avahi(d, service_name, service_type, service_port):
         service_file = os.path.join(
-            service_dir,
+            avahi_service_dir,
             '%s.service' % service_name)
         with open(service_file, 'w') as fd:
             fd.write('<?xml version="1.0" ?>\n')
@@ -56,21 +79,29 @@
             fd.write('        </service>\n')
             fd.write('</service-group>\n')
 
+
+    def register_service_slp(d, service_name, service_type, service_port):
+        service_file = os.path.join(
+            slp_service_dir,
+            '%s.service' % service_name)
+        with open(service_file, 'w') as fd:
+            fd.write('%s %s %s' % (service_name, service_type, service_port))
+
     def register_services(d,pkg):
         for service in listvar_to_list(d, 'REGISTERED_SERVICES_%s' % pkg):
             svc_info = service.split(":")
             try:
                 svc_name, svc_type, svc_port = svc_info
-                svc_type = "_" + svc_name + "._" + svc_type
             except:
                 continue
             if avahi_enabled:
-                register_service_avahi(d, svc_name, svc_type, svc_port)
+                avahi_svc_type = "_" + svc_name + "._" + svc_type
+                register_service_avahi(d, svc_name, avahi_svc_type, svc_port)
+            if slp_enabled:
+                register_service_slp(d, svc_name, svc_type, svc_port)
 
     for pkg in listvar_to_list(d, 'DISCOVERY_SVC_PACKAGES'):
         register_services(d, pkg)
 
 }
 do_install[postfuncs] += "discovery_services_postinstall"
-
-
diff --git a/common/recipes-phosphor/slpd-lite/slpd-lite.bb b/common/recipes-phosphor/slpd-lite/slpd-lite.bb
new file mode 100644
index 0000000..0f3ac5c
--- /dev/null
+++ b/common/recipes-phosphor/slpd-lite/slpd-lite.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Lightweight SLP Server"
+DESCRIPTION = "Lightweight Unicast-only SLP Server"
+HOMEPAGE = "http://github.com/openbmc/slpd-lite"
+PR = "r1"
+
+inherit autotools pkgconfig
+inherit obmc-phosphor-license
+inherit obmc-phosphor-systemd
+
+SYSTEMD_SERVICE_${PN} += "slpd-lite.service"
+
+DEPENDS += "systemd"
+DEPENDS += "autoconf-archive-native"
+
+SRC_URI += "git://github.com/openbmc/slpd-lite"
+
+SRCREV = "70b8527104281ffd927c087480fbe1168a75fe93"
+
+S = "${WORKDIR}/git"
diff --git a/common/recipes-phosphor/slpd-lite/slpd-lite/slpd-lite.service b/common/recipes-phosphor/slpd-lite/slpd-lite/slpd-lite.service
new file mode 100644
index 0000000..02d593c
--- /dev/null
+++ b/common/recipes-phosphor/slpd-lite/slpd-lite/slpd-lite.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Lightweight SLP Server
+
+After=network.target
+
+[Service]
+ExecStart={sbindir}/slpd
+Restart=always
+
+[Install]
+WantedBy={SYSTEMD_DEFAULT_TARGET}
diff --git a/conf/distro/openbmc-phosphor.conf b/conf/distro/openbmc-phosphor.conf
index 2355dca..cc5edbd 100644
--- a/conf/distro/openbmc-phosphor.conf
+++ b/conf/distro/openbmc-phosphor.conf
@@ -33,6 +33,7 @@
         obmc-logging-mgmt \
         obmc-host-ctl \
         avahi \
+        slp \
         ${DISTRO_FEATURES_LIBC} \
         "