From 67d426ed2ab74038ff61a8b1224de45e7a19be4a Mon Sep 17 00:00:00 2001 From: John Kacur Date: Thu, 2 Feb 2023 15:01:16 -0500 Subject: [PATCH] Catch failures in python-dmidecode Resolves: rhbz#2164416 Signed-off-by: John Kacur --- ...l-Catch-failures-in-python-dmidecode.patch | 54 +++++++++++++++++++ rteval.spec | 10 +++- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 rteval-Catch-failures-in-python-dmidecode.patch diff --git a/rteval-Catch-failures-in-python-dmidecode.patch b/rteval-Catch-failures-in-python-dmidecode.patch new file mode 100644 index 0000000..ce35982 --- /dev/null +++ b/rteval-Catch-failures-in-python-dmidecode.patch @@ -0,0 +1,54 @@ +From 606bb31cbf967e5e48c10c7e8ea8bab0685eb410 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Thu, 2 Feb 2023 00:47:31 -0500 +Subject: [PATCH] rteval: Catch failures in python-dmidecode + +python-dmidecode can generate incorrect xml, +namely Attribute unit redefined + +Although useful, the dmidecode is not critical to rteval reporting. + +Therefore catch this, and first see if we can at least query the bios. +If that works report the bios instead off all, and if that +doesn't work, just continue without the dmidecode report. + +Signed-off-by: John Kacur +--- + rteval/sysinfo/dmi.py | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/rteval/sysinfo/dmi.py b/rteval/sysinfo/dmi.py +index 83f347623b58..89a7faae06b1 100644 +--- a/rteval/sysinfo/dmi.py ++++ b/rteval/sysinfo/dmi.py +@@ -79,6 +79,7 @@ class DMIinfo: + + def __init__(self, logger=None): + self.__version = '0.6' ++ self._log = logger + + if not dmidecode_avail: + logger.log(Log.DEBUG, "DMI info unavailable, ignoring DMI tables") +@@ -115,7 +116,18 @@ class DMIinfo: + rep_n.newProp("not_available", "1") + else: + self.__dmixml.SetResultType(dmidecode.DMIXML_DOC) +- dmiqry = xmlout.convert_libxml2_to_lxml_doc(self.__dmixml.QuerySection('all')) ++ try: ++ dmiqry = xmlout.convert_libxml2_to_lxml_doc(self.__dmixml.QuerySection('all')) ++ except Exception as ex1: ++ self._log.log(Log.DEBUG, f'** EXCEPTION {str(ex1)}, will query BIOS only') ++ try: ++ # If we can't query 'all', at least query 'bios' ++ dmiqry = xmlout.convert_libxml2_to_lxml_doc(self.__dmixml.QuerySection('bios')) ++ except Exception as ex2: ++ rep_n.addContent("No DMI tables available") ++ rep_n.newProp("not_available", "1") ++ self._log.log(Log.DEBUG, f'** EXCEPTION {str(ex2)}, dmi info will not be reported') ++ return rep_n + resdoc = self.__xsltparser(dmiqry) + dmi_n = xmlout.convert_lxml_to_libxml2_nodes(resdoc.getroot()) + rep_n.addChild(dmi_n) +-- +2.39.0 + diff --git a/rteval.spec b/rteval.spec index 39aff80..1795db6 100644 --- a/rteval.spec +++ b/rteval.spec @@ -1,6 +1,6 @@ Name: rteval Version: 3.5 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Utility to evaluate system suitability for RT Linux Group: Development/Tools @@ -27,12 +27,15 @@ Requires: openssl openssl-devel Requires: stress-ng Requires: perl-interpreter, perl-devel, perl-generators Requires: libmpc, libmpc-devel +Requires: dwarves +Requires: python3-sphinx BuildArch: noarch #Patches Patch1: rteval-Replace-python-ethtool-with-inline-code.patch Patch2: Fix-DMI-WARNING-when-not-running-as-root.patch Patch3: rteval-Don-t-attempt-to-get-DMIinfo-if-there-are-dmi.patch +Patch4: rteval-Catch-failures-in-python-dmidecode.patch %description The rteval script is a utility for measuring various aspects of @@ -48,6 +51,7 @@ to the screen. %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 %build %{__python3} setup.py build @@ -69,6 +73,10 @@ to the screen. %{_bindir}/rteval %changelog +* Thu Feb 02 2023 John Kacur - 3.5-4 +- Catch failures in python-dmidecode +Resolves: rhbz#2164416 + * Thu Oct 27 2022 John Kacur - 3.5-3 - Fix "DMI WARNING" when not running as root - Don't attempt to get DMI info if dmidecode returns warnings