From 2e7b70ef86eb308432a3433057f47a0cc92de165 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 3 Jun 2023 18:23:44 +0000 Subject: [PATCH] extra/gstreamer to 1.22.3-4 --- ...0001-HACK-meson-Disable-broken-tests.patch | 6 +- ...ncesrc-Properly-set-default-location.patch | 24 ---- ...tors-Fix-fdmem-test-with-recent-GLib.patch | 80 ----------- extra/gstreamer/PKGBUILD | 30 ++-- ...37032E45B8C6585B9456565D2EEE6F6F349D7C.asc | 132 +++++++++--------- 5 files changed, 79 insertions(+), 193 deletions(-) delete mode 100644 extra/gstreamer/0002-imagesequencesrc-Properly-set-default-location.patch delete mode 100644 extra/gstreamer/0003-tests-allocators-Fix-fdmem-test-with-recent-GLib.patch diff --git a/extra/gstreamer/0001-HACK-meson-Disable-broken-tests.patch b/extra/gstreamer/0001-HACK-meson-Disable-broken-tests.patch index 055e384e0..fecc2efdd 100644 --- a/extra/gstreamer/0001-HACK-meson-Disable-broken-tests.patch +++ b/extra/gstreamer/0001-HACK-meson-Disable-broken-tests.patch @@ -12,7 +12,7 @@ Subject: [PATCH] HACK: meson: Disable broken tests 5 files changed, 5 deletions(-) diff --git a/subprojects/gst-editing-services/meson.build b/subprojects/gst-editing-services/meson.build -index 89078bbd7a3b..5745256d3b2f 100644 +index eb05471af7f2..1d97a018fc00 100644 --- a/subprojects/gst-editing-services/meson.build +++ b/subprojects/gst-editing-services/meson.build @@ -270,7 +270,6 @@ subdir('ges') @@ -36,7 +36,7 @@ index 53a8e634e41a..f270c1d11bfb 100644 tcase_add_test (tc_chain, test_video_caps_change_streamable); tcase_add_test (tc_chain, test_audio_caps_change_streamable_single); diff --git a/subprojects/gst-python/meson.build b/subprojects/gst-python/meson.build -index 9f35ee5a4a16..6698e392b72c 100644 +index 25898b4c9607..fa6c4285af9c 100644 --- a/subprojects/gst-python/meson.build +++ b/subprojects/gst-python/meson.build @@ -107,5 +107,4 @@ if not get_option('plugin').disabled() @@ -58,7 +58,7 @@ index 229af32f8117..b9372c125d77 100644 'gst/sessionpool', 'gst/stream', diff --git a/subprojects/gstreamer-vaapi/meson.build b/subprojects/gstreamer-vaapi/meson.build -index 8fef4f81e833..16d96d6a4ed6 100644 +index dd04729188b6..f5302bf20837 100644 --- a/subprojects/gstreamer-vaapi/meson.build +++ b/subprojects/gstreamer-vaapi/meson.build @@ -219,7 +219,6 @@ plugins = [] diff --git a/extra/gstreamer/0002-imagesequencesrc-Properly-set-default-location.patch b/extra/gstreamer/0002-imagesequencesrc-Properly-set-default-location.patch deleted file mode 100644 index da0c92f6c..000000000 --- a/extra/gstreamer/0002-imagesequencesrc-Properly-set-default-location.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" -Date: Fri, 3 Mar 2023 18:40:22 +0000 -Subject: [PATCH] imagesequencesrc: Properly set default location - -Noticed this because the generic_states test kept segfaulting at random. -GLibC 2.37 can crash when NULL is supplied as a format string. ---- - .../gst-plugins-good/gst/multifile/gstimagesequencesrc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/subprojects/gst-plugins-good/gst/multifile/gstimagesequencesrc.c b/subprojects/gst-plugins-good/gst/multifile/gstimagesequencesrc.c -index 8581e73e3a94..3d59ec74a7c9 100644 ---- a/subprojects/gst-plugins-good/gst/multifile/gstimagesequencesrc.c -+++ b/subprojects/gst-plugins-good/gst/multifile/gstimagesequencesrc.c -@@ -356,7 +356,7 @@ gst_image_sequence_src_init (GstImageSequenceSrc * self) - self->start_index = DEFAULT_START_INDEX; - self->index = 0; - self->stop_index = DEFAULT_STOP_INDEX; -- self->path = NULL; -+ self->path = g_strdup (DEFAULT_LOCATION); - self->caps = NULL; - self->n_frames = 0; - self->fps_n = 30; diff --git a/extra/gstreamer/0003-tests-allocators-Fix-fdmem-test-with-recent-GLib.patch b/extra/gstreamer/0003-tests-allocators-Fix-fdmem-test-with-recent-GLib.patch deleted file mode 100644 index 141f5b617..000000000 --- a/extra/gstreamer/0003-tests-allocators-Fix-fdmem-test-with-recent-GLib.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" -Date: Mon, 10 Apr 2023 16:06:19 +0200 -Subject: [PATCH] tests: allocators: Fix fdmem test with recent GLib - -The test failed with recent GLib, where `g_close` emits a critical -warning on EBADF. Remove the `g_close` check from `test_fdmem` and add -another version that tests `GST_FD_MEMORY_FLAG_DONT_CLOSE`. - -We will depend on the Valgrind test run to warn us about leaked FDs. - -Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2480 ---- - .../tests/check/libs/allocators.c | 39 ++++++++++++++++++- - 1 file changed, 38 insertions(+), 1 deletion(-) - -diff --git a/subprojects/gst-plugins-base/tests/check/libs/allocators.c b/subprojects/gst-plugins-base/tests/check/libs/allocators.c -index 6b974b2900e9..c8ee75bcdbe3 100644 ---- a/subprojects/gst-plugins-base/tests/check/libs/allocators.c -+++ b/subprojects/gst-plugins-base/tests/check/libs/allocators.c -@@ -95,21 +95,58 @@ GST_START_TEST (test_fdmem) - gst_memory_unmap (mem, &info); - - gst_memory_unref (mem); -- fail_unless (g_close (fd, NULL) == 0); -+ gst_object_unref (alloc); -+} -+ -+GST_END_TEST; -+ -+GST_START_TEST (test_fdmem_dont_close) -+{ -+ GstAllocator *alloc; -+ GstMemory *mem; -+ GstMapInfo info; -+ GError *error = NULL; -+ int fd; -+ const char *data = "0123456789"; -+ -+ fd = g_file_open_tmp (NULL, NULL, &error); -+ fail_if (error); -+ fail_unless (write (fd, data, 10) == 10); -+ -+ alloc = gst_fd_allocator_new (); -+ fail_unless (alloc); -+ mem = gst_fd_allocator_alloc (alloc, fd, 10, -+ GST_FD_MEMORY_FLAG_KEEP_MAPPED | GST_FD_MEMORY_FLAG_DONT_CLOSE); -+ -+ fail_unless (gst_memory_map (mem, &info, GST_MAP_READ)); -+ fail_unless (info.data[5] == '5'); -+ gst_memory_unmap (mem, &info); -+ -+ fail_unless (gst_memory_map (mem, &info, GST_MAP_WRITE)); -+ info.data[5] = 'X'; -+ gst_memory_unmap (mem, &info); -+ -+ fail_unless (gst_memory_map (mem, &info, GST_MAP_READ)); -+ fail_unless (info.data[5] == 'X'); -+ gst_memory_unmap (mem, &info); -+ -+ gst_memory_unref (mem); -+ fail_unless (g_close (fd, NULL)); - gst_object_unref (alloc); - } - - GST_END_TEST; - - static Suite * - allocators_suite (void) - { - Suite *s = suite_create ("allocators"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_dmabuf); - tcase_add_test (tc_chain, test_fdmem); -+ tcase_add_test (tc_chain, test_fdmem_dont_close); - - return s; - } diff --git a/extra/gstreamer/PKGBUILD b/extra/gstreamer/PKGBUILD index 7b4954d2e..f18f69bd3 100644 --- a/extra/gstreamer/PKGBUILD +++ b/extra/gstreamer/PKGBUILD @@ -31,8 +31,8 @@ pkgname=( gst-python gstreamer-docs ) -pkgver=1.22.2 -pkgrel=1 +pkgver=1.22.3 +pkgrel=4 pkgdesc="Multimedia graph framework" url="https://gstreamer.freedesktop.org/" arch=(x86_64) @@ -65,7 +65,7 @@ makedepends=( qrencode json-glib libva libxkbcommon-x11 # gst-plugins-ugly - a52dec opencore-amr libcdio libdvdread libmpeg2 libsidplay x264 + a52dec opencore-amr libcdio libdvdread libmpeg2 x264 # gst-libav ffmpeg @@ -81,30 +81,20 @@ source=( "git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git?signed#tag=$pkgver" "https://gstreamer.freedesktop.org/src/gstreamer-docs/gstreamer-docs-$pkgver.tar.xz"{,.asc} 0001-HACK-meson-Disable-broken-tests.patch - 0002-imagesequencesrc-Properly-set-default-location.patch - 0003-tests-allocators-Fix-fdmem-test-with-recent-GLib.patch ) b2sums=('SKIP' - '7156bcd222dd35d063711cafb86bb944cdd493362c945be57192be32987604f6bb1981c39c73f130347a108398907063cc7286f7d25950a0eeaa55c367888956' + 'bd4904155e0ee341e6216b7e5ea046d5f91f962151898361e874dfb423b59c1725c8227fcd4b4f80f9d1b9b0bbc84a56564307d15ec21debfc794cdb149605d1' 'SKIP' - '9437da39122a15e6501a325193bce135b2706de72f6dd0133120b70ad1b05b8b0191aae4d740430ddfb9787164930cb184afa57ebd0b431edd9452317661d2e5' - 'fd5bfeaf5a08f225bfb81df1beac55c3d7332aa4ffb1ba0a3e662dccea6b5ca43eecee92578c54d2fc1e3aa2edc73eb09a02e9c0a8ac3ad2002995a6a0396fa2' - '8ba563a47ef4aa063b244f0e2ca8be2aee2d61174bdd4affa86979131ef8862d44da0f1be2a965482fbe1a8bbaee5d8103fc6644806a78e2d977e3fd0e46ed23') -validpgpkeys=(D637032E45B8C6585B9456565D2EEE6F6F349D7C) # Tim Müller + 'e5cd29c707db1b24798a92ba568c30c996550c5072565ee2ad44a6319a0af17ff08dd1268acb56549772676809478143dd59fa818275a2a5b4a2def159ff7b8c') +validpgpkeys=( + D637032E45B8C6585B9456565D2EEE6F6F349D7C # Tim Müller +) prepare() { cd gstreamer # Disable broken tests git apply -3 ../0001-HACK-meson-Disable-broken-tests.patch - - # Fix crash - # https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4109 - git apply -3 ../0002-imagesequencesrc-Properly-set-default-location.patch - - # Fix fdmem test - # https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4381 - git apply -3 ../0003-tests-allocators-Fix-fdmem-test-with-recent-GLib.patch } build() { @@ -159,6 +149,7 @@ build() { -D gst-plugins-bad:wasapi=disabled -D gst-plugins-bad:wic=disabled -D gst-plugins-bad:win32ipc=disabled + -D gst-plugins-ugly:sidplay=disabled -D gst-editing-services:validate=disabled ) @@ -633,7 +624,7 @@ package_gst-plugins-ugly() { pkgdesc+=" - ugly plugins" depends=( "gst-plugins-base-libs=$pkgver" - libdvdread libmpeg2 a52dec libsidplay libcdio x264 opencore-amr + libdvdread libmpeg2 a52dec libcdio x264 opencore-amr ) cd root; local files=( @@ -647,7 +638,6 @@ package_gst-plugins-ugly() { usr/lib/gstreamer-1.0/libgstdvdsub.so usr/lib/gstreamer-1.0/libgstmpeg2dec.so usr/lib/gstreamer-1.0/libgstrealmedia.so - usr/lib/gstreamer-1.0/libgstsid.so usr/lib/gstreamer-1.0/libgstx264.so usr/share/gstreamer-1.0/presets/Gst{Amrnb,X264}Enc.prs diff --git a/extra/gstreamer/keys/pgp/D637032E45B8C6585B9456565D2EEE6F6F349D7C.asc b/extra/gstreamer/keys/pgp/D637032E45B8C6585B9456565D2EEE6F6F349D7C.asc index 9e4fc22d1..fc06c9b80 100644 --- a/extra/gstreamer/keys/pgp/D637032E45B8C6585B9456565D2EEE6F6F349D7C.asc +++ b/extra/gstreamer/keys/pgp/D637032E45B8C6585B9456565D2EEE6F6F349D7C.asc @@ -11,71 +11,71 @@ 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 @@ -98,5 +98,5 @@ Bbb+Wh7sFf0Ew6NVgOGq8NUUh924NkkrHfPoO7dIe2lqvUxhk+r+IsPPu0sV87/w AToBuDG4WeBnlExzycQVaLbrPkI+QmBR1BAYPdiHCLr/lSmlyepxO7fldq+x/ak+ dwa5kqMJoKxxeIzqJyF/Unuv1N5lUDsph6WOpuaB/rKlpHbJWiZ1JWmM1KC4Fol+ JCL/cyRfp0xaKjSQSMmLwnN0VnUlEDpqB3qi -=RWcd +=5zjV -----END PGP PUBLIC KEY BLOCK-----