# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit autotools flag-o-matic systemd

DESCRIPTION="IPMI Management Utilities"
HOMEPAGE="https://ipmiutil.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"

LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64 ~hppa ~ppc x86"
IUSE="static-libs"

RDEPEND=">=dev-libs/openssl-1:="
DEPEND="
	${RDEPEND}
	virtual/os-headers
"

PATCHES=(
	"${FILESDIR}"/${PN}-2.9.9-lib_symlink.patch
	"${FILESDIR}"/${PN}-3.1.8-fix-configure.patch
)

src_prepare() {
	default

	# Fix hardcoded CFLAGS
	sed -i \
		-e 's|-O2 -g|$(CFLAGS)|g' \
		-e 's|-g -O2|$(CFLAGS)|g' \
		util/Makefile.am* || die

	# The configure script makes some guarded and some blind calls to rpm &
	# rpmbuild, that trigger sandbox warnings if rpm is installed in Gentoo.
	sed -r -i -e 's/which rpm/false &/' configure.ac || die
	sed -r -i -e 's/`(rpm|rpmbuild)/`false \1/' configure.ac || die
	# Don't try to inject -O2 or hardening flags (which we set in the toolchain).
	sed -i -e '/CFLAGS="-O2"/d' -e '/cfhard=/d' configure.ac || die

	# Don't compress man pages
	sed '/gzip -nf/d' -i doc/Makefile.am || die

	eautoreconf
}

src_configure() {
	# -Werror=lto-type-mismatch
	# https://bugs.gentoo.org/863590
	# https://github.com/arcress0/ipmiutil/issues/21
	filter-lto

	local myeconfargs=(
		--disable-systemd
		--enable-sha256
		--enable-lanplus
	)
	econf "${myeconfargs[@]}"
}

src_compile() {
	# Ugly workaround. Upstream is misusing the make system here
	# and it doesn't even work.
	# Please check on each bump if this workaround is still required.
	# Yup, still needed in 3.18
	pushd lib/lanplus &>/dev/null || die
	emake
	cp libipmi_lanplus.a .. || die
	popd &>/dev/null || die

	emake
}

src_install() {
	emake DESTDIR="${D}" sysdto="${D}/$(systemd_get_systemunitdir)" install
	dodoc -r AUTHORS ChangeLog NEWS README TODO doc/UserGuide

	# Init scripts are only for Fedora
	# TODO: ship OpenRC systems for non-systemd?
	rm -r "${ED}"/etc/init.d || die 'remove initscripts failed'

	# --disable-static has no effect
	if ! use static-libs ; then
		find "${ED}" -type f -name '*.a' -delete || die
	fi

	keepdir /var/lib/ipmiutil
}