commit:     5510459bdacd6cdc1d2a1239cf212609a4e38921
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Apr  8 22:26:31 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Apr  8 22:26:31 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5510459b

sys-apps/dmidecode: backport HPE OEM record 137 fix

Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-apps/dmidecode/dmidecode-3.5-r2.ebuild         | 51 ++++++++++++++++++++++
 ...ecode-3.5-backport-HPE-OEM-record-137-fix.patch | 39 +++++++++++++++++
 2 files changed, 90 insertions(+)

diff --git a/sys-apps/dmidecode/dmidecode-3.5-r2.ebuild 
b/sys-apps/dmidecode/dmidecode-3.5-r2.ebuild
new file mode 100644
index 000000000000..b9fa80eb0516
--- /dev/null
+++ b/sys-apps/dmidecode/dmidecode-3.5-r2.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Upstream often give "recommended patches" at 
https://www.nongnu.org/dmidecode/
+# Check regularly after releases!
+inherit flag-o-matic toolchain-funcs
+
+DESCRIPTION="DMI (Desktop Management Interface) table related utilities"
+HOMEPAGE="https://www.nongnu.org/dmidecode/";
+SRC_URI="https://savannah.nongnu.org/download/${PN}/${P}.tar.xz";
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="-* ~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv 
~x86 ~x86-solaris"
+IUSE="selinux"
+
+RDEPEND="selinux? ( sec-policy/selinux-dmidecode )"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-backport-HPE-OEM-record-137-fix.patch
+)
+
+src_prepare() {
+       default
+
+       sed -i \
+               -e "/^prefix/s:/usr/local:${EPREFIX}/usr:" \
+               -e "/^docdir/s:dmidecode:${PF}:" \
+               -e '/^PROGRAMS !=/d' \
+               Makefile || die
+}
+
+src_compile() {
+       append-lfs-flags
+
+       emake \
+               CFLAGS="${CFLAGS} ${CPPFLAGS}" \
+               LDFLAGS="${LDFLAGS}" \
+               CC="$(tc-getCC)"
+}
+
+pkg_postinst() {
+       if [[ ${CHOST} == *-solaris* ]] ; then
+               einfo "dmidecode needs root privileges to read /dev/xsvc"
+               einfo "To make dmidecode useful, either run as root, or chown 
and setuid the binary."
+               einfo "Note that /usr/sbin/ptrconf and /usr/sbin/ptrdiag give 
similar"
+               einfo "information without requiring root privileges."
+       fi
+}

diff --git 
a/sys-apps/dmidecode/files/dmidecode-3.5-backport-HPE-OEM-record-137-fix.patch 
b/sys-apps/dmidecode/files/dmidecode-3.5-backport-HPE-OEM-record-137-fix.patch
new file mode 100644
index 000000000000..b1c0270c4762
--- /dev/null
+++ 
b/sys-apps/dmidecode/files/dmidecode-3.5-backport-HPE-OEM-record-137-fix.patch
@@ -0,0 +1,39 @@
+As recommended by upstream on their website.
+
+From 80de376231e903d2cbea95e51ffea31860502159 Mon Sep 17 00:00:00 2001
+From: Jerry Hoemann <jerry.hoem...@hpe.com>
+Date: Mon, 3 Apr 2023 10:15:12 +0200
+Subject: dmioem: HPE OEM Record 237 Firmware change
+
+HPE OEM record type 237 offset 0x09 field was changed from a single
+byte STRING to a two byte WORD representing date.
+
+Fixes: cdab638dabb7 ("dmioem: Decode HPE OEM Record 237")
+Signed-off-by: Jerry Hoemann <jerry.hoem...@hpe.com>
+Signed-off-by: Jean Delvare <jdelv...@suse.de>
+--- a/dmioem.c
++++ b/dmioem.c
+@@ -1094,7 +1094,8 @@ static int dmi_decode_hp(const struct dmi_header *h)
+                        *  0x06  | Manufacture|STRING | DIMM Manufacturer
+                        *  0x07  | Part Number|STRING | DIMM Manufacturer's 
Part Number
+                        *  0x08  | Serial Num |STRING | DIMM Vendor Serial 
Number
+-                       *  0x09  | Spare Part |STRING | DIMM Spare Part Number
++                       *  0x09  | Man Date   | BYTE  | DIMM Manufacture Date 
(YEAR) in BCD
++                       *  0x0A  | Man Date   | BYTE  | DIMM Manufacture Date 
(WEEK) in BCD
+                        */
+                       if (gen < G9) return 0;
+                       pr_handle_name("%s DIMM Vendor Information", company);
+@@ -1105,8 +1106,9 @@ static int dmi_decode_hp(const struct dmi_header *h)
+                       pr_attr("DIMM Manufacturer Part Number", "%s", 
dmi_string(h, data[0x07]));
+                       if (h->length < 0x09) break;
+                       pr_attr("DIMM Vendor Serial Number", "%s", 
dmi_string(h, data[0x08]));
+-                      if (h->length < 0x0A) break;
+-                      pr_attr("DIMM Spare Part Number", "%s", dmi_string(h, 
data[0x09]));
++                      if (h->length < 0x0B) break;
++                      if (WORD(data + 0x09))
++                              pr_attr("DIMM Manufacture Date", 
"20%02x-W%02x", data[0x09], data[0x0A]);
+                       break;
+ 
+               case 238:
+-- 
+cgit v1.1

Reply via email to