diff options
Diffstat (limited to 'meta-phosphor/recipes-phosphor/dump')
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} |