summaryrefslogtreecommitdiff
path: root/meta-phosphor/recipes-phosphor/dump
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2018-08-31 13:25:51 +0300
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2018-09-06 14:44:12 +0300
commitff075f6ee795a590b244d70a90cc312ba1f2d83d (patch)
treea617790bdbfdeef960665ba0242e1f0c93e5301a /meta-phosphor/recipes-phosphor/dump
parent3e4da38c127bb7e7641adc2fc41f4c33744cb918 (diff)
downloadopenbmc-ff075f6ee795a590b244d70a90cc312ba1f2d83d.tar.xz
meta-phosphor: Move layer content from common/
Adopt a more conventional directory hierarchy. meta-phosphor is still a _long_ way from suitable for hosting on yoctoproject.org but things like this don't help. (From meta-phosphor rev: 471cfcefa74b8c7ceb704cb670e6d915cf27c63b) Change-Id: I3f106b2f6cdc6cec734be28a6090800546f362eb Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-phosphor/recipes-phosphor/dump')
-rw-r--r--meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.bb179
-rw-r--r--meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc5
-rw-r--r--meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector/obmc-dump-monitor.service10
-rw-r--r--meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector/xyz.openbmc_project.Dump.Manager.service13
4 files changed, 207 insertions, 0 deletions
diff --git a/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.bb b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.bb
new file mode 100644
index 000000000..b4800645b
--- /dev/null
+++ b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.bb
@@ -0,0 +1,179 @@
+SUMMARY = "Phosphor Debug Collector"
+DESCRIPTION = "Phosphor Debug Collector provides mechanisms \
+to collect various log files and system parameters. \
+This will be helpful for troubleshooting the problems in OpenBMC \
+based systems."
+
+PR = "r1"
+
+DEBUG_COLLECTOR_PKGS = " \
+ ${PN}-manager \
+ ${PN}-monitor \
+ ${PN}-dreport \
+ ${PN}-scripts \
+"
+PACKAGE_BEFORE_PN += "${DEBUG_COLLECTOR_PKGS}"
+ALLOW_EMPTY_${PN} = "1"
+
+DBUS_PACKAGES = "${PN}-manager"
+
+SYSTEMD_PACKAGES = "${PN}-monitor"
+
+inherit autotools \
+ pkgconfig \
+ obmc-phosphor-dbus-service \
+ pythonnative \
+ phosphor-debug-collector
+
+require phosphor-debug-collector.inc
+
+DEPENDS += " \
+ phosphor-dbus-interfaces \
+ phosphor-dbus-interfaces-native \
+ phosphor-logging \
+ sdbusplus \
+ sdbusplus-native \
+ autoconf-archive-native \
+"
+
+RDEPENDS_${PN}-manager += " \
+ sdbusplus \
+ phosphor-dbus-interfaces \
+ phosphor-logging \
+ ${PN}-dreport \
+"
+RDEPENDS_${PN}-monitor += " \
+ sdbusplus \
+ phosphor-dbus-interfaces \
+ phosphor-logging \
+"
+RDEPENDS_${PN}-dreport += " \
+ systemd \
+ ${VIRTUAL-RUNTIME_base-utils} \
+ bash \
+ xz \
+"
+RDEPENDS_${PN}-scripts += " \
+ bash \
+"
+
+MGR_SVC ?= "xyz.openbmc_project.Dump.Manager.service"
+
+SYSTEMD_SUBSTITUTIONS += "BMC_DUMP_PATH:${bmc_dump_path}:${MGR_SVC}"
+
+FILES_${PN}-manager += "${sbindir}/phosphor-dump-manager"
+FILES_${PN}-monitor += "${sbindir}/phosphor-dump-monitor"
+FILES_${PN}-dreport += "${bindir}/dreport"
+FILES_${PN}-scripts += "${dreport_dir}"
+
+DBUS_SERVICE_${PN}-manager += "${MGR_SVC}"
+SYSTEMD_SERVICE_${PN}-monitor += "obmc-dump-monitor.service"
+
+EXTRA_OECONF = "BMC_DUMP_PATH=${bmc_dump_path}"
+
+S = "${WORKDIR}/git"
+
+# Install dreport script
+# From tools/dreport.d/dreport to /usr/bin/dreport
+install_dreport() {
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/tools/dreport.d/dreport \
+ ${D}${bindir}/dreport
+}
+
+# Install dreport sample configuration file
+# From tools/dreport.d/sample.conf
+# to /usr/share/dreport.d/conf.d/dreport.conf
+install_dreport_conf_file() {
+ install -d ${D}${dreport_conf_dir}
+ install -m 0644 ${S}/tools/dreport.d/sample.conf \
+ ${D}${dreport_conf_dir}/dreport.conf
+}
+
+# Install dreport plugins
+# From tools/dreport.d/plugins.d to /usr/share/dreport.d/plugins.d
+install_dreport_plugins_scripts() {
+ install -d ${D}${dreport_plugin_dir}
+ install -m 0755 ${S}/tools/dreport.d/plugins.d/* ${D}${dreport_plugin_dir}/
+}
+
+# Install dreport utility functions
+# From tools/dreport.d/include.d to /usr/share/dreport.d/include.d
+install_dreport_include_scripts() {
+ install -d ${D}${dreport_include_dir}
+ install -m 0755 ${S}/tools/dreport.d/include.d/* \
+ ${D}${dreport_include_dir}/
+}
+
+# Make the links for a single user plugin script
+# Create user directories based on the dump type value in the config section
+# Create softlinks for the base scripts in the user directories
+def install_dreport_user_script(script_path, d):
+ import re
+ import configparser
+
+ #Read the user types from the dreport.conf file
+ configure = configparser.ConfigParser()
+ conf_dir = d.getVar('D', True) + d.getVar('dreport_conf_dir', True)
+ confsource = os.path.join(conf_dir, "dreport.conf")
+ configure.read(confsource)
+
+ config = ("config:")
+ section = "DumpType"
+ dreport_dir = d.getVar('D', True) + d.getVar('dreport_dir', True)
+
+ script = os.path.basename(script_path)
+ srclink = os.path.join(d.getVar('dreport_plugin_dir', True), script)
+
+ file = open(script_path, "r")
+
+ for line in file:
+ if not config in line:
+ continue
+ revalue = re.search('[0-9]+.[0-9]+', line)
+ if not revalue:
+ bb.warn("Invalid format for config value =%s" % line)
+ continue
+ parse_value = revalue.group(0)
+ config_values = re.split('\W+', parse_value, 1)
+ if(len(config_values) != 2):
+ bb.warn("Invalid config value=%s" % parse_value)
+ break;
+ priority = config_values[1]
+ types = [int(d) for d in str(config_values[0])]
+ for type in types:
+ if not configure.has_option(section, str(type)):
+ bb.warn("Invalid dump type id =%s" % (str(type)))
+ continue
+ typestr = configure.get(section, str(type))
+ destdir = os.path.join(dreport_dir, ("pl_" + typestr + ".d"))
+ if not os.path.exists(destdir):
+ os.makedirs(destdir)
+ linkname = "E" + priority + script
+ destlink = os.path.join(destdir, linkname)
+ os.symlink(srclink, destlink)
+
+#Make the links for all the plugins
+python install_dreport_user_scripts() {
+
+ source = d.getVar('S', True)
+ source_path = os.path.join(source, "tools", "dreport.d", "plugins.d")
+ scripts = os.listdir(source_path)
+
+ for script in scripts:
+ srcname = os.path.join(source_path, script)
+ install_dreport_user_script(srcname, d)
+}
+
+#Enable ubifs-workaround by DISTRO_FEATURE obmc-ubi-fs.
+PACKAGECONFIG_append_df-obmc-ubi-fs = " ubifs-workaround"
+PACKAGECONFIG[ubifs-workaround] = " \
+ --enable-ubifs-workaround, \
+ --disable-ubifs-workaround \
+"
+
+do_install[postfuncs] += "install_dreport"
+do_install[postfuncs] += "install_dreport_conf_file"
+do_install[postfuncs] += "install_dreport_plugins_scripts"
+do_install[postfuncs] += "install_dreport_include_scripts"
+do_install[postfuncs] += "install_dreport_user_scripts"
diff --git a/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc
new file mode 100644
index 000000000..7837f3e35
--- /dev/null
+++ b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc
@@ -0,0 +1,5 @@
+HOMEPAGE = "https://github.com/openbmc/phosphor-debug-collector"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+SRC_URI += "git://github.com/openbmc/phosphor-debug-collector"
+SRCREV = "90d147a1ee5340278506bbdf94edc32bb77154f2"
diff --git a/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector/obmc-dump-monitor.service b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector/obmc-dump-monitor.service
new file mode 100644
index 000000000..0e8ef3b5d
--- /dev/null
+++ b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector/obmc-dump-monitor.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Phosphor Dump core monitor.
+
+[Service]
+ExecStart=/usr/bin/env phosphor-dump-monitor
+SyslogIdentifier=phosphor-dump-monitor
+Restart=always
+
+[Install]
+WantedBy={SYSTEMD_DEFAULT_TARGET}
diff --git a/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector/xyz.openbmc_project.Dump.Manager.service b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector/xyz.openbmc_project.Dump.Manager.service
new file mode 100644
index 000000000..131c8cdaf
--- /dev/null
+++ b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector/xyz.openbmc_project.Dump.Manager.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Phosphor Dump Manager
+
+[Service]
+ExecStartPre=/bin/sh -c 'mkdir -p {BMC_DUMP_PATH}'
+ExecStart=/usr/bin/env phosphor-dump-manager
+SyslogIdentifier=phosphor-dump-manager
+Restart=always
+Type=dbus
+BusName={BUSNAME}
+
+[Install]
+WantedBy={SYSTEMD_DEFAULT_TARGET}