trace-cmd-3.1.5-r2.ebuild

Download (3.3 KB)

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

EAPI=8
PYTHON_COMPAT=( python3_{9..11} )
DISTUTILS_OPTIONAL=1

inherit linux-info bash-completion-r1 python-r1 toolchain-funcs

DESCRIPTION="User-space front-end for Ftrace"
HOMEPAGE="https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git"

if [[ ${PV} == *9999 ]] ; then
	EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/trace-cmd/${PN}.git"
	inherit git-r3
else
	SRC_URI="https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/snapshot/${PN}-v${PV}.tar.gz"
	KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
	S="${WORKDIR}/${PN}-v${PV}"
fi

LICENSE="GPL-2+ LGPL-2.1+"
SLOT="0/${PV}"
IUSE="+audit doc python test udis86 +zstd"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
RESTRICT="!test? ( test )"

# XXX trace-cmd autodetects this without configurability. This might cause
# issues if the libraries are picked up with the useflag disabled and later
# uninstalled
RDEPEND="
	audit? ( sys-process/audit )
	python? ( ${PYTHON_DEPS} )
	udis86? ( dev-libs/udis86 )
	zstd? ( >=app-arch/zstd-1.4 )
	!<dev-libs/libtracefs-1.6.1
	>=dev-libs/libtracefs-1.6.1-r1
	>=dev-libs/libtraceevent-1.6.3
"
DEPEND="${RDEPEND}
	sys-kernel/linux-headers
	test? ( dev-util/cunit )
"
BDEPEND="
	virtual/pkgconfig
	python? ( dev-lang/swig )
	doc? (
		app-text/asciidoc
		dev-util/source-highlight
	)
"

# having trouble getting tests to compile
RESTRICT+=" test"

PATCHES=(
	"${FILESDIR}"/${PN}-3.1.4-hang-make-4.4.patch
)

pkg_setup() {
	local CONFIG_CHECK="
		~TRACING
		~FTRACE
		~BLK_DEV_IO_TRACE"

	linux-info_pkg_setup
}

src_prepare() {
	default
	sed -r -e 's:([[:space:]]+)install_bash_completion($|[[:space:]]+):\1:' \
		-e '/^prefix/s:/usr/local:/usr:g' \
		-i Makefile || die "sed failed"

	sed -i -e "s|^htmldir.*|&-${PVR}|g" \
		-e "s|^pdfdir.*|&-${PVR}|g" \
		Documentation/libtracecmd/Makefile \
		Documentation/trace-cmd/Makefile || die
}

src_configure() {
	EMAKE_FLAGS=(
		BUILD_OUTPUT="${WORKDIR}/${P}_build"
		"prefix=${EPREFIX}/usr"
		"libdir=${EPREFIX}/usr/$(get_libdir)"
		"CC=$(tc-getCC)"
		"AR=$(tc-getAR)"
		"BASH_COMPLETE_DIR=$(get_bashcompdir)"
		"etcdir=/etc"
		$(usex audit '' 'NO_AUDIT=' '' '1')
		$(usex test 'CUNIT_INSTALLED=' '' '1' '')
		$(usex udis86 '' 'NO_UDIS86=' '' '1')
		VERBOSE=1
	)
}

src_compile() {
	emake "${EMAKE_FLAGS[@]}" NO_PYTHON=1 \
		trace-cmd

	if use python; then
		python_copy_sources
		python_foreach_impl python_compile
	fi

	use doc && emake doc
}

python_compile() {
	pushd "${BUILD_DIR}" > /dev/null || die

	emake "${EMAKE_FLAGS[@]}" \
		PYTHON_VERS="${EPYTHON}" \
		PYTHON_PKGCONFIG_VERS="${EPYTHON//python/python-}" \
		python_dir=$(python_get_sitedir)/${PN} \
		python ctracecmd.so

	popd > /dev/null || die
}

src_test() {
	emake "${EMAKE_FLAGS[@]}" test
}

src_install() {
	emake "${EMAKE_FLAGS[@]}" NO_PYTHON=1 \
		DESTDIR="${D}" \
		install install_libs

	newbashcomp tracecmd/trace-cmd.bash "${PN}"

	use doc && emake DESTDIR="${D}" install_doc
	use python && python_foreach_impl python_install
}

python_install() {
	pushd "${BUILD_DIR}" > /dev/null || die

	emake "${EMAKE_FLAGS[@]}" DESTDIR="${D}" \
		PYTHON_VERS="${EPYTHON}" \
		PYTHON_PKGCONFIG_VERS="${EPYTHON//python/python-}" \
		python_dir=$(python_get_sitedir)/${PN} \
		install_python

	popd > /dev/null || die

	python_optimize
}

Thank you!