diff --git a/extra/gstreamer/0001-meson-Allow-building-with-system-orc.patch b/extra/gstreamer/0001-meson-Allow-building-with-system-orc.patch new file mode 100644 index 000000000..6197c7d93 --- /dev/null +++ b/extra/gstreamer/0001-meson-Allow-building-with-system-orc.patch @@ -0,0 +1,22 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Mon, 6 Jun 2022 00:30:08 +0200 +Subject: [PATCH] meson: Allow building with system orc + +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 9ea00429bcb5..0481dbcbe512 100644 +--- a/meson.build ++++ b/meson.build +@@ -112,7 +112,7 @@ elif build_system == 'darwin' + subproject('macos-bison-binary') + endif + +-orc_subproject = subproject('orc', required: get_option('orc')) ++orc_subproject = subproject('orc', required: false) + + foreach custom_subproj: get_option('custom_subprojects').split(',') + if custom_subproj != '' diff --git a/extra/gstreamer/0002-HACK-meson-Disable-broken-tests.patch b/extra/gstreamer/0002-HACK-meson-Disable-broken-tests.patch new file mode 100644 index 000000000..85d6f1c9a --- /dev/null +++ b/extra/gstreamer/0002-HACK-meson-Disable-broken-tests.patch @@ -0,0 +1,58 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Mon, 6 Jun 2022 00:30:08 +0200 +Subject: [PATCH] HACK: meson: Disable broken tests + +--- + subprojects/gst-editing-services/meson.build | 1 - + subprojects/gst-python/meson.build | 1 - + subprojects/gst-rtsp-server/tests/check/meson.build | 1 - + subprojects/gstreamer-vaapi/meson.build | 1 - + 4 files changed, 4 deletions(-) + +diff --git a/subprojects/gst-editing-services/meson.build b/subprojects/gst-editing-services/meson.build +index 04373faa0df3..c4ef81439052 100644 +--- a/subprojects/gst-editing-services/meson.build ++++ b/subprojects/gst-editing-services/meson.build +@@ -274,7 +274,6 @@ subdir('plugins') + if not get_option('tools').disabled() + subdir('tools') + endif +-subdir('tests') + if not get_option('examples').disabled() + subdir('examples') + endif +diff --git a/subprojects/gst-python/meson.build b/subprojects/gst-python/meson.build +index 707bde7d96ea..e1fd643e5cd6 100644 +--- a/subprojects/gst-python/meson.build ++++ b/subprojects/gst-python/meson.build +@@ -104,5 +104,4 @@ if not get_option('plugin').disabled() + endif + endif + if not get_option('tests').disabled() +- subdir('testsuite') + endif +diff --git a/subprojects/gst-rtsp-server/tests/check/meson.build b/subprojects/gst-rtsp-server/tests/check/meson.build +index 229af32f8117..b9372c125d77 100644 +--- a/subprojects/gst-rtsp-server/tests/check/meson.build ++++ b/subprojects/gst-rtsp-server/tests/check/meson.build +@@ -27,7 +27,6 @@ rtsp_server_tests = [ + 'gst/mediafactory', + 'gst/media', + 'gst/permissions', +- 'gst/rtspserver', + 'gst/sessionmedia', + 'gst/sessionpool', + 'gst/stream', +diff --git a/subprojects/gstreamer-vaapi/meson.build b/subprojects/gstreamer-vaapi/meson.build +index 61ddc86f5dbe..8732d714abe8 100644 +--- a/subprojects/gstreamer-vaapi/meson.build ++++ b/subprojects/gstreamer-vaapi/meson.build +@@ -202,7 +202,6 @@ plugins = [] + + subdir('gst-libs') + subdir('gst') +-subdir('tests') + subdir('docs') + + # Set release date diff --git a/extra/gstreamer/0003-HACK-meson-Work-around-broken-detection-of-underscor.patch b/extra/gstreamer/0003-HACK-meson-Work-around-broken-detection-of-underscor.patch new file mode 100644 index 000000000..6883c6fed --- /dev/null +++ b/extra/gstreamer/0003-HACK-meson-Work-around-broken-detection-of-underscor.patch @@ -0,0 +1,24 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Mon, 6 Jun 2022 00:30:08 +0200 +Subject: [PATCH] HACK: meson: Work around broken detection of underscore + prefixes + +See: https://github.com/mesonbuild/meson/issues/5482 +--- + subprojects/gst-plugins-good/gst/deinterlace/meson.build | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/subprojects/gst-plugins-good/gst/deinterlace/meson.build b/subprojects/gst-plugins-good/gst/deinterlace/meson.build +index e86bebe613fc..96a961107ab6 100644 +--- a/subprojects/gst-plugins-good/gst/deinterlace/meson.build ++++ b/subprojects/gst-plugins-good/gst/deinterlace/meson.build +@@ -54,8 +54,6 @@ if have_nasm and host_cpu == 'x86_64' + # https://github.com/mesonbuild/meson/issues/5482 + if ['darwin', 'ios'].contains(host_system) + asm_prefix_def = '-DPREFIX' +- elif cc.symbols_have_underscore_prefix() +- asm_prefix_def = '-DPREFIX' + else + asm_prefix_def = '-UPREFIX' + endif diff --git a/extra/gstreamer/0004-opencv-Allow-building-against-4.6.x.patch b/extra/gstreamer/0004-opencv-Allow-building-against-4.6.x.patch new file mode 100644 index 000000000..ce8eee896 --- /dev/null +++ b/extra/gstreamer/0004-opencv-Allow-building-against-4.6.x.patch @@ -0,0 +1,135 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Mon, 6 Jun 2022 00:30:08 +0200 +Subject: [PATCH] opencv: Allow building against 4.6.x + +Replace the broken version checks with one modeled after +`GLIB_CHECK_VERSION`. +--- + .../gst-plugins-bad/ext/opencv/gstcvtracker.cpp | 14 +++++++------- + .../gst-plugins-bad/ext/opencv/gstcvtracker.h | 11 +++++++++-- + subprojects/gst-plugins-bad/ext/opencv/meson.build | 2 +- + 3 files changed, 17 insertions(+), 10 deletions(-) + +diff --git a/subprojects/gst-plugins-bad/ext/opencv/gstcvtracker.cpp b/subprojects/gst-plugins-bad/ext/opencv/gstcvtracker.cpp +index 492c9cf9b877..0c5dfda35f0a 100644 +--- a/subprojects/gst-plugins-bad/ext/opencv/gstcvtracker.cpp ++++ b/subprojects/gst-plugins-bad/ext/opencv/gstcvtracker.cpp +@@ -233,7 +233,7 @@ gst_cvtracker_init (GstCVTracker * filter) + filter->y = DEFAULT_PROP_INITIAL_Y; + filter->width = DEFAULT_PROP_INITIAL_WIDTH; + filter->height = DEFAULT_PROP_INITIAL_HEIGHT; +-#if CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1 ++#if GST_OPENCV_CHECK_VERSION(4, 5, 1) + filter->tracker = cv::legacy::upgradeTrackingAPI( + cv::legacy::TrackerMedianFlow::create()); + #else +@@ -283,40 +283,40 @@ create_cvtracker (GstCVTracker * filter) + { + switch (filter->algorithm) { + case GST_OPENCV_TRACKER_ALGORITHM_BOOSTING: +-#if CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1 ++#if GST_OPENCV_CHECK_VERSION(4, 5, 1) + filter->tracker = cv::legacy::upgradeTrackingAPI( + cv::legacy::TrackerBoosting::create()); + #else + filter->tracker = cv::TrackerBoosting::create(); + #endif + break; + case GST_OPENCV_TRACKER_ALGORITHM_CSRT: + filter->tracker = cv::TrackerCSRT::create (); + break; + case GST_OPENCV_TRACKER_ALGORITHM_KCF: + filter->tracker = cv::TrackerKCF::create (); + break; + case GST_OPENCV_TRACKER_ALGORITHM_MEDIANFLOW: +-#if CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1 ++#if GST_OPENCV_CHECK_VERSION(4, 5, 1) + filter->tracker = cv::legacy::upgradeTrackingAPI( + cv::legacy::TrackerMedianFlow::create()); + #else + filter->tracker = cv::TrackerMedianFlow::create(); + #endif + break; + case GST_OPENCV_TRACKER_ALGORITHM_MIL: + filter->tracker = cv::TrackerMIL::create (); + break; + case GST_OPENCV_TRACKER_ALGORITHM_MOSSE: +-#if CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1 ++#if GST_OPENCV_CHECK_VERSION(4, 5, 1) + filter->tracker = cv::legacy::upgradeTrackingAPI( + cv::legacy::TrackerMOSSE::create()); + #else + filter->tracker = cv::TrackerMOSSE::create (); + #endif + break; + case GST_OPENCV_TRACKER_ALGORITHM_TLD: +-#if CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1 ++#if GST_OPENCV_CHECK_VERSION(4, 5, 1) + filter->tracker = cv::legacy::upgradeTrackingAPI( + cv::legacy::TrackerTLD::create()); + #else +@@ -366,19 +366,19 @@ gst_cvtracker_transform_ip (GstOpencvVideoFilter * base, + GstMessage *msg; + + if (filter->roi.empty ()) { +-#if CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1 ++#if GST_OPENCV_CHECK_VERSION(4, 5, 1) + filter->roi = new (cv::Rect); + #else + filter->roi = new (cv::Rect2d); + #endif + filter->roi->x = filter->x; + filter->roi->y = filter->y; + filter->roi->width = filter->width; + filter->roi->height = filter->height; + create_cvtracker (filter); + filter->tracker->init (img, *filter->roi); + } else if (filter->tracker->update (img, *filter->roi)) { +-#if (!(CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1)) ++#if !GST_OPENCV_CHECK_VERSION(4, 5, 1) + /* Round values to avoid inconsistencies depending on the OpenCV version. */ + filter->roi->x = cvRound (filter->roi->x); + filter->roi->y = cvRound (filter->roi->y); +diff --git a/subprojects/gst-plugins-bad/ext/opencv/gstcvtracker.h b/subprojects/gst-plugins-bad/ext/opencv/gstcvtracker.h +index d3531efbc593..1a06111d8b03 100644 +--- a/subprojects/gst-plugins-bad/ext/opencv/gstcvtracker.h ++++ b/subprojects/gst-plugins-bad/ext/opencv/gstcvtracker.h +@@ -50,7 +50,14 @@ + #include + #include + #include +-#if CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1 ++ ++#define GST_OPENCV_CHECK_VERSION(major,minor,revision) \ ++ (CV_VERSION_MAJOR > (major) || \ ++ (CV_VERSION_MAJOR == (major) && CV_VERSION_MINOR > (minor)) || \ ++ (CV_VERSION_MAJOR == (major) && CV_VERSION_MINOR == (minor) && \ ++ CV_VERSION_REVISION >= (revision))) ++ ++#if GST_OPENCV_CHECK_VERSION(4, 5, 1) + #include + #endif + +@@ -84,7 +91,7 @@ struct _GstCVTracker + gboolean post_debug_info; + + cv::Ptr tracker; +-#if CV_VERSION_MAJOR == 4 && CV_VERSION_MINOR >= 5 && CV_VERSION_REVISION >= 1 ++#if GST_OPENCV_CHECK_VERSION(4, 5, 1) + cv::Ptr roi; + #else + cv::Ptr roi; +diff --git a/subprojects/gst-plugins-bad/ext/opencv/meson.build b/subprojects/gst-plugins-bad/ext/opencv/meson.build +index 1d86b9092d9d..3962cff90a55 100644 +--- a/subprojects/gst-plugins-bad/ext/opencv/meson.build ++++ b/subprojects/gst-plugins-bad/ext/opencv/meson.build +@@ -71,7 +71,7 @@ if opencv_found + endif + + if not opencv_found +- opencv_dep = dependency('opencv4', version : ['>= 4.0.0', '< 4.6.0'], required : false) ++ opencv_dep = dependency('opencv4', version : ['>= 4.0.0', '< 4.7.0'], required : false) + opencv_found = opencv_dep.found() + if opencv_found + foreach h : libopencv4_headers diff --git a/extra/gstreamer/PKGBUILD b/extra/gstreamer/PKGBUILD index 26de27e88..1fce4fbc1 100644 --- a/extra/gstreamer/PKGBUILD +++ b/extra/gstreamer/PKGBUILD @@ -30,7 +30,7 @@ pkgname=( gstreamer-docs ) pkgver=1.20.2 -pkgrel=1 +pkgrel=2 pkgdesc="Multimedia graph framework" url="https://gstreamer.freedesktop.org/" arch=(x86_64) @@ -75,13 +75,22 @@ makedepends=( ) checkdepends=(xorg-server-xvfb) options=(debug) +_commit=8dbfc89a850d484a27937eb882978251bfce06b3 # tags/1.20.2^0 source=( - "git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git?signed#tag=$pkgver" + "git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git#commit=$_commit" "https://gstreamer.freedesktop.org/src/gstreamer-docs/gstreamer-docs-$pkgver.tar.xz"{,.asc} + 0001-meson-Allow-building-with-system-orc.patch + 0002-HACK-meson-Disable-broken-tests.patch + 0003-HACK-meson-Work-around-broken-detection-of-underscor.patch + 0004-opencv-Allow-building-against-4.6.x.patch ) sha256sums=('SKIP' 'ca70d921cbbba9fe17679b47d2e0db886e0422d37652837a170d76c3f2b4bc53' - 'SKIP') + 'SKIP' + 'de7ae4a8d38be56a2079a0a64d84281758f7aaa3918cd57376dd0c244574cf10' + 'a88d22b06b8d09f5d7111465c41bbabe13df97d41c1216fc3338ecf4bd13d8d9' + '79d3038a0ba0c3958ffa8b5aec8431336b372906c07c0c878c3767bec0acb46f' + 'd06d390787e8b54dba04f1988af88c9e64e91b25e136559f6651268685f7b906') validpgpkeys=(D637032E45B8C6585B9456565D2EEE6F6F349D7C) # Tim Müller pkgver() { @@ -93,16 +102,17 @@ prepare() { cd gstreamer # Fix linking with system orc - sed -i "s/get_option('orc')/false/" meson.build + git apply -3 ../0001-meson-Allow-building-with-system-orc.patch # Disable broken tests - sed -i "/subdir('tests')/d" subprojects/{gst-editing-services,gstreamer-vaapi}/meson.build - sed -i "/subdir('testsuite')/d" subprojects/gst-python/meson.build - sed -i "/'gst\/rtspserver'/d" subprojects/gst-rtsp-server/tests/check/meson.build + git apply -3 ../0002-HACK-meson-Disable-broken-tests.patch # Workaround broken detection of underscore prefixes # https://github.com/mesonbuild/meson/issues/5482 - sed -i 's/-DPREFIX/-UPREFIX/' subprojects/gst-plugins-good/gst/deinterlace/meson.build + git apply -3 ../0003-HACK-meson-Work-around-broken-detection-of-underscor.patch + + # Fix building against opencv 4.6 + git apply -3 ../0004-opencv-Allow-building-against-4.6.x.patch } build() {