blob: 313402ff322ccd6571da20a0b35460a2eb94b8d3 [file] [log] [blame]
inherit obmc-phosphor-utils
DISCOVERY_SVC_PACKAGES ?= "${PN}"
python() {
avahi_enabled = bb.utils.contains(
'DISTRO_FEATURES', 'avahi', True, False, d)
slp_enabled = bb.utils.contains(
'DISTRO_FEATURES', 'slp', True, False, d)
if not avahi_enabled and not 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):
if avahi_enabled:
set_append(d, 'RRECOMMENDS_%s' % pkg, 'avahi-daemon')
svc_name, svc_type, svc_port = service.split(':')
set_append(d, 'FILES_%s' % pkg, os.path.join(
syscnfdir,
'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 = bb.utils.contains(
'DISTRO_FEATURES', 'slp', True, False, d)
if not avahi_enabled and not slp_enabled:
return
avahi_service_dir = d.getVar('AVAHI_SERVICES_DIR', True).strip()
slp_service_dir = d.getVar('SLP_SERVICES_DIR', True).strip()
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(
avahi_service_dir,
'%s.service' % service_name)
with open(service_file, 'w') as fd:
fd.write('<?xml version="1.0" ?>\n')
fd.write('<!DOCTYPE service-group SYSTEM "avahi-service.dtd">\n')
fd.write('<service-group>\n')
fd.write(' <name>%s</name>\n' % service_name)
fd.write(' <service>\n')
fd.write(' <type>%s</type>\n' % service_type)
fd.write(' <port>%s</port>\n' % service_port)
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
except:
continue
if avahi_enabled:
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"