summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2020-10-24 15:59:40 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2020-10-24 16:00:09 -0700
commit95ec1db1409c91b3683d7af31b13b1b8648bb3e8 (patch)
treeae27c2a9797278654fa358d309fa04d1f79ea3ed /sys-apps/ipmitool
parentdev-util/promu: Version updated to 0.6.1. (diff)
downloadgentoo-95ec1db1409c91b3683d7af31b13b1b8648bb3e8.tar.gz
gentoo-95ec1db1409c91b3683d7af31b13b1b8648bb3e8.tar.bz2
gentoo-95ec1db1409c91b3683d7af31b13b1b8648bb3e8.zip
sys-apps/ipmitool: systemd unit for ipmievd
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Diffstat (limited to 'sys-apps/ipmitool')
-rw-r--r--sys-apps/ipmitool/files/ipmievd.service10
-rw-r--r--sys-apps/ipmitool/ipmitool-1.8.18_p20201004-r3.ebuild202
2 files changed, 212 insertions, 0 deletions
diff --git a/sys-apps/ipmitool/files/ipmievd.service b/sys-apps/ipmitool/files/ipmievd.service
new file mode 100644
index 000000000000..fdae14f231ce
--- /dev/null
+++ b/sys-apps/ipmitool/files/ipmievd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=IPMI event daemon
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/ipmievd open daemon
+
+[Install]
+WantedBy=multi-user.target
+Alias=ipmi.service
diff --git a/sys-apps/ipmitool/ipmitool-1.8.18_p20201004-r3.ebuild b/sys-apps/ipmitool/ipmitool-1.8.18_p20201004-r3.ebuild
new file mode 100644
index 000000000000..528c0393a61c
--- /dev/null
+++ b/sys-apps/ipmitool/ipmitool-1.8.18_p20201004-r3.ebuild
@@ -0,0 +1,202 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit autotools eutils flag-o-matic systemd
+
+DESCRIPTION="Utility for controlling IPMI enabled devices."
+HOMEPAGE="http://ipmitool.sf.net/"
+DEBIAN_PR="9.debian"
+DEBIAN_PV="${PV/_p*}"
+DEBIAN_P="${PN}_${DEBIAN_PV}"
+DEBIAN_PF="${DEBIAN_P}-${DEBIAN_PR}"
+COMMIT_ID=7fd7c0f2ba39e223868a8d83d81d4074f057d6fc
+if [[ -n "${COMMIT_ID}" ]]; then
+ S="${WORKDIR}/${PN}-${COMMIT_ID}"
+ SRC_URI="https://github.com/ipmitool/ipmitool/archive/${COMMIT_ID}.tar.gz -> ${P}.tar.gz"
+else
+ SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+fi
+# https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
+# is not available with version numbers or dates!
+SRC_URI+="
+ https://dev.gentoo.org/~robbat2/distfiles/ipmitool_1.8.18-9.debian-ported-gentoo.tar.xz
+ https://dev.gentoo.org/~robbat2/distfiles/enterprise-numbers.2020-10-21.xz
+ "
+ #http://http.debian.net/debian/pool/main/i/${PN}/${DEBIAN_PF}.tar.xz
+ # https://launchpad.net/ubuntu/+archive/primary/+files/${DEBIAN_PF}.tar.xz
+#IUSE="freeipmi openipmi status"
+IUSE="libressl openbmc openipmi static"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~x86"
+LICENSE="BSD"
+
+RDEPEND="
+ !libressl? ( dev-libs/openssl:0= )
+ libressl? ( dev-libs/libressl:0= )
+ openbmc? ( sys-apps/systemd:0= )
+ sys-libs/readline:0="
+DEPEND="${RDEPEND}
+ openipmi? ( sys-libs/openipmi )
+ virtual/os-headers"
+ #freeipmi? ( sys-libs/freeipmi )
+# ipmitool CAN build against || ( sys-libs/openipmi sys-libs/freeipmi )
+# but it doesn't actually need either.
+
+PATCHES=(
+ #"${FILESDIR}"/${P}-openssl-1.1.patch
+)
+
+# I hope all of this will get MUCH cleaner if upstream will just make a new
+# release! - robbat2 2020/10/21
+src_prepare() {
+ default
+ if [ -d "${S}"/debian ] ; then
+ mv "${S}"/debian{,.package}
+ ln -s "${WORKDIR}"/debian "${S}"
+ eautoreconf
+ # Upstream commit includes SOME of the debian changes, but not all of them
+ sed -i \
+ -e '/^#/d' \
+ -e '/0120-openssl1.1.patch/d' \
+ debian/patches/series
+ for p in $(cat debian/patches/series) ; do
+ echo $p
+ if ! nonfatal eapply -p1 debian/patches/$p ; then
+ echo "failed $p"
+ fail=1
+ fi
+ done
+ [[ $fail -eq 1 ]] && die "fail"
+ fi
+ pd="${WORKDIR}"/ipmitool_1.8.18-9.debian-ported-gentoo/
+ PATCHES=(
+ #"${pd}"/0000.0120-openssl1.1.patch
+ "${pd}"/0001.0100-fix_buf_overflow.patch
+ "${pd}"/0002.0500-fix_CVE-2011-4339.patch
+ "${pd}"/0003.0600-manpage_longlines.patch
+ #"${pd}"/0004.0110-getpass-prototype.patch
+ #"${pd}"/0005.0115-typo.patch
+ "${pd}"/0006.0125-nvidia-iana.patch
+ "${pd}"/0007.0615-manpage_typo.patch
+ #"${pd}"/0008.0130-Correct_lanplus_segment_violation.patch
+ "${pd}"/0009.0005-gcc10.patch
+ #"${pd}"/0010.0010-utf8.patch
+ )
+ for p in "${PATCHES[@]}" ; do
+ eapply -p1 $p || die "failed $p"
+ done
+
+ # 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"
+
+ # Consistent RUNSTATEDIR
+ sed -i -e \
+ 's,/var/run,/run,g' \
+ "${S}/doc/ipmievd.8.in" \
+ "${S}"/contrib/* \
+ "${S}"/lib/helper.c \
+ "${S}"/src/ipmievd.c \
+ || die "sed /var/run failed"
+
+ eautoreconf
+
+ # If this file is not present, then ipmitool will try to download it during make install!
+ cp -al \
+ "${WORKDIR}/enterprise-numbers.2020-10-21" \
+ "${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
+
+ # for pidfiles, runstatedir not respected in all parts of code
+ append-cppflags -D_PATH_VARRUN=/run/
+
+ # WGET & CURL are set to avoid network interaction, we manually inject the
+ # IANA enterprise-numbers file instead.
+ #
+ # DEFAULT_INTF=open # default to OpenIPMI, do not take external input
+ WGET=/bin/true \
+ CURL=/bin/true \
+ DEFAULT_INTF=open \
+ econf \
+ $(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}"
+
+ # Fix linux/ipmi.h to compile properly. This is a hack since it doesn't
+ # include the below file to define some things.
+ echo "#include <asm/byteorder.h>" >>config.h
+
+}
+
+src_install() {
+ emake DESTDIR="${D}" PACKAGE="${PF}" install
+ rm -f "${D}"/usr/share/doc/${PF}/COPYING
+ into /usr
+
+ newinitd "${FILESDIR}"/${PN}-1.8.18-ipmievd.initd ipmievd
+ newconfd "${FILESDIR}"/${PN}-1.8.18-ipmievd.confd ipmievd
+ # From debian, less configurable than OpenRC
+ systemd_dounit "${FILESDIR}"/ipmievd.service
+
+ # Everything past this point is installing contrib/
+ dosbin contrib/bmclanconf
+
+ exeinto /usr/libexec
+ doexe contrib/log_bmc.sh
+ newinitd "${FILESDIR}/log_bmc-1.8.18.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-1.8.18.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
+
+ docinto contrib
+ cd "${S}"/contrib
+ dodoc collect_data.sh create_rrds.sh create_webpage_compact.sh create_webpage.sh README
+}