maintainer="Krassy Boykinov <kboykinov@teamcentrixx.com>"
pkgname=gst-plugins-good
pkgver=1.26.1
pkgrel=0
pkgdesc="GStreamer streaming media framework good plugins"
url="https://gstreamer.freedesktop.org"
arch="all"
license="GPL-2.0-or-later LGPL-2.0-or-later"
subpackages="
	$pkgname-dbg
	$pkgname-lang
	$pkgname-gtk
	"
# qt* is not available on armhf
case "$CARCH" in
	armhf)
		;;
	*)
		subpackages="$subpackages $pkgname-qt"
		;;
esac

replaces="gst-plugins-good1 gst-plugins-ugly"
depends="libsoup3"
makedepends="
	cairo-dev
	flac-dev
	gdk-pixbuf-dev
	glib-dev
	gst-plugins-base-dev
	gstreamer-dev
	gtk+3.0-dev
	jack-dev
	lame-dev
	libavc1394-dev
	libdv-dev
	libgudev-dev
	libice-dev
	libiec61883-dev
	libjpeg-turbo-dev
	libogg-dev
	libpng-dev
	libshout-dev
	libsm-dev
	libsoup3-dev
	libvpx-dev
	libxdamage-dev
	libxext-dev
	libxv-dev
	linux-headers
	meson
	mpg123-dev
	nasm
	opencore-amr-dev
	orc-compiler
	orc-dev
	pulseaudio-dev
	taglib-dev
	wavpack-dev
	zlib-dev
	"
case "$CARCH" in
	armhf)
		;;
	*)
		makedepends="
			$makedepends
			qt5-qtdeclarative-dev
			qt5-qttools-dev
			qt5-qtwayland-dev
			qt5-qtx11extras-dev
			qt6-qtdeclarative-dev
			qt6-qtwayland-dev
			qt6-qttools-dev
			"
		;;
esac

ldpath="/usr/lib/gstreamer-1.0"
source="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-$pkgver.tar.xz
	flaky-test.patch
	s390x-arithmetic-exception_patch
	"

# secfixes:
#   1.24.10-r0:
#     - CVE-2024-47598
#     - CVE-2024-47539
#     - CVE-2024-47543
#     - CVE-2024-47545
#     - CVE-2024-47544
#     - CVE-2024-47597
#     - CVE-2024-47546
#     - CVE-2024-47606
#     - CVE-2024-47596
#     - CVE-2024-47599
#     - CVE-2024-47540
#     - CVE-2024-47602
#     - CVE-2024-47601
#     - CVE-2024-47603
#     - CVE-2024-47613
#     - CVE-2024-47778
#     - CVE-2024-47777
#     - CVE-2024-47776
#     - CVE-2024-47775
#     - CVE-2024-47774
#     - CVE-2024-47774
#     - CVE-2024-47834
#     - CVE-2024-47537
#   1.22.4-r0:
#     - CVE-2023-37327
#   1.20.3-r0:
#     - CVE-2022-1920
#     - CVE-2022-1921
#     - CVE-2022-1922
#     - CVE-2022-1923
#     - CVE-2022-1924
#     - CVE-2022-1925
#     - CVE-2022-2122
#   1.18.4-r0:
#     - CVE-2021-3497
#     - CVE-2021-3498
#   1.10.4-r0:
#     - CVE-2017-5840
#     - CVE-2017-5841
#     - CVE-2017-5845
#     - CVE-2016-9634
#     - CVE-2016-9635
#     - CVE-2016-9636
#     - CVE-2016-9808
#     - CVE-2016-10198
#     - CVE-2016-10199

prepare() {
	default_prepare
	case "$CARCH" in
	s390x)
		patch -Np1 < "$srcdir"/s390x-arithmetic-exception_patch
	esac
}

build() {
	local qt5_qml="enabled"
	local qt6_qml="enabled"
	local qt_x11="enabled"
	case "$CARCH" in
	aarch64|armv7)
		qt_x11="disabled"
		;;
	armhf)
		qt5_qml="disabled"
		qt6_qml="disabled"
		qt_x11="disabled"
		;;
	esac

	# MPG123_NO_LARGENAME: fix undefined reference to
	# `mpg123_decode_frame_64' in function
	# `gst_mpg123_audio_dec_handle_frame'

	CFLAGS="$CFLAGS -O2 -DMPG123_NO_LARGENAME" \
	CXXFLAGS="$CXXFLAGS -O2 -DMPG123_NO_LARGENAME" \
	CPPFLAGS="$CPPFLAGS -O2 -DMPG123_NO_LARGENAME" \
	abuild-meson \
		-Db_lto=true \
		-Dpackage-origin="https://alpinelinux.org" \
		-Dpackage-name="GStreamer good plugins (Alpine Linux)" \
		-Dtests="$(want_check && echo enabled || echo disabled)" \
		-Damrnb=enabled \
		-Damrwbdec=enabled \
		-Dqt-x11=$qt_x11 \
		-Dqt5=$qt5_qml \
		-Dqt6=$qt6_qml \
		. output

	meson compile -C output
}

check() {
	meson test -t 2 --print-errorlogs -C output
}

package() {
	export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
	DESTDIR="$pkgdir" meson install --no-rebuild -C output
}

_mv() {
	mkdir -p "$subpkgdir"/"$ldpath"
	mv "$1" "$subpkgdir"/"$ldpath"
}

qt() {
	pkgdesc="Gstreamer Qt plugin"
	find "$pkgdir" -type f | while read -r i; do
		if ldd $i 2>/dev/null | grep -q "libQt"; then
			_mv "$i"
		fi
	done
}

gtk() {
	pkgdesc="Gstreamer gtk-3 plugin"
	find "$pkgdir" -type f | while read -r i; do
		if ldd $i 2>/dev/null | grep -q "libgtk-3"; then
			_mv "$i"
		fi
	done
}
sha512sums="
ce096c912e6dfdec5c6e815b712e949296a18ea358cdb124997f256b1fbf8a68db9fc75c4e05a69a2cecd20de1a6bdb3fcfe4422f6d81b6f887ee484b5d1a556  gst-plugins-good-1.26.1.tar.xz
e471a892c511c501fdd336cd1729df4e955e266a395260db50665b4ee717d881a007ae84873c57e386931c042ce08ee8f3ab8e102ba251632f724e167b5af913  flaky-test.patch
9c6d0527a091e929770072e9cc8294da31ba4f0bc9b1bbd287948e70c1999efc74d1cff7ab412d159f1ba4b4a3048886503170dbe7013e7005951d1dd4a0c677  s390x-arithmetic-exception_patch
"
