1SUMMARY = "Phosphor LED Group Management Daemon"
2DESCRIPTION = "Daemon to cater to triggering actions on LED groups"
3DEPENDS += "${PYTHON_PN}-native"
4DEPENDS += "${PYTHON_PN}-pyyaml-native"
5DEPENDS += "${PYTHON_PN}-inflection-native"
6DEPENDS += "cli11"
7DEPENDS += "nlohmann-json"
8DEPENDS += "phosphor-logging"
9DEPENDS += "sdbusplus ${PYTHON_PN}-sdbus++-native"
10DEPENDS += "systemd"
11PACKAGECONFIG ??= "\
12    ${@oe.utils.conditional( \
13        'PREFERRED_PROVIDER_virtual/${PN}-config-native', \
14        'phosphor-led-manager-config-example-native', \
15        'use-json', 'use-yaml', d)} \
16"
17PACKAGECONFIG[use-json] = "-Duse-json=enabled,,,,,use-yaml"
18PACKAGECONFIG[use-yaml] = "-Duse-json=disabled,,virtual/${PN}-config-native,,,use-json"
19PACKAGECONFIG[use-lamp-test] = "-Duse-lamp-test=enabled, -Duse-lamp-test=disabled"
20PACKAGECONFIG[monitor-operational-status] = "-Dmonitor-operational-status=enabled, \
21                                             -Dmonitor-operational-status=disabled"
22PACKAGECONFIG[persistent-led-asserted] = "-Dpersistent-led-asserted=enabled, \
23                                          -Dpersistent-led-asserted=disabled"
24PV = "1.0+git${SRCPV}"
25PR = "r1"
26
27LED_ORG_JSON_PATTERNS ??= "${@ d.getVar('OBMC_ORG_YAML_SUBDIRS').replace('/', '.')}"
28LED_CONFIG_GREP_ARGS = "${@ ''.join([ ' -e ' + x for x in d.getVar('LED_ORG_JSON_PATTERNS').split() ])}"
29do_install:append() {
30    for f in "${D}${datadir}/${PN}/"*.json ;
31    do
32        if ! echo "$(basename $f)" | grep -q ${LED_CONFIG_GREP_ARGS};
33        then
34            rm -f ${f}
35        fi
36    done
37}
38
39SYSTEMD_PACKAGES = "${PN} ${PN}-faultmonitor"
40S = "${WORKDIR}/git"
41SYSTEMD_SERVICE:${PN} += "obmc-led-group-start@.service obmc-led-group-stop@.service"
42SYSTEMD_SERVICE:${PN}-faultmonitor += "obmc-fru-fault-monitor.service"
43SYSTEMD_LINK:${PN} += "../obmc-led-group-start@.service:multi-user.target.wants/obmc-led-group-start@bmc_booted.service"
44STATES = "start stop"
45SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'FMT', 'CHASSIS_TARGETS', 'STATES')}"
46SYSTEMD_LINK:${PN} += "${@compose_list(d, 'CHASSIS_LED_BLACKOUT_FMT', 'OBMC_CHASSIS_INSTANCES' )}"
47# Install the override to set up a Conflicts relation
48SYSTEMD_OVERRIDE:${PN} += "bmc_booted.conf:obmc-led-group-start@bmc_booted.service.d/bmc_booted.conf"
49
50inherit meson pkgconfig python3native
51inherit obmc-phosphor-dbus-service obmc-phosphor-systemd
52
53EXTRA_OEMESON:append = " -Dtests=disabled"
54
55do_compile:prepend() {
56    if [ -f "${LED_YAML_PATH}/led.yaml" ]; then
57        cp "${LED_YAML_PATH}/led.yaml" "${S}/led.yaml"
58    elif [ -f "${STAGING_DATADIR_NATIVE}/${PN}/led.yaml" ]; then
59        cp "${STAGING_DATADIR_NATIVE}/${PN}/led.yaml" "${S}/led.yaml"
60    elif [ -f "${WORKDIR}/led.yaml" ]; then
61        cp "${WORKDIR}/led.yaml" "${S}/led.yaml"
62    fi
63}
64
65RDEPENDS:${PN} += "bash"
66
67FILES:${PN}-faultmonitor += "${bindir}/phosphor-fru-fault-monitor"
68
69require ${PN}.inc
70
71PACKAGE_BEFORE_PN += "${PN}-faultmonitor"
72DBUS_SERVICE:${PN} += "xyz.openbmc_project.LED.GroupManager.service"
73CHASSIS_TARGETS = "poweron poweroff"
74TMPLFMT = "obmc-led-group-{1}@.service"
75TGTFMT = "obmc-chassis-{0}@0.target"
76INSTFMT = "obmc-led-group-{1}@power_on.service"
77FMT = "../${TMPLFMT}:${TGTFMT}.wants/${INSTFMT}"
78CHASSIS_BLACKOUT_TGT = "obmc-chassis-blackout@{0}.target"
79LED_STOP_SVC = "obmc-led-group-stop@.service"
80LED_POWER_STOP_SVC = "obmc-led-group-stop@power_on.service"
81CHASSIS_LED_BLACKOUT_FMT = "../${LED_STOP_SVC}:${CHASSIS_BLACKOUT_TGT}.wants/${LED_POWER_STOP_SVC}"
82