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

EAPI=8

RUST_OPTIONAL=1
RUST_MIN_VER=1.48
# BENTOO-DIVERGENCE: INHERIT - no virtualx in this ebuild's inherit line, where
# ::gentoo lists it. Cosmetic, and checked rather than assumed: gstreamer-meson
# .eclass does "inherit virtualx" itself, in the branch taken by a top-level
# module (not a split plugin), on both sides. virtualx appears in _eclasses_ of
# both md5-cache entries, so the same eclass is loaded either way - ::gentoo
# simply restates in the ebuild what its eclass already did.
inherit gstreamer-meson rust verify-sig

DESCRIPTION="Open source multimedia framework"
HOMEPAGE="https://gstreamer.freedesktop.org/"
SRC_URI="https://${PN}.freedesktop.org/src/${PN}/${P}.tar.xz"
SRC_URI+=" verify-sig? ( https://${PN}.freedesktop.org/src/${PN}/${P}.tar.xz.asc )"

LICENSE="LGPL-2+"
SLOT="1.0"
KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv ~sparc x86 ~x64-macos ~x64-solaris"
IUSE="+caps +introspection ptp unwind"

# gstreamer-1.22.x requires 2.62, but 2.64 is strongly recommended
RDEPEND="
	>=dev-libs/glib-2.64.0:2[${MULTILIB_USEDEP}]
	caps? ( sys-libs/libcap[${MULTILIB_USEDEP}] )
	introspection? ( >=dev-libs/gobject-introspection-1.31.1:= )
	unwind? (
		>=sys-libs/libunwind-1.2_rc1[${MULTILIB_USEDEP}]
		dev-libs/elfutils[${MULTILIB_USEDEP}]
	)
"
DEPEND="${RDEPEND}"
BDEPEND="
	verify-sig? ( sec-keys/openpgp-keys-tpm )
	dev-util/glib-utils
	app-alternatives/yacc
	app-alternatives/lex
	ptp? ( ${RUST_DEPEND} )
"

DOCS=( README.md )

# BENTOO-DIVERGENCE: PATCHES - disable-test-with-no-tools, absent from
# ::gentoo. gstregistry looks for gst-plugin-scanner, which is not built when
# tools are disabled -- and this overlay disables them on the non-native ABI via
# meson_native_enabled, so the testsuite breaks there and not on ::gentoo, which
# builds tools on every ABI. The patch header records the wider bug this papers
# over (Gentoo 870361, still open); the audit re-checked it and found it
# unchanged.
PATCHES=(
	"${FILESDIR}"/gstreamer-1.24.10-disable-test-with-no-tools.patch
)

VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/tpm.asc

# Rust
QA_FLAGS_IGNORED="usr/libexec/gstreamer-1.0/gst-ptp-helper"

pkg_setup() {
	gstreamer-meson_pkg_setup
	use ptp && rust_pkg_setup
}

multilib_src_configure() {
	local emesonargs=(
		-Dtools=$(multilib_is_native_abi && echo enabled || echo disabled)
		-Dbenchmarks=disabled
		-Dexamples=disabled
		-Dcheck=enabled
		-Dptp-helper=$(multilib_is_native_abi && echo $(usex 'ptp' 'enabled' 'disabled') || echo disabled)
		$(meson_feature unwind libunwind)
		$(meson_feature unwind libdw)
	)

	if use caps ; then
		emesonargs+=( -Dptp-helper-permissions=capabilities )
	else
		emesonargs+=(
			-Dptp-helper-permissions=setuid-root
			-Dptp-helper-setuid-user=nobody
			-Dptp-helper-setuid-group=nobody
		)
	fi

	gstreamer_multilib_src_configure
}