blob: a8eecf8e6ac66bdc3feea283efa958744b56a152 [file] [log] [blame]
SUMMARY = "Phosphor Fan"
DESCRIPTION = "Phosphor fan provides a set of fan monitoring and \
control applications."
# Common build dependencies
DEPENDS += "${PYTHON_PN}-pyyaml-native"
DEPENDS += "${PYTHON_PN}-mako-native"
DEPENDS += "sdbusplus"
DEPENDS += "${PYTHON_PN}-sdbus++-native"
DEPENDS += "sdeventplus"
DEPENDS += "gpioplus"
DEPENDS += "phosphor-logging"
DEPENDS += "libevdev"
DEPENDS += "nlohmann-json"
DEPENDS += "cli11"
PACKAGECONFIG ?= "presence control monitor sensor-monitor"
# The control, monitor, and presence apps can either be JSON or YAML driven.
PACKAGECONFIG[json] = "-Djson-config=enabled, -Djson-config=disabled"
# --------------------------------------
# ${PN}-presence-tach specific configuration
PACKAGECONFIG[presence] = "-Dpresence-service=enabled \
-Dmachine-name=${PKG_DEFAULT_MACHINE} \
-Dpresence-config=${STAGING_DIR_HOST}${presence_datadir}/config.yaml, \
-Dpresence-service=disabled, \
virtual/phosphor-fan-presence-config \
, \
"
# --------------------------------------
# ${PN}-control specific configuration
PACKAGECONFIG[control] = "-Dcontrol-service=enabled \
-Dmachine-name=${PKG_DEFAULT_MACHINE} \
-Dfan-def-yaml-file=${STAGING_DIR_HOST}${control_datadir}/fans.yaml \
-Dfan-zone-yaml-file=${STAGING_DIR_HOST}${control_datadir}/zones.yaml \
-Dzone-events-yaml-file=${STAGING_DIR_HOST}${control_datadir}/events.yaml \
-Dzone-conditions-yaml-file=${STAGING_DIR_HOST}${control_datadir}/zone_conditions.yaml, \
-Dcontrol-service=disabled, \
virtual/phosphor-fan-control-fan-config \
phosphor-fan-control-zone-config \
phosphor-fan-control-events-config \
phosphor-fan-control-zone-conditions-config \
, \
"
# --------------------------------------
# ${PN}-monitor specific configuration
PACKAGECONFIG[monitor] = "-Dmonitor-service=enabled \
-Dmachine-name=${PKG_DEFAULT_MACHINE} \
-Dfan-monitor-yaml-file=${STAGING_DIR_HOST}${monitor_datadir}/monitor.yaml, \
-Dmonitor-service=disabled, \
phosphor-fan-monitor-config \
, \
"
# --------------------------------------
# phosphor-cooling-type specific configuration
PACKAGECONFIG[cooling-type] = "-Dcooling-type-service=enabled,-Dcooling-type-service=disabled,,"
# --------------------------------------
# ${PN}-sensor-monitor specific configuration
PACKAGECONFIG[sensor-monitor] = "-Dsensor-monitor-service=enabled,-Dsensor-monitor-service=disabled"
PV = "1.0+git${SRCPV}"
PR = "r1"
S = "${WORKDIR}/git"
SYSTEMD_PACKAGES = "${FAN_PACKAGES}"
SYSTEMD_SERVICE:${PN}-presence-tach += "${TMPL_TACH}"
SYSTEMD_LINK:${PN}-presence-tach += "${@compose_list(d, 'FMT_TACH', 'OBMC_CHASSIS_INSTANCES')}"
# JSON mode also gets linked into multi-user
SYSTEMD_LINK:${PN}-presence-tach += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
compose_list(d, 'FMT_TACH_MUSR', 'OBMC_CHASSIS_INSTANCES'), '', d)}"
SYSTEMD_SERVICE:${PN}-control += "${TMPL_CONTROL}"
SYSTEMD_SERVICE:${PN}-control += "${@bb.utils.contains('PACKAGECONFIG', 'json', '', '${TMPL_CONTROL_INIT}', d)}"
# JSON: Linked to multi-user and poweron
# YAML: Linked to fans-ready and fan control-init poweron
SYSTEMD_LINK:${PN}-control += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
compose_list(d, 'FMT_CONTROL_MUSR', 'OBMC_CHASSIS_INSTANCES'), \
compose_list(d, 'FMT_CONTROL', 'OBMC_CHASSIS_INSTANCES'), d)}"
SYSTEMD_LINK:${PN}-control += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
compose_list(d, 'FMT_CONTROL_PWRON', 'OBMC_CHASSIS_INSTANCES'), \
compose_list(d, 'FMT_CONTROL_INIT', 'OBMC_CHASSIS_INSTANCES'), d)}"
SYSTEMD_SERVICE:${PN}-monitor += "${TMPL_MONITOR}"
SYSTEMD_SERVICE:${PN}-monitor += "${@bb.utils.contains('PACKAGECONFIG', 'json', '', '${TMPL_MONITOR_INIT}', d)}"
# JSON: power on and multi-user links. YAML: fans-ready and fan monitor init links
SYSTEMD_LINK:${PN}-monitor += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
compose_list(d, 'FMT_MONITOR_PWRON', 'OBMC_CHASSIS_INSTANCES'), \
compose_list(d, 'FMT_MONITOR_FANSREADY', 'OBMC_CHASSIS_INSTANCES'), d)}"
SYSTEMD_LINK:${PN}-monitor += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
compose_list(d, 'FMT_MONITOR_MUSR', 'OBMC_CHASSIS_INSTANCES'), \
compose_list(d, 'FMT_MONITOR_INIT', 'OBMC_CHASSIS_INSTANCES'), d)}"
SYSTEMD_SERVICE:sensor-monitor += "sensor-monitor.service"
SYSTEMD_LINK:sensor-monitor += "../sensor-monitor.service:${MULTI_USR_TGT}.wants/sensor-monitor.service"
inherit meson pkgconfig python3native
inherit obmc-phosphor-systemd
inherit phosphor-fan
EXTRA_OEMESON:append = " -Dtests=disabled"
PACKAGE_ARCH = "${MACHINE_ARCH}"
FILES:${PN}-presence-tach = "${bindir}/phosphor-fan-presence-tach"
# Package the JSON config files installed from the repo
FILES:${PN}-presence-tach += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
'${datadir}/phosphor-fan-presence/presence/*', '', d)}"
FILES:${PN}-control = "${bindir}/phosphor-fan-control"
FILES:${PN}-control += "${bindir}/fanctl"
# Package the JSON config files installed from the repo
FILES:${PN}-control += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
'${datadir}/phosphor-fan-presence/control/*', '', d)}"
FILES:${PN}-monitor = "${bindir}/phosphor-fan-monitor"
# Package the JSON config files installed from the repo
FILES:${PN}-monitor += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
'${datadir}/phosphor-fan-presence/monitor/*', '', d)}"
FILES:sensor-monitor += " ${bindir}/sensor-monitor"
require ${BPN}.inc
ALLOW_EMPTY:${PN} = "1"
PKG_DEFAULT_MACHINE ??= "${MACHINE}"
# Package configuration
FAN_PACKAGES = " \
${PN}-presence-tach \
${PN}-control \
${PN}-monitor \
${PN}-sensor-monitor \
"
PACKAGE_BEFORE_PN += "${FAN_PACKAGES}"
MULTI_USR_TGT = "multi-user.target"
TMPL_TACH = "phosphor-fan-presence-tach@.service"
INSTFMT_TACH = "phosphor-fan-presence-tach@{0}.service"
POWERON_TGT = "obmc-chassis-poweron@{0}.target"
FMT_TACH = "../${TMPL_TACH}:${POWERON_TGT}.wants/${INSTFMT_TACH}"
FMT_TACH_MUSR = "../${TMPL_TACH}:${MULTI_USR_TGT}.wants/${INSTFMT_TACH}"
FAN_CONTROL_TGT = "obmc-fan-control-ready@{0}.target"
TMPL_CONTROL = "phosphor-fan-control@.service"
INSTFMT_CONTROL = "phosphor-fan-control@{0}.service"
FMT_CONTROL = "../${TMPL_CONTROL}:${FAN_CONTROL_TGT}.requires/${INSTFMT_CONTROL}"
FMT_CONTROL_MUSR = "../${TMPL_CONTROL}:${MULTI_USR_TGT}.wants/${INSTFMT_CONTROL}"
FMT_CONTROL_PWRON = "../${TMPL_CONTROL}:${POWERON_TGT}.wants/${INSTFMT_CONTROL}"
TMPL_CONTROL_INIT = "phosphor-fan-control-init@.service"
INSTFMT_CONTROL_INIT = "phosphor-fan-control-init@{0}.service"
FMT_CONTROL_INIT = "../${TMPL_CONTROL_INIT}:${POWERON_TGT}.wants/${INSTFMT_CONTROL_INIT}"
TMPL_MONITOR = "phosphor-fan-monitor@.service"
INSTFMT_MONITOR = "phosphor-fan-monitor@{0}.service"
FMT_MONITOR_FANSREADY = "../${TMPL_MONITOR}:${FAN_CONTROL_TGT}.requires/${INSTFMT_MONITOR}"
FMT_MONITOR_PWRON = "../${TMPL_MONITOR}:${POWERON_TGT}.wants/${INSTFMT_MONITOR}"
FMT_MONITOR_MUSR = "../${TMPL_MONITOR}:${MULTI_USR_TGT}.wants/${INSTFMT_MONITOR}"
TMPL_MONITOR_INIT = "phosphor-fan-monitor-init@.service"
INSTFMT_MONITOR_INIT = "phosphor-fan-monitor-init@{0}.service"
FMT_MONITOR_INIT = "../${TMPL_MONITOR_INIT}:${POWERON_TGT}.wants/${INSTFMT_MONITOR_INIT}"
FAN_PACKAGES:append = "${@bb.utils.contains('PACKAGECONFIG', 'sensor-monitor', ' sensor-monitor', '', d)}"