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

EAPI=8

PYTHON_COMPAT=( python3_{12..14} )

inherit meson python-r1 verify-sig xdg-utils

DESCRIPTION="A Python Interface to GStreamer"
HOMEPAGE="https://gstreamer.freedesktop.org/"
SRC_URI="https://gstreamer.freedesktop.org/src/${PN}/${P}.tar.xz"
SRC_URI+=" verify-sig? ( https://gstreamer.freedesktop.org/src/${PN}/${P}.tar.xz.asc )"

LICENSE="LGPL-2+"
SLOT="1.0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"

RDEPEND="${PYTHON_DEPS}
	>=media-libs/gstreamer-${PV}:1.0[introspection]
	>=media-libs/gst-plugins-bad-${PV}:1.0[introspection]
	>=media-libs/gst-plugins-base-${PV}:1.0[introspection]
	>=dev-python/pygobject-3.8:3[${PYTHON_USEDEP}]
"
DEPEND="${RDEPEND}"
BDEPEND="
	virtual/pkgconfig
"

BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-tpm )"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/tpm.asc

# BENTOO-DIVERGENCE: PATCHES - one patch where ::gentoo has two. Their
# pygobject-3.52 patch is a backport onto 1.26.11 and reverse-applies cleanly
# against 1.28.6, so the plugins_install_dir work it adds is already upstream
# here. Their skip-test one is NOT upstream and IS needed - it is the patch
# above.
# Taken from ::gentoo 2026-09-07 and renamed version-agnostic, because the
# autoupdate applier never renames anything under files/. Upstream has not
# applied it: testsuite/test_gst_init.py still carries both tests unskipped in
# 1.28.6 and 1.29.2, and neither side declares IUSE=test or RESTRICT, so
# FEATURES=test runs them and they fail against >=dev-python/pygobject-3.54.
# Verified to apply -p1 to both tarballs before adding.
PATCHES=(
	"${FILESDIR}"/${PN}-skip-pygobject-broken-tests.patch
)

src_prepare() {
	default

	# Avoid building & testing plugin - it must NOT be multi-python as gst-inspect will map in all libpython.so versions
	# and crash or behave mysteriously.
	# Python plugin support is of limited use (GIL gets in the way). If it's ever requested or needed, it should be a
	# separate python-single-r1 media-plugins/gst-plugins-python package that only builds the plugin directory.
	sed -e '/subdir.*plugin/d' -i meson.build || die
	sed -e '/test_plugin.py/d' -i testsuite/meson.build || die

	xdg_environment_reset
}

src_configure() {
	configuring() {
		meson_src_configure \
			-Dpython="${EPYTHON}"
	}
	python_foreach_impl configuring
}

src_compile() {
	python_foreach_impl meson_src_compile
}

src_test() {
	python_foreach_impl meson_src_test
}

src_install() {
	installing() {
		meson_src_install
		python_optimize
	}
	python_foreach_impl installing
}