blob: caa0352a6cd43d14bd9c8d9ab04befe806615194 [file] [log] [blame]
Patrick Williams9e206392017-01-19 21:20:46 -06001SUMMARY = "Phosphor State Management"
2DESCRIPTION = "Phosphor State Manager provides a set of system state \
3management daemons. It is suitable for use on a wide variety of OpenBMC \
4platforms."
5HOMEPAGE = "https://github.com/openbmc/phosphor-state-manager"
6PR = "r1"
Patrick Venturedcb29962018-10-21 08:23:40 -07007PV = "1.0+git${SRCPV}"
Patrick Williams9e206392017-01-19 21:20:46 -06008LICENSE = "Apache-2.0"
9LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
10
11STATE_MGR_PACKAGES = " \
12 ${PN}-host \
13 ${PN}-chassis \
Josh Kingd2b95c72017-01-19 14:04:03 -060014 ${PN}-bmc \
Michael Tritzb6e965c2017-04-18 17:01:12 -050015 ${PN}-discover \
Andrew Geisslerb1afecc2017-05-08 15:58:01 -050016 ${PN}-host-check \
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060017 ${PN}-reset-sensor-states \
Andrew Geissler44cadef2019-09-23 19:11:20 +000018 ${PN}-systemd-target-monitor \
Andrew Geissler024c25d2020-01-14 14:21:24 -060019 ${PN}-obmc-targets \
Patrick Williams9e206392017-01-19 21:20:46 -060020"
Brad Bishop7f9102c2018-04-11 11:44:15 -040021PACKAGE_BEFORE_PN += "${STATE_MGR_PACKAGES}"
22ALLOW_EMPTY_${PN} = "1"
Brad Bishop1a5a5972017-03-01 16:08:45 -050023
Patrick Williams9e206392017-01-19 21:20:46 -060024DBUS_PACKAGES = "${STATE_MGR_PACKAGES}"
25
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060026SYSTEMD_PACKAGES = "${PN}-discover \
27 ${PN}-reset-sensor-states \
Andrew Geissler44cadef2019-09-23 19:11:20 +000028 ${PN}-systemd-target-monitor \
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060029"
Andrew Geissler6bc2f022018-03-13 11:46:27 -070030
31# The host-check function will check if the host is running
32# after a BMC reset.
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060033# The reset-sensor-states function will reset the host
Andrew Geissler6bc2f022018-03-13 11:46:27 -070034# sensors on a BMC reset or system power loss.
35# Neither is required for host state function but are
36# recommended to deal properly with these reset scenarios.
37RRECOMMENDS_${PN}-host = "${PN}-host-check ${PN}-reset-sensor-states"
Patrick Williams9e206392017-01-19 21:20:46 -060038
Andrew Geissler024c25d2020-01-14 14:21:24 -060039# The obmc-targets are the base targets required to boot a computer system
40RRECOMMENDS_${PN}-host += "${PN}-obmc-targets"
41
Andrew Geisslerae3fe4a2019-12-11 14:51:20 -060042inherit meson pkgconfig
Patrick Williams9e206392017-01-19 21:20:46 -060043inherit obmc-phosphor-dbus-service
44
Patrick Williams9e206392017-01-19 21:20:46 -060045DEPENDS += "sdbusplus"
William A. Kennington IIIfa391f22018-10-18 01:34:43 -070046DEPENDS += "sdeventplus"
Patrick Williams9e206392017-01-19 21:20:46 -060047DEPENDS += "phosphor-logging"
Patrick Williams1815f6b2017-01-30 11:06:16 -060048DEPENDS += "phosphor-dbus-interfaces"
Brad Bishop17c08bf2018-10-18 17:07:53 -040049DEPENDS += "libcereal"
Andrew Geissler44cadef2019-09-23 19:11:20 +000050DEPENDS += "nlohmann-json"
51DEPENDS += "cli11"
Patrick Williams9e206392017-01-19 21:20:46 -060052
Anthony Wilsoncd800c82019-03-30 08:11:32 -070053FILES_${PN}-host = "${bindir}/phosphor-host-state-manager"
Patrick Williams9e206392017-01-19 21:20:46 -060054DBUS_SERVICE_${PN}-host += "xyz.openbmc_project.State.Host.service"
Andrew Geissler4ec27742017-07-26 17:53:04 -050055DBUS_SERVICE_${PN}-host += "phosphor-reboot-host@.service"
Andrew Geisslerec7f9202018-03-27 19:39:05 -070056SYSTEMD_SERVICE_${PN}-host += "phosphor-reset-host-reboot-attempts@.service"
Patrick Williams9e206392017-01-19 21:20:46 -060057
Anthony Wilsoncd800c82019-03-30 08:11:32 -070058FILES_${PN}-chassis = "${bindir}/phosphor-chassis-state-manager"
Patrick Williams9e206392017-01-19 21:20:46 -060059DBUS_SERVICE_${PN}-chassis += "xyz.openbmc_project.State.Chassis.service"
60
Anthony Wilsoncd800c82019-03-30 08:11:32 -070061FILES_${PN}-chassis += "${bindir}/obmcutil"
62
63FILES_${PN}-bmc = "${bindir}/phosphor-bmc-state-manager"
Josh Kingd2b95c72017-01-19 14:04:03 -060064DBUS_SERVICE_${PN}-bmc += "xyz.openbmc_project.State.BMC.service"
65
Anthony Wilsoncd800c82019-03-30 08:11:32 -070066FILES_${PN}-discover = "${bindir}/phosphor-discover-system-state"
Michael Tritzb3b58992017-03-31 12:04:32 -050067SYSTEMD_SERVICE_${PN}-discover += "phosphor-discover-system-state@.service"
68
Anthony Wilsoncd800c82019-03-30 08:11:32 -070069FILES_${PN}-host-check = "${bindir}/phosphor-host-check"
Andrew Geisslerb1afecc2017-05-08 15:58:01 -050070SYSTEMD_SERVICE_${PN}-host-check += "phosphor-reset-host-check@.service"
71SYSTEMD_SERVICE_${PN}-host-check += "phosphor-reset-host-running@.service"
72
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060073SYSTEMD_SERVICE_${PN}-reset-sensor-states += "phosphor-reset-sensor-states@.service"
74
Andrew Geissler44cadef2019-09-23 19:11:20 +000075FILES_${PN}-systemd-target-monitor = " \
76 ${bindir}/phosphor-systemd-target-monitor \
77 ${sysconfdir}/phosphor-systemd-target-monitor/phosphor-target-monitor-default.json \
78 "
79SYSTEMD_SERVICE_${PN}-systemd-target-monitor += "phosphor-systemd-target-monitor.service"
80
Andrew Geisslerb1afecc2017-05-08 15:58:01 -050081RESET_CHECK_TMPL = "phosphor-reset-host-check@.service"
82RESET_CHECK_TGTFMT = "obmc-host-reset@{1}.target"
83RESET_CHECK_INSTFMT = "phosphor-reset-host-check@{0}.service"
84RESET_CHECK_FMT = "../${RESET_CHECK_TMPL}:${RESET_CHECK_TGTFMT}.requires/${RESET_CHECK_INSTFMT}"
85
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060086SENSOR_RESET_TMPL = "phosphor-reset-sensor-states@.service"
87SENSOR_RESET_TGTFMT = "obmc-host-reset@{1}.target"
88SENSOR_RESET_INSTFMT = "phosphor-reset-sensor-states@{0}.service"
89SENSOR_RESET_FMT = "../${SENSOR_RESET_TMPL}:${SENSOR_RESET_TGTFMT}.requires/${SENSOR_RESET_INSTFMT}"
90
Andrew Geisslerb1afecc2017-05-08 15:58:01 -050091RESET_RUNNING_TMPL = "phosphor-reset-host-running@.service"
92RESET_RUNNING_TGTFMT = "obmc-host-reset@{1}.target"
93RESET_RUNNING_INSTFMT = "phosphor-reset-host-running@{0}.service"
94RESET_RUNNING_FMT = "../${RESET_RUNNING_TMPL}:${RESET_RUNNING_TGTFMT}.requires/${RESET_RUNNING_INSTFMT}"
95
96SYSTEMD_LINK_${PN}-host-check += "${@compose_list_zip(d, 'RESET_CHECK_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_HOST_INSTANCES')}"
97SYSTEMD_LINK_${PN}-host-check += "${@compose_list_zip(d, 'RESET_RUNNING_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_HOST_INSTANCES')}"
98
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060099SYSTEMD_LINK_${PN}-reset-sensor-states += "${@compose_list_zip(d, 'SENSOR_RESET_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_HOST_INSTANCES')}"
100
Andrew Geisslerb1afecc2017-05-08 15:58:01 -0500101# Force the standby target to run the host reset check target
102RESET_TMPL_CTRL = "obmc-host-reset@.target"
Brad Bishopfc81e382019-04-06 13:58:07 -0400103SYSD_TGT = "multi-user.target"
Andrew Geisslerb1afecc2017-05-08 15:58:01 -0500104RESET_INSTFMT_CTRL = "obmc-host-reset@{0}.target"
105RESET_FMT_CTRL = "../${RESET_TMPL_CTRL}:${SYSD_TGT}.wants/${RESET_INSTFMT_CTRL}"
106SYSTEMD_LINK_${PN}-host-check += "${@compose_list_zip(d, 'RESET_FMT_CTRL', 'OBMC_HOST_INSTANCES')}"
107
Michael Tritzb3b58992017-03-31 12:04:32 -0500108TMPL = "phosphor-discover-system-state@.service"
109INSTFMT = "phosphor-discover-system-state@{0}.service"
Brad Bishopfc81e382019-04-06 13:58:07 -0400110FMT = "../${TMPL}:multi-user.target.wants/${INSTFMT}"
Michael Tritzb3b58992017-03-31 12:04:32 -0500111SYSTEMD_LINK_${PN}-discover += "${@compose_list(d, 'FMT', 'OBMC_HOST_INSTANCES')}"
Michael Tritzb6e965c2017-04-18 17:01:12 -0500112
Andrew Geissler191e1ff2017-07-20 10:28:34 -0500113# Force the shutdown target to run the chassis-poweroff target
114CHASSIS_STOP_TMPL = "obmc-chassis-poweroff@.target"
Andrew Geissler5208dbd2017-05-26 17:40:03 -0500115HOST_STOP_TGTFMT = "obmc-host-shutdown@{1}.target"
Andrew Geissler191e1ff2017-07-20 10:28:34 -0500116CHASSIS_STOP_INSTFMT = "obmc-chassis-poweroff@{0}.target"
117HOST_STOP_FMT = "../${CHASSIS_STOP_TMPL}:${HOST_STOP_TGTFMT}.requires/${CHASSIS_STOP_INSTFMT}"
118SYSTEMD_LINK_${PN}-host += "${@compose_list_zip(d, 'HOST_STOP_FMT', 'OBMC_CHASSIS_INSTANCES', 'OBMC_HOST_INSTANCES')}"
Andrew Geissler5208dbd2017-05-26 17:40:03 -0500119
Andrew Geissler4ec27742017-07-26 17:53:04 -0500120# Force the host reboot target to run the shutdown target
121HOST_SHUTDOWN_TMPL = "obmc-host-shutdown@.target"
122HOST_REBOOT_TGTFMT = "obmc-host-reboot@{0}.target"
123HOST_SHUTDOWN_INSTFMT = "obmc-host-shutdown@{0}.target"
124HOST_REBOOT_FMT = "../${HOST_SHUTDOWN_TMPL}:${HOST_REBOOT_TGTFMT}.requires/${HOST_SHUTDOWN_INSTFMT}"
125SYSTEMD_LINK_${PN}-host += "${@compose_list_zip(d, 'HOST_REBOOT_FMT', 'OBMC_HOST_INSTANCES')}"
126
Andrew Geissler5c76e0c2018-03-27 13:56:26 -0700127# And also force the reboot target to call the host startmin service
Andrew Geissler4ec27742017-07-26 17:53:04 -0500128HOST_REBOOT_SVC = "phosphor-reboot-host@.service"
129HOST_REBOOT_SVC_INST = "phosphor-reboot-host@{0}.service"
130HOST_REBOOT_SVC_FMT = "../${HOST_REBOOT_SVC}:${HOST_REBOOT_TGTFMT}.requires/${HOST_REBOOT_SVC_INST}"
131SYSTEMD_LINK_${PN}-host += "${@compose_list_zip(d, 'HOST_REBOOT_SVC_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_HOST_INSTANCES')}"
132
Andrew Geissler5c76e0c2018-03-27 13:56:26 -0700133# Force the host-start target to call the host-startmin target
134HOST_STARTMIN_TMPL = "obmc-host-startmin@.target"
135HOST_START_TGTFMT = "obmc-host-start@{0}.target"
136HOST_STARTMIN_INSTFMT = "obmc-host-startmin@{0}.target"
137HOST_START_FMT = "../${HOST_STARTMIN_TMPL}:${HOST_START_TGTFMT}.requires/${HOST_STARTMIN_INSTFMT}"
138SYSTEMD_LINK_${PN}-host += "${@compose_list_zip(d, 'HOST_START_FMT', 'OBMC_HOST_INSTANCES')}"
139
Andrew Geisslerec7f9202018-03-27 19:39:05 -0700140# Force the host-start target to call the reboot count reset service
141HOST_RST_RBT_ATTEMPTS_SVC = "phosphor-reset-host-reboot-attempts@.service"
142HOST_RST_RBT_ATTEMPTS_SVC_INST = "phosphor-reset-host-reboot-attempts@{0}.service"
143HOST_RST_RBT_ATTEMPTS_SVC_FMT = "../${HOST_RST_RBT_ATTEMPTS_SVC}:${HOST_START_TGTFMT}.requires/${HOST_RST_RBT_ATTEMPTS_SVC_INST}"
144SYSTEMD_LINK_${PN}-host += "${@compose_list_zip(d, 'HOST_RST_RBT_ATTEMPTS_SVC_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_HOST_INSTANCES')}"
145
Andrew Geissler024c25d2020-01-14 14:21:24 -0600146
147# Chassis power synchronization targets
148# - start-pre: Services to run before we start power on process
149# - start: Services to run to do the chassis power on
150# - on: Services to run once power is on
151# - stop-pre,stop,off: Same as above but applied to powering off
152# - reset-on: Services to check if chassis power is on after bmc reset
153CHASSIS_SYNCH_TARGETS = "start-pre start on stop-pre stop off reset-on"
154
155# Chassis action power targets
156# - on: Services to run to power on the chassis
157# - off: Services to run to power off the chassis
158# - powered-off: Services to run once chassis power is off
159# - reset: Services to check chassis power state and update chassis "on" target
160# - hard-off: Services to force an immediate power off of the chassis
161CHASSIS_ACTION_TARGETS = "poweron poweroff powered-off powerreset hard-poweroff"
162
163# Track all host synchronization point targets
164# - start-pre: Services to run before we start host boot
165# - starting: Services to run to do the host boot
166# - started: Services to run once the host is booted
167# - stop-pre,stopping,stopped: Same as above but applied to shutting down the host
168# - reset-running: Services to check if host is running after bmc reset
169HOST_SYNCH_TARGETS = "start-pre starting started stop-pre stopping stopped reset-running"
170
171# Track all host action targets
172# - start: Will run startmin target, this target used for any additional
173# services that user needs for an initial power on of host.
174# For example, resetting the host reboot count could be put in
175# this target so on any fresh power on, this count is reset.
176# - startmin: Minimum services required to start the host. This target will
177# be called by reboot and start target.
178# - stop: Services to run to shutdown the host
179# - quiesce: Target to enter on host boot failure
180# - shutdown: Tell host to shutdown, then stop system
181# - reset: Services to check if host is running and update host "start" target
182# - crash: Target to run when host crashes. it is very much similar to
183# quiesce target but the only delta is that this target contains
184# multiple services and one of them is the quiesce target.
185# - timeout: Target to run when host watchdog times out
186# - reboot: Reboot the host
187HOST_ACTION_TARGETS = "start startmin stop quiesce reset shutdown crash timeout reboot"
188
189CHASSIS_SYNCH_FMT = "obmc-power-{0}@.target"
190CHASSIS_ACTION_FMT = "obmc-chassis-{0}@.target"
191HOST_SYNCH_FMT = "obmc-host-{0}@.target"
192HOST_ACTION_FMT = "obmc-host-{0}@.target"
193
194CHASSIS_LINK_SYNCH_FMT = "${CHASSIS_SYNCH_FMT}:obmc-power-{0}@{1}.target"
195CHASSIS_LINK_ACTION_FMT = "${CHASSIS_ACTION_FMT}:obmc-chassis-{0}@{1}.target"
196HOST_LINK_SYNCH_FMT = "${HOST_SYNCH_FMT}:obmc-host-{0}@{1}.target"
197HOST_LINK_ACTION_FMT = "${HOST_ACTION_FMT}:obmc-host-{0}@{1}.target"
198FAN_LINK_FMT = "obmc-fan-control-ready@.target:obmc-fan-control-ready@{0}.target"
199
200# Targets to be executed on checkstop and watchdog timeout
201HOST_ERROR_TARGETS = "crash timeout"
202
203QUIESCE_TMPL = "obmc-host-quiesce@.target"
204CRASH_TIMEOUT_TGTFMT = "obmc-host-{0}@{1}.target"
205QUIESCE_INSTFMT = "obmc-host-quiesce@{1}.target"
206QUIESCE_FMT = "../${QUIESCE_TMPL}:${CRASH_TIMEOUT_TGTFMT}.wants/${QUIESCE_INSTFMT}"
207
208SYSTEMD_SERVICE_${PN}-obmc-targets += " \
209 obmc-mapper.target \
210 obmc-fans-ready.target \
211 obmc-fan-control.target \
212 obmc-fan-control-ready@.target \
213 obmc-fan-watchdog-takeover.target \
214 "
215
216SYSTEMD_SERVICE_${PN}-obmc-targets += "${@compose_list(d, 'CHASSIS_SYNCH_FMT', 'CHASSIS_SYNCH_TARGETS')}"
217SYSTEMD_SERVICE_${PN}-obmc-targets += "${@compose_list(d, 'CHASSIS_ACTION_FMT', 'CHASSIS_ACTION_TARGETS')}"
218SYSTEMD_SERVICE_${PN}-obmc-targets += "${@compose_list(d, 'HOST_SYNCH_FMT', 'HOST_SYNCH_TARGETS')}"
219SYSTEMD_SERVICE_${PN}-obmc-targets += "${@compose_list(d, 'HOST_ACTION_FMT', 'HOST_ACTION_TARGETS')}"
220
221SYSTEMD_LINK_${PN}-obmc-targets += "${@compose_list(d, 'CHASSIS_LINK_SYNCH_FMT', 'CHASSIS_SYNCH_TARGETS', 'OBMC_CHASSIS_INSTANCES')}"
222SYSTEMD_LINK_${PN}-obmc-targets += "${@compose_list(d, 'CHASSIS_LINK_ACTION_FMT', 'CHASSIS_ACTION_TARGETS', 'OBMC_CHASSIS_INSTANCES')}"
223SYSTEMD_LINK_${PN}-obmc-targets += "${@compose_list(d, 'HOST_LINK_SYNCH_FMT', 'HOST_SYNCH_TARGETS', 'OBMC_HOST_INSTANCES')}"
224SYSTEMD_LINK_${PN}-obmc-targets += "${@compose_list(d, 'HOST_LINK_ACTION_FMT', 'HOST_ACTION_TARGETS', 'OBMC_HOST_INSTANCES')}"
225SYSTEMD_LINK_${PN}-obmc-targets += "${@compose_list(d, 'FAN_LINK_FMT', 'OBMC_CHASSIS_INSTANCES')}"
226SYSTEMD_LINK_${PN}-obmc-targets += "${@compose_list(d, 'QUIESCE_FMT', 'HOST_ERROR_TARGETS', 'OBMC_HOST_INSTANCES')}"
227
Patrick Williams9e206392017-01-19 21:20:46 -0600228SRC_URI += "git://github.com/openbmc/phosphor-state-manager"
Andrew Geissler024c25d2020-01-14 14:21:24 -0600229SRCREV = "c101157e5b138f36044a2a3aaf15ad8ac16501fc"
Patrick Williams9e206392017-01-19 21:20:46 -0600230
231S = "${WORKDIR}/git"