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

EAPI=7

inherit autotools

LTRACE_V=$(ver_cut 1-3)
DB_V=$(ver_cut 4-)

DESCRIPTION="trace library calls made at runtime"
HOMEPAGE="https://gitlab.com/cespedes/ltrace"
SRC_URI="
	mirror://debian/pool/main/l/${PN}/${PN}_${LTRACE_V}.orig.tar.bz2
	mirror://debian/pool/main/l/${PN}/${PN}_${LTRACE_V}-${DB_V}.debian.tar.xz
"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm ~ia64 ~mips ppc ~ppc64 ~sparc x86"
IUSE="debug selinux test unwind"

RDEPEND="virtual/libelf:=
	selinux? ( sys-libs/libselinux )
	unwind? ( sys-libs/libunwind:= )"
DEPEND="${RDEPEND}
	sys-libs/binutils-libs
	test? ( dev-util/dejagnu )"

# under musl tests need major work upstream, half of them does not work.
RESTRICT="
	!test? ( test )
	elibc_musl? ( test )
"

S=${WORKDIR}/${PN}-${LTRACE_V}

PATCHES=(
	"${FILESDIR}"/${PN}-0.7.3-test-protos.patch #bug 421649
	"${FILESDIR}"/${PN}-0.7.3-alpha-protos.patch
	"${FILESDIR}"/${PN}-0.7.3-ia64.patch
	"${FILESDIR}"/${PN}-0.7.3-print-test-pie.patch
	"${FILESDIR}"/${PN}-0.7.3-ia64-pid_t.patch
	"${FILESDIR}"/${PN}-0.7.3-musl-host.patch #713428
	"${FILESDIR}"/${PN}-0.7.3-no-error.h.patch #713428
	"${FILESDIR}"/${PN}-0.7.3-no-error.h-2.patch #713428
	"${FILESDIR}"/${PN}-0.7.3-no-REG_NOERROR.patch #713428
	"${FILESDIR}"/${PN}-0.7.3-pid_t.patch #713428
	"${FILESDIR}"/${PN}-0.7.3-tuple-tests.patch
	"${FILESDIR}"/${PN}-0.7.3-CXX-for-tests.patch
	"${FILESDIR}"/${PN}-0.7.3-test-glibc-2.33.patch
	"${FILESDIR}"/${PN}-0.7.3-disable-munmap-test.patch
)

src_prepare() {
	eapply "${WORKDIR}"/debian/patches/[0-9]*

	default

	sed -i '/^dist_doc_DATA/d' Makefile.am || die
	eautoreconf
}

src_configure() {
	ac_cv_header_selinux_selinux_h=$(usex selinux) \
	ac_cv_lib_selinux_security_get_boolean_active=$(usex selinux) \
	econf \
		--disable-werror \
		$(use_enable debug) \
		$(use_with unwind libunwind)
}

src_test() {
	# On kernels with Yama enabled this will not run, even without sandbox,
	# unless /proc/sys/kernel/yama/ptrace_scope == 0. Just don't bother.
	# Note: we only delete it here in order to avoid Makefile.am patching.
	rm -f testsuite/ltrace.minor/attach-process.exp
	# sandbox redirects vfork() to fork(): bug # 774054
	# Let's avoid sandbox entirely.
	SANDBOX_ON=0 LD_PRELOAD= emake check
}