I was able to get this compiled with the latest version (plus two dependencies that are now available by patching my PKGBUILD and patch 0001.
Install the following two packages from the AUR:
- lib32-gtest (patched to version 1.17.0)
- lib32-libopenmpt
- lib32-openh264
Apply the following patches:
0001-Allow-disabling-gstreamer.patch:
diff --git a/0001-Allow-disabling-gstreamer.patch b/0001-Allow-disabling-gstreamer.patch
index a3f7d1b..c77257c 100644
--- a/0001-Allow-disabling-gstreamer.patch
+++ b/0001-Allow-disabling-gstreamer.patch
@@ -20,10 +20,10 @@ index db32a57fba..67a208d517 100644
gst_base_orc_req = subproj.get_variable('orc_req', '')
if gst_base_orc_req != orc_req
error('orc_req is "@0@" but it should be "@1@" from subprojects/gst-plugins-base/meson.build'
-diff --git a/meson_options.txt b/meson_options.txt
+diff --git a/meson.options b/meson.options
index 91b1449f18..39152be149 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
+--- a/meson.options
++++ b/meson.options
@@ -1,5 +1,6 @@
# GStreamer subprojects
option('base', type : 'feature', value : 'enabled')
PKGBUILD (don't forget to update checksums):
diff --git a/PKGBUILD b/PKGBUILD
index 7d5dc7b..8c67b25 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -17,9 +17,9 @@ pkgname=(lib32-gst-plugins-ugly)
)
readonly LIB32GST_DISABLE_{AV,BAD}
-pkgver=1.26.10
-pkgrel=4
-pkgrel_arch=4 # pkgrel version from arch repos
+pkgver=1.28.4
+pkgrel=1
+pkgrel_arch=1 # pkgrel version from arch repos
pkgdesc="Multimedia graph framework (32-bit)"
url="https://gstreamer.freedesktop.org/"
arch=(x86_64)
@@ -60,7 +60,8 @@ _bad_depends=(
lib32-vulkan-icd-loader lib32-wayland
lib32-wildmidi lib32-x265
lib32-zvbi libltc
- lib32-libgme
+ lib32-libgme lib32-openh264
+ lib32-libopenmpt
)
makedepends=(
@@ -164,7 +165,6 @@ build() {
-D rs=disabled
-D rtsp_server=disabled
-D sharp=disabled
- -D vaapi=disabled
-D base=disabled # already in repo
-D good=disabled # already in repo
-D gstreamer=disabled # already in repo
@@ -184,7 +184,6 @@ build() {
-D gst-plugins-bad:isac=disabled
-D gst-plugins-bad:magicleap=disabled
-D gst-plugins-bad:onnx=disabled
- -D gst-plugins-bad:openh264=disabled
-D gst-plugins-bad:openni2=disabled
-D gst-plugins-bad:opensles=disabled
-D gst-plugins-bad:tinyalsa=disabled
@@ -198,6 +197,7 @@ build() {
-D gst-plugins-bad:gsm=disabled
-D gst-plugins-bad:spandsp=disabled
-D gst-plugins-bad:mpeg2enc=disabled
+ -D gst-plugins-bad:mpeghdec=disabled
-D gst-plugins-bad:zbar=disabled
-D gst-plugins-bad:mplex=disabled
-D gst-plugins-bad:webrtc=disabled
@@ -221,7 +221,6 @@ build() {
-D gst-plugins-bad:microdns=disabled # due to no lib32-microdns support
-D gst-plugins-bad:openaptx=disabled # due to no lib32-Xaptx support
-D gst-plugins-bad:openexr=disabled # due to no lib32-openexr support
- -D gst-plugins-bad:openmpt=disabled # due to no lib32-openmpt support
-D gst-plugins-bad:qroverlay=disabled # due to no lib32-qrencode support
-D gst-plugins-bad:svthevcenc=disabled # due to no lib32-svthevcenc support
-D gst-plugins-bad:svtav1=disabled # due to no lib32-svt-av1
@@ -238,6 +237,14 @@ build() {
-D gst-plugins-bad:nvcomp=disabled # no nvidia
-D gst-plugins-bad:nvdswrapper=disabled # no nvidia
-D gst-plugins-bad:svtjpegxs=disabled
+
+ # TensorFlow-Lite
+ -D gst-plugins-bad:tflite=disabled
+ -D gst-plugins-bad:tflite-edgetpu=disabled
+ -D gst-plugins-bad:tflite-vsi=disabled
+
+ # wpe-webkit-2.0
+ -D gst-plugins-bad:wpe2=disabled
)
arch-meson gstreamer build "${meson_options[@]}"
These are presented in diff format, but I would recommend making the changes manually if you can't get them to apply, since git is picky about whitespace.
seconded; for me it also only compiles with Nullius' edit.
@Albo, I managed to compile it by adding this
-D gst-plugins-bad:librfb=disabled
to the PKGBUILD, I dont know enough about gst to say it's a good fix, but in the end I was able to play wmv videos in a game using wine32 (aur), which was why I ended up here in the first place.
have error, any idea?
FAILED: [code=1] subprojects/gst-plugins-bad/gst/librfb/libgstrfbsrc.so.p/gstrfbsrc.c.o
gcc -m32 -Isubprojects/gst-plugins-bad/gst/librfb/libgstrfbsrc.so.p -Isubprojects/gst-plugins-bad/gst/librfb -I../gstreamer/subprojects/gst-plugins-bad/gst/librfb -Isubprojects/gst-plugins-bad -I../gstreamer/subprojects/gst-plugins-bad -Isubprojects/gst-plugins-bad/gst-libs -I../gstreamer/subprojects/gst-plugins-bad/gst-libs -Isubprojects/gst-plugins-bad/gst -I../gstreamer/subprojects/gst-plugins-bad/gst -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib32/glib-2.0/include -I/usr/include/libdrm -I/usr/include/orc-0.4 -I/usr/include/libmount -I/usr/include/blkid -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -fvisibility=hidden -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wmissing-prototypes -Wold-style-definition -Waggregate-return -Waddress -Wformat -Wformat-security -Wimplicit-fallthrough=3 -Winit-self -Wmissing-declarations -Wmissing-include-dirs -Wmissing-parameter-type -Wno-multichar -Wpointer-arith -Wredundant-decls -Wshift-negative-value -Wtype-limits -Wundef -Wvla -Wwrite-strings -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fPIC -pthread -DHAVE_CONFIG_H -MD -MQ subprojects/gst-plugins-bad/gst/librfb/libgstrfbsrc.so.p/gstrfbsrc.c.o -MF subprojects/gst-plugins-bad/gst/librfb/libgstrfbsrc.so.p/gstrfbsrc.c.o.d -o subprojects/gst-plugins-bad/gst/librfb/libgstrfbsrc.so.p/gstrfbsrc.c.o -c ../gstreamer/subprojects/gst-plugins-bad/gst/librfb/gstrfbsrc.c
In file included from /usr/include/glib-2.0/gobject/gobject.h:26,
from /usr/include/glib-2.0/gobject/gbinding.h:31,
from /usr/include/glib-2.0/glib-object.h:24,
from /usr/include/gstreamer-1.0/gst/gstenumtypes.h:6,
from /usr/include/gstreamer-1.0/gst/gst.h:32,
from ../gstreamer/subprojects/gst-plugins-bad/gst/librfb/gstrfbsrc.h:25,
from ../gstreamer/subprojects/gst-plugins-bad/gst/librfb/gstrfbsrc.c:27:
/usr/include/gstreamer-1.0/gst/video/gstvideodmabufpool.h:53:24: error: unknown type name ‘GstVideoBufferPoolClass’; did you mean ‘GstBufferPoolClass’?
53 | VIDEO_DMABUF_POOL, GstVideoBufferPool)
| ^~~~~~~~~~~~~~~~~~
and this
/usr/include/glib-2.0/glib/gmacros.h:1343:49: error: ‘glib_autoptr_clear_GstVideoBufferPool’ undeclared (first use in this function); did you mean ‘glib_autoptr_clear_GstBufferPool’?
1343 | #define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
another
/usr/include/glib-2.0/glib/gmacros.h:1361:41: error: expected expression before ‘)’ token
1361 | { if (_ptr) (cleanup) ((ParentName *) _ptr); } \
| ^
0002-HACK-meson-Disable-broken-tests.patch failed the validity check
Won't build, compilation fails with the following error:
[1452/1499] Linking target subprojects/gst-plugins-ugly/ext/x264/libgstx264.so
FAILED: subprojects/gst-plugins-ugly/ext/x264/libgstx264.so
gcc -m32 -o subprojects/gst-plugins-ugly/ext/x264/libgstx264.so subprojects/gst-plugins-ugly/ext/x264/libgstx264.so.p/gstx264enc.c.o subprojects/gst-plugins-ugly/ext/x264/libgstx264.so.p/gstencoderbitrateprofilemanager.c.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,-soname,libgstx264.so -Wl,-Bsymbolic-functions -Wl,-z,nodelete -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2,-D_GLIBCXX_ASSERTIONS -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wl,--start-group /usr/lib32/libgstbase-1.0.so /usr/lib32/libgstreamer-1.0.so /usr/lib32/libgobject-2.0.so /usr/lib32/libglib-2.0.so /usr/lib32/libgstvideo-1.0.so /usr/lib32/libgstpbutils-1.0.so /usr/lib32/libgstaudio-1.0.so /usr/lib32/libx264.so -Wl,--end-group
/usr/sbin/ld: subprojects/gst-plugins-ugly/ext/x264/libgstx264.so.p/gstx264enc.c.o: na função "x264_element_init":
gstx264enc.c:(.text+0x7b07): undefined reference to `x264_encoder_open_164'
collect2: error: ld returned 1 exit status
[1457/1499] Linking target subprojects/gst-plugins-ugly/tests/check/generic_states
ninja: build stopped: subcommand failed.
@svallinn
Maybe the maintainer forgot to update checksum of this file. Just simply replace the b2sum value to 'SKIP' then try again.
The b2sum for the 0002 patch is wrong.
On a separate note and not really important, I get a consistent error on the elements_x265 test and I don't really know what to make of it.
MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 GST_STATE_IGNORE_ELEMENTS='' GST_PLUGIN_SYSTEM_PATH_1_0='' CK_DEFAULT_TIMEOUT=20 GST_REGISTRY=/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/tests/check/elements_x265enc.registry MESON_TEST_ITERATION=1 GST_PLUGIN_LOADING_WHITELIST=gstreamer:gst-plugins-base:gst-plugins-good:gst-plugins-ugly:gst-libav:libnice:gst-plugins-bad@/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 GST_PLUGIN_SCANNER_1_0=/usr/lib32/gstreamer-1.0/gst-plugin-scanner ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 LD_LIBRARY_PATH=/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/insertbin:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/play:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/webrtc:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/analytics:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/uridownloader:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/interfaces:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/player:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/mpegts:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/audio:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/basecamerabinsrc:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/transcoder:/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/gst-libs/gst/mse GST_PLUGIN_PATH_1_0=/home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build:/usr/lib32/gstreamer-1.0:/usr/lib32/gstreamer-1.0 MALLOC_PERTURB_=190 /home/xxxxxxxxxx/.cache/paru/clone/lib32-gst-bad-ugly/src/build/subprojects/gst-plugins-bad/tests/check/elements_x265enc
Running suite(s): x265enc
free(): invalid next size (fast)
50%: Checks: 2, Failures: 0, Errors: 1
../gstreamer/subprojects/gst-plugins-bad/tests/check/elements/x265enc.c:197:E:general:test_tiny_picture:0: (after this point) Received signal 6 (Aborted)
Check suite x265enc ran in 0.303s (tests failed: 1)
@lightdot a quickfix is to add this
-D gst-plugins-bad:cuda-nvmm=disabled
-D gst-plugins-bad:androidmedia=disabled
-D gst-plugins-bad:lcevcdecoder=disabled
-D gst-plugins-bad:lcevcencoder=disabled
-D gst-plugins-bad:nvcomp=disabled
-D gst-plugins-bad:nvdswrapper=disabled
-D gst-plugins-bad:svtjpegxs=disabled
at the end of meson options in the PKGBUILD or around line 224.
the lcevc can probly be fixed as the package is in the aur but even installed can't find the pkgconfig for it
Still broken, building 1.26.2-1 fails in a clean chroot:
gstreamer/subprojects/gst-plugins-bad/gst-libs/gst/cuda/meson.build:140:6: ERROR: Problem encountered: Could not find required header: "nvbufsurface.h"