157 lines
7.5 KiB
BlitzBasic
157 lines
7.5 KiB
BlitzBasic
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"
|
|
|
|
# OBMC_CHASSIS_ZERO_ONLY: hacky way to fix the templates until
|
|
# openbmc/phosphor-fan-presence#26 is resolved. This should likely be
|
|
# returned to OBMC_CHASSIS_INSTANCES.
|
|
OBMC_CHASSIS_ZERO_ONLY = "0"
|
|
|
|
SYSTEMD_PACKAGES = "${FAN_PACKAGES}"
|
|
SYSTEMD_SERVICE:${PN}-presence-tach += "${TMPL_TACH}"
|
|
SYSTEMD_LINK:${PN}-presence-tach += "${@compose_list(d, 'FMT_TACH', 'OBMC_CHASSIS_ZERO_ONLY')}"
|
|
# 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_ZERO_ONLY'), '', 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_ZERO_ONLY'), \
|
|
compose_list(d, 'FMT_CONTROL', 'OBMC_CHASSIS_ZERO_ONLY'), d)}"
|
|
SYSTEMD_LINK:${PN}-control += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
|
|
compose_list(d, 'FMT_CONTROL_PWRON', 'OBMC_CHASSIS_ZERO_ONLY'), \
|
|
compose_list(d, 'FMT_CONTROL_INIT', 'OBMC_CHASSIS_ZERO_ONLY'), 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_ZERO_ONLY'), \
|
|
compose_list(d, 'FMT_MONITOR_FANSREADY', 'OBMC_CHASSIS_ZERO_ONLY'), d)}"
|
|
SYSTEMD_LINK:${PN}-monitor += "${@bb.utils.contains('PACKAGECONFIG', 'json', \
|
|
compose_list(d, 'FMT_MONITOR_MUSR', 'OBMC_CHASSIS_ZERO_ONLY'), \
|
|
compose_list(d, 'FMT_MONITOR_INIT', 'OBMC_CHASSIS_ZERO_ONLY'), 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)}"
|