sys-apps/ipmitool: add 1.8.19

Don't use a tarball for patches, stop tying initscript to PV, drop
obolete Debian handling cruft, various other simplifications and style
fixes.

Signed-off-by: John Helmert III <ajak@gentoo.org>
This commit is contained in:
John Helmert III
2022-09-07 23:46:37 -05:00
parent b8f5b4ed89
commit 9bace2960c
10 changed files with 370 additions and 0 deletions

View File

@@ -1,3 +1,5 @@
DIST enterprise-numbers-1.8.19.xz 1500100 BLAKE2B 15c21792bf46220c5908ecf4f0ddafe2fdf13a1799c054a0cb0cb647e7f489768855c4c25fba8a4408505ff0cf02d1a43408d5c4de557b1b30fe8abb477a7926 SHA512 e88cb459a9c8a3172770bcfefbec0a7ad7d65395063c8c0173fce776ea0beb7ad9f3610e636dfbd71d0af8c952c2b9bc6c25c815daa4ab281bed983cbe2ebcc4
DIST enterprise-numbers.2020-10-21.xz 1426932 BLAKE2B bfe39ceea321ba47cd40eafa67862eb4dfd6dc29b192afb20ad0c908cd93a16b4103c5de64d042df012417c8cadc03000f2b2a00779bcc582a430603cad5f3cf SHA512 4a854a56e8ed51997c320cbfba041d43cb98b14743ef80b67e701942068d3729604abaedb617655a83ca21a7e20ea5a622ede4de317ca492cefd46da784d28f3
DIST ipmitool-1.8.18_p20201004.tar.gz 638493 BLAKE2B 52f4ec8c82336b88640d1b91fc17af8f2fe0948a5c48c16067867dcad0852168d48bb21fdd99bde7ed957b66df888fd369c909079d1f81c861acd8c7f8dfa6f2 SHA512 8d72eef3584f4d2c86bfe43f70b5d687f3b7bbdf75b8979f7132c5c98b01baae22c336e540c197652187749fc9bb221a92e546b56e5cf2eb5650fad5094e9433
DIST ipmitool-1.8.19.tar.gz 641383 BLAKE2B e1db12bb7301cb4b551f87fbfcd405b3597a1f32c45447b2b239d9d43a2cdbe213ee5408291d50801035cc80e28078fb3a778ab28335665bc3316798c13ea1fc SHA512 2d91706e9feba4b2ce4808eca087b81b842c4292a5840830001919c06ec8babd8f8761b74bb9dcf8fbc7765f028a5b1a192a3c1b643f2adaa157fed6fb0d1ee3
DIST ipmitool_1.8.18-9.debian-ported-gentoo.tar.xz 3208 BLAKE2B b37a127eff361039b3b810e19dd97f0c395462b658803f56f10f2dd1abbbe92743dc409ce6b83560db15621b7fa7a3c0f989100077893993df18108a082e49d2 SHA512 0f7646a2307ac98425e99dece9d3e3b23026136a97524151efdecc910fb537af41a91702782989046e44163da98610fa05792878473e228b45c16351f6015a45

View File

@@ -0,0 +1,23 @@
#!/sbin/openrc-run
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# /etc/init.d/exchange-bmc-os-info
name="exchange-bmc-os-info"
description="Exchange Information between BMC and OS"
command=/usr/libexec/exchange-bmc-os-info
command_args=""
: "${DEVICENUM:=0}" # which BMC
required_files=/dev/ipmi${DEVICENUM}
depend() {
use hostname modules
keyword -docker -lxc -prefix -systemd-nspawn
}
start() {
"${command}" start
}
stop() {
"${command}" stop
}

View File

@@ -0,0 +1,27 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# /etc/conf.d/ipmievd
# Interfaces:
# open Linux OpenIPMI Interface
# imb Intel IMB Interface
# bmc IPMI v2.0 BMC interface
# lan IPMI v1.5 LAN Interface
# lanplus IPMI v2.0 RMCP+ LAN Interface
INTERFACE="open"
# Commands:
# open Use OpenIPMI for asyncronous notification of events
# sel Poll SEL for notification of events
#
# 'pidfile=...' will be appended!
COMMAND="open daemon"
# Options.
OPTIONS=""
# Device number:
# Used to target a specific BMC on a multi-node, multi-BMC system via the open interface
DEVICENUM=0

View File

@@ -0,0 +1,28 @@
#!/sbin/openrc-run
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# /etc/init.d/ipmievd
depend() {
use logger modules
keyword -docker -lxc -prefix -systemd-nspawn
}
# TODO: ipmievd has a mode where it could be used to monitor multiple BMCs via
# DEVICENUM or remote systems, and it would be valid to run multiple instances.
# That is not supported by this init script at this time.
description="IPMI event daemon for sending events to syslog LOCAL4"
: "${DEVICENUM:=0}"
: "${INTERFACE:=open}"
: "${COMMAND:=open daemon}"
: "${OPTIONS:=}"
daemon=ipmievd
pidfile=/run/${daemon}.pid${DEVICENUM} # see manpage re suffix
command=/usr/sbin/${daemon}
cachefile=/run/${daemon}.${DEVICENUM}.sdr-cache
command_args="-d ${DEVICENUM} -S ${cachefile} -I ${INTERFACE} ${OPTIONS} ${COMMAND} pidfile=${pidfile}"
required_files=/dev/ipmi$DEVICENUM

View File

@@ -0,0 +1,20 @@
Description: CVE-2011-4339
insecure file permission when creating PID files
based on 112_fix_CVE-2011-4339
Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=651917
Forwarded: https://sourceforge.net/p/ipmitool/patches/99/
Last-Update: 2020-10-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
diff -Nuar --exclude '*.orig' ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f.orig/lib/helper.c ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f/lib/helper.c
--- ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f.orig/lib/helper.c 2020-08-07 00:53:06.000000000 -0700
+++ ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f/lib/helper.c 2020-10-21 13:59:02.335206233 -0700
@@ -917,7 +917,6 @@
lprintf(LOG_ERR, "chdir failed: %s (%d)", strerror(errno), errno);
exit(1);
}
- umask(0);
for (fd=0; fd<64; fd++) {
if (fd != intf->fd)

View File

@@ -0,0 +1,21 @@
Description: fix buffer overflow
based on 101_fix_buf_overflow from Leo Iannacone <l3on@ubuntu.com>
Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
Bug: TSOL buffer overflow
Bug-ubuntu: https://bugs.launchpad.net/ubuntu/+source/ipmitool/+bug/633054
Forwarded: https://sourceforge.net/p/ipmitool/patches/100/
Last-Update: 2020-20-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
diff -Nuar --exclude '*.orig' ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f.orig/lib/ipmi_tsol.c ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f/lib/ipmi_tsol.c
--- ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f.orig/lib/ipmi_tsol.c 2020-08-07 00:53:06.000000000 -0700
+++ ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f/lib/ipmi_tsol.c 2020-10-21 13:55:58.571536858 -0700
@@ -374,7 +374,7 @@
char *recvip = NULL;
char in_buff[IPMI_BUF_SIZE];
char out_buff[IPMI_BUF_SIZE * 8];
- char buff[IPMI_BUF_SIZE + 4];
+ char buff[IPMI_BUF_SIZE * 8 + 4];
int fd_socket, result, i;
int out_buff_fill, in_buff_fill;
int ip1, ip2, ip3, ip4;

View File

@@ -0,0 +1,55 @@
Description: long lines in man-page
prevent "can't break line" warnings
Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
Forwarded: not-needed
Last-Update: 2020-10-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
diff -Nuar --exclude '*.orig' ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f.orig/doc/ipmitool.1.in ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f/doc/ipmitool.1.in
--- ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f.orig/doc/ipmitool.1.in 2020-08-07 00:53:06.000000000 -0700
+++ ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f/doc/ipmitool.1.in 2020-10-21 14:00:23.383643880 -0700
@@ -1038,7 +1038,7 @@
AMC slot B2 topology:
Port 0 =====> On Carrier Device ID 0, Port 3
Port 2 =====> AMC slot B1, Port 2
- *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
+ *-*-*-* *-*-* *-*-* *-*-* *-*-* *-*-* *-*-*
From Carrier file: carrierfru
On Carrier Device ID 0 topology:
Port 0 =====> AMC slot B1, Port 4
@@ -1094,7 +1094,7 @@
\-Link Type: AMC.2 Ethernet
\-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link
\-Link Group ID: 0 || Link Asym. Match: exact match
- *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
+ *-*-*-* *-*-* *-*-* *-*-* *-*-* *-*-* *-*-*
AMC slot B1 port 1 ==> On-Carrier Device 0 port 12
Matching Result
- From On-Carrier Device ID 0
@@ -1107,7 +1107,7 @@
\-Link Type: AMC.2 Ethernet
\-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link
\-Link Group ID: 0 || Link Asym. Match: exact match
- *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
+ *-*-*-* *-*-* *-*-* *-*-* *-*-* *-*-* *-*-*
On-Carrier Device vs AMC slot A2
AMC slot A2 port 0 ==> On-Carrier Device 0 port 3
Matching Result
@@ -1121,7 +1121,7 @@
\-Link Type: AMC.2 Ethernet
\-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link
\-Link Group ID: 0 || Link Asym. Match: exact match
- *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
+ *-*-*-* *-*-* *-*-* *-*-* *-*-* *-*-* *-*-*
AMC slot B1 vs AMC slot A2
AMC slot A2 port 2 ==> AMC slot B1 port 2
Matching Result
@@ -1135,7 +1135,7 @@
\-Link Type: AMC.3 Storage
\-Link Type extension: Serial Attached SCSI (SAS/SATA)
\-Link Group ID: 0 || Link Asym. Match: FC or SAS interface {exact match}
- *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
+ *-*-*-* *-*-* *-*-* *-*-* *-*-* *-*-* *-*-*
.TP
\fIunmatch\fP <\fBxx=filename\fR> <\fBxx=filename\fR> \fB...\fr
.br

View File

@@ -0,0 +1,23 @@
Description: Add IANA ID for NVIDIA hardware
Add the NVIDIA IANA ID to the hardcoded list used in ipmitool <= 1.8.18.
After upstream commit "9d41136 ID:491 - Fetch vendor IDs from IANA", ipmitool
generates a list of vendor IDs dynamically at build time, so we can drop this
patch in future releases.
Author: dann frazier <dannf@debian.org>
Origin: backport
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903616
Forwarded: not-needed
Last-Update: 2020-10-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
diff -Nuar --exclude '*.orig' --exclude '*.rej' ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f.orig/include/ipmitool/ipmi.h ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f/include/ipmitool/ipmi.h
--- ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f.orig/include/ipmitool/ipmi.h 2020-08-07 00:53:06.000000000 -0700
+++ ipmitool-50d8c36edf9657720e25445a435dabc44572cf5f/include/ipmitool/ipmi.h 2020-10-21 14:04:11.675128602 -0700
@@ -281,6 +281,7 @@
/* 4769 for [IBM Corporation] */
IPMI_OEM_IBM_4769 = 4769,
IPMI_OEM_MAGNUM = 5593,
+ IPMI_OEM_NVIDIA = 5703,
IPMI_OEM_TYAN = 6653,
IPMI_OEM_QUANTA = 7244,
IPMI_OEM_VIKING = 9237,

View File

@@ -0,0 +1,25 @@
#!/sbin/openrc-run
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
name="log_bmc"
description="Add SEL entries to indicate OS Boot status"
command=/usr/libexec/log_bmc.sh
command_args=""
: "${DEVICENUM:=0}" # which BMC
required_files=/dev/ipmi${DEVICENUM}
depend() {
use modules
after ipmievd # to capture our own log event
keyword -docker -lxc -prefix -systemd-nspawn
}
start() {
# TODO: should this keep start so it only fires once per boot?
"${command}" os_boot
}
stop() {
"${command}" os_shutdown
}

View File

@@ -0,0 +1,146 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit autotools systemd
DESCRIPTION="Utility for controlling IPMI enabled devices"
HOMEPAGE="https://github.com/ipmitool/ipmitool"
COMMIT_ID=
if [[ -n "${COMMIT_ID}" ]]; then
SRC_URI="https://github.com/${PN}/${PN}/archive/${COMMIT_ID}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}-${COMMIT_ID}"
else
MY_P="${PN^^}_${PV//./_}"
SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/${MY_P}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}-${MY_P}"
fi
# to generate: `make enterprise-numbers` from git checkout of release tag
SRC_URI+="
https://dev.gentoo.org/~ajak/distfiles/${CATEGORY}/${PN}/enterprise-numbers-${PV}.xz"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~x86"
IUSE="openbmc openipmi static"
RDEPEND="dev-libs/openssl:0=
sys-libs/readline:0=
openbmc? ( sys-apps/systemd:0= )"
DEPEND="${RDEPEND}
>=sys-devel/autoconf-2.69-r5
virtual/os-headers
openipmi? ( sys-libs/openipmi )"
#freeipmi? ( sys-libs/freeipmi )
# ipmitool CAN build against || ( sys-libs/openipmi sys-libs/freeipmi )
# but it doesn't actually need either.
PATCHES=(
# yoinked out of debian's patchset, previously carried in a SRC_URI
# tarball
"${FILESDIR}/${P}-fix-buffer-overflow.patch"
"${FILESDIR}/${P}-CVE-2011-4339.patch"
"${FILESDIR}/${P}-manpage-longlines.patch"
"${FILESDIR}/${P}-nvidia-iana.patch"
)
src_prepare() {
default
# Gentoo chooses to install ipmitool in /usr/sbin
# Where RedHat chooses /usr/bin
sed -i -e \
's,/usr/bin/ipmitool,/usr/sbin/ipmitool,g' \
"${S}"/contrib/* \
|| die "sed bindir failed"
eautoreconf
# If this file is not present, then ipmitool will try to download it during make install!
cp -al "${WORKDIR}/enterprise-numbers-${PV}" "${S}/enterprise-numbers" \
|| die "Could not place IANA enterprise-numbers"
}
src_configure() {
# - LIPMI and BMC are the Solaris libs
# - OpenIPMI is unconditionally enabled in the configure as there is compat
# code that is used if the library itself is not available
# FreeIPMI does build now, but is disabled until the other arches keyword it
# `use_enable freeipmi intf-free` \
# --enable-ipmievd is now unconditional
local econfargs=(
$(use_enable static) \
--enable-ipmishell \
--enable-intf-lan \
--enable-intf-usb \
$(use_enable openbmc intf-dbus) \
--enable-intf-lanplus \
--enable-intf-open \
--enable-intf-serial \
--disable-intf-bmc \
--disable-intf-dummy \
--disable-intf-free \
--disable-intf-imb \
--disable-intf-lipmi \
--disable-internal-md5 \
--with-kerneldir=/usr \
--bindir=/usr/sbin \
--runstatedir=/run \
CFLAGS="${CFLAGS}"
)
econf "${econfargs[@]}"
}
src_install() {
emake DESTDIR="${D}" PACKAGE="${PF}" install
into /usr
newinitd "${FILESDIR}/ipmievd.initd" ipmievd
newconfd "${FILESDIR}/ipmievd.confd" ipmievd
# From debian, less configurable than OpenRC
systemd_dounit "${FILESDIR}/ipmievd.service"
dosbin contrib/bmclanconf
exeinto /usr/libexec
doexe contrib/log_bmc.sh
newinitd "${FILESDIR}/log_bmc.initd" log_bmc
# contrib/exchange-bmc-os-info.init.redhat
# contrib/exchange-bmc-os-info.service.redhat
# contrib/exchange-bmc-os-info.sysconf
exeinto /usr/libexec
newexe contrib/exchange-bmc-os-info.init.redhat exchange-bmc-os-info
insinto /etc/sysconfig
newins contrib/exchange-bmc-os-info.sysconf exchange-bmc-os-info
systemd_newunit contrib/exchange-bmc-os-info.service.redhat exchange-bmc-os-info.service
newinitd "${FILESDIR}/exchange-bmc-os-info.initd" exchange-bmc-os-info
# contrib/bmc-snmp-proxy
# contrib/bmc-snmp-proxy.service
# contrib/bmc-snmp-proxy.sysconf
exeinto /usr/libexec
doexe contrib/bmc-snmp-proxy
insinto /etc/sysconfig
newins contrib/bmc-snmp-proxy.sysconf bmc-snmp-proxy
systemd_dounit contrib/bmc-snmp-proxy.service
# TODO: initd for bmc-snmp-proxy
insinto "/usr/share/${PN}"
doins contrib/oem_ibm_sel_map
cd "${S}/contrib"
docinto contrib
dodoc collect_data.sh create_rrds.sh create_webpage_compact.sh create_webpage.sh README
}