ibm: Start phosphor-fan-presence at multi-user
This will start phosphor-fan-presence at the multi-user target. It
doesn't need to know about the power state when just checking GPIOs and
tach sensors, so let it run all the time. It also avoids a race
condition with phosphor-fan-monitor if it starts earlier.
This commit also adds a JSON vs YAML packageconfig so service files can
be installed to different places based on how it is configured. And
since the service file has different contents based on when it starts,
the phosphor-fan-presence-tach@.service file was moved into the repo so
that the repo itself can determine which one to install based on how the
JSON vs YAML configuration option is set.
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I4c00f0854974c70efb5097d0344c45385dbcb085
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan_%.bbappend b/meta-ibm/recipes-phosphor/fans/phosphor-fan_%.bbappend
index 2b6da59..09d4fd6 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan_%.bbappend
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan_%.bbappend
@@ -56,11 +56,12 @@
SYSTEMD_LINK_${PN}-control_witherspoon += "${@compose_list(d, 'FMT_CONTROL_PWRON', 'OBMC_CHASSIS_INSTANCES')}"
# Enable the use of JSON on the fan applications that support it
-EXTRA_OECONF_append_witherspoon = " --enable-json --disable-json-control"
+PACKAGECONFIG_append_witherspoon = " json"
+EXTRA_OECONF_append_witherspoon = " --disable-json-control"
RDEPENDS_${PN}-presence-tach_append_witherspoon = " phosphor-fan-presence-config"
RDEPENDS_${PN}-monitor_append_witherspoon = " phosphor-fan-monitor-config"
-EXTRA_OECONF_append_rainier = " --enable-json"
+PACKAGECONFIG_append_rainier = " json"
RDEPENDS_${PN}-presence-tach_append_rainier = " phosphor-fan-presence-config"
RDEPENDS_${PN}-monitor_append_rainier = " phosphor-fan-monitor-config"
diff --git a/meta-phosphor/recipes-phosphor/fans/phosphor-fan/phosphor-fan-presence-tach@.service b/meta-phosphor/recipes-phosphor/fans/phosphor-fan/phosphor-fan-presence-tach@.service
deleted file mode 100644
index a324740..0000000
--- a/meta-phosphor/recipes-phosphor/fans/phosphor-fan/phosphor-fan-presence-tach@.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=Phosphor Fan Presence Tach Daemon
-Wants=obmc-power-on@%i.target
-After=obmc-power-on@%i.target
-Conflicts=obmc-chassis-powered-off@%i.target
-
-[Service]
-Restart=on-failure
-ExecStart=/usr/bin/env phosphor-fan-presence-tach
-SyslogIdentifier=phosphor-fan-presence-tach
-
-[Install]
-RequiredBy=obmc-chassis-poweron@%i.target
diff --git a/meta-phosphor/recipes-phosphor/fans/phosphor-fan_git.bb b/meta-phosphor/recipes-phosphor/fans/phosphor-fan_git.bb
index 02eee30..adad349 100644
--- a/meta-phosphor/recipes-phosphor/fans/phosphor-fan_git.bb
+++ b/meta-phosphor/recipes-phosphor/fans/phosphor-fan_git.bb
@@ -36,6 +36,9 @@
PACKAGECONFIG ?= "presence control monitor"
SYSTEMD_PACKAGES = "${FAN_PACKAGES}"
+# The control, monitor, and presence apps can either be JSON or YAML driven.
+PACKAGECONFIG[json] = "--enable-json, --disable-json"
+
# --------------------------------------
# ${PN}-presence-tach specific configuration
PACKAGECONFIG[presence] = " \
@@ -46,16 +49,21 @@
, \
"
-# Needed to install into the obmc-chassis-poweron target
+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}.requires/${INSTFMT_TACH}"
+FMT_TACH_MUSR = "../${TMPL_TACH}:${MULTI_USR_TGT}.wants/${INSTFMT_TACH}"
FILES_${PN}-presence-tach = "${bindir}/phosphor-fan-presence-tach"
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)}"
+
# --------------------------------------
# ${PN}-control specific configuration
PACKAGECONFIG[control] = "--enable-control \