diff options
Diffstat (limited to 'libre/gstreamer/PKGBUILD')
-rw-r--r-- | libre/gstreamer/PKGBUILD | 916 |
1 files changed, 916 insertions, 0 deletions
diff --git a/libre/gstreamer/PKGBUILD b/libre/gstreamer/PKGBUILD new file mode 100644 index 000000000..9c373bd53 --- /dev/null +++ b/libre/gstreamer/PKGBUILD @@ -0,0 +1,916 @@ +# Maintainer (arch:gstreamer): Jan Alexander Steffens (heftig) <heftig@archlinux.org> +# Contributor: Jan de Groot <jgc@archlinux.org> +# Contributor: Omar Vega Ramos <ovruni@gnu.org.pe> +# Contributor: Isaac David <isacdaavid@at@isacdaavid@dot@info> +# Contributor: Márcio Silva <coadde@hyperbola.info> +# Contributor: bill-auger <bill-auger@programmer.net> +# Contributor: David P. <megver83@parabola.nu> +# Maintainer: Parabola Hackers <dev@lists.parabola.nu> + + +# parabola changes and rationale: +# libre: +# - removed support for non-free 'faac' codec +# - disabled tests by default (some require networking) +# technical: +# - build from versioned source-ball, rather than VCS sources +# - disabled 'svt-hevc' for 32-bit arches +# - disabled 'msdk' for 32-bit arches +# - disabled 'qsv' for armv7h +# - disabled 'svt-av1' for armv7h +# - FIXME: disabled 'gst-plugin-opencv' - 'opencv' package FTBS +# https://labs.parabola.nu/issues/3107 + + +# NOTE: Only gst-plugins-bad{,-libs},gst-plugin-{opencvwpe} need to be rebuilt per the FSDG. +# However, due to a circular dependency of 'wpewebkit' on 'gst-plugins-bad-libs', +# which we pin to the corresponding version of gstreamer. +# 'wpewebkit' -> 'gst-plugins-bad-libs' -> 'gst-plugins-base-libs=V-1' -> 'gstreamer=V-1' +# If those were taken from arch, gst-plugins-bad-libs would not be satisfied; +# and those would need to be installed manually into the build chroot. + + +# NOTE: This PKGBUILD is kept in-sync, as closely as possible, +# with arch{,arm,32} (gstreamer), for the sake of documentation and cleaner diffs. +# That also helps to identify which changes were made by Parabola vs upstream. +# Therefore, this PKGBUILD may declare blacklisted dependencies, non-free sources, +# or include code for anti-features; but those will be filtered-out subsequently. +# Any code which implements an anti-feature should be commented-out; +# and include an 'anti-feature' comment, for clarity. +# Any blacklisted dependencies and non-free sources should be filtered, +# and include a 'non-free' comment, for clarity. +# Without those over-rides, the resulting program may not be FSDG-fit. +# Do not circumvent those over-rides, if compiling for the Parabola repos. + + +pkgbase=gstreamer +pkgname=( + gstreamer + gst-plugins-bad-libs # Split badaudio first + gst-plugins-base-libs + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugin-gtk + gst-plugin-msdk + gst-plugin-opencv + gst-plugin-qml6 + gst-plugin-qmlgl + gst-plugin-qsv + gst-plugin-va + gst-plugin-wpe + gst-plugins-ugly + gst-libav + gst-rtsp-server + gst-editing-services + gstreamer-vaapi + gst-python + gstreamer-docs +) +pkgname=( ${pkgname[*]/$([[ "${CARCH}" == x86_64 ]] || echo gst-plugin-msdk)/} ) # x86_64 only +pkgname=( ${pkgname[*]/$([[ "${CARCH}" != armv7h ]] || echo gst-plugin-qsv)/} ) # x86 only +pkgname=( ${pkgname[*]/gst-plugin-opencv/} ) # FIXME: 'opencv' package FTBS +pkgver=1.24.0 +pkgrel=1 +_pkgver_i686=1.20.5 # NOTE: v1.20.5 fails to compile for i686 - after this moves ahead, +_pkgrel_i686=3.0 # try to remove the LOCs with comment: "# n/a in v1.20.5" +eval "[[ -v _pkgver_${CARCH} ]] && pkgver=\$_pkgver_${CARCH}" # our different arches do not +eval "[[ -v _pkgrel_${CARCH} ]] && pkgrel=\$_pkgrel_${CARCH}" # always roll at the same speed +pkgrel+=.parabola1 +pkgdesc="Multimedia graph framework" +url="https://gstreamer.freedesktop.org/" +arch=(x86_64) +arch+=(armv7h i686) +license=(LGPL) +# license=(LGPL-2.1-or-later) # TODO: +makedepends=( + # superproject + git meson + + # gstreamer + bash-completion gobject-introspection gtk3 libcap libelf libunwind python rust + valgrind + + # gst-plugins-base + alsa-lib cdparanoia graphene libdrm libglvnd libgudev libjpeg libpng libtheora + libx11 libxi libxv mesa opus orc pango qt5-base qt5-tools sdl2 wayland + wayland-protocols zlib + + # gst-plugins-good + aalib cairo flac gdk-pixbuf2 jack2 lame libavc1394 libcaca libdv libiec61883 + libpulse libraw1394 libshout libsoup3 libvpx libxdamage libxtst mpg123 nasm + nettle opencore-amr qt5-declarative qt5-wayland qt5-x11extras qt6-declarative + qt6-shadertools qt6-tools qt6-wayland speex taglib twolame v4l-utils wavpack + + # gst-plugins-bad + bluez-libs bzip2 chromaprint faac faad2 fluidsynth gsm json-glib ladspa + libavtp libbs2b libdca libde265 libdvdnav libfdk-aac libfreeaptx libgme + liblc3 libldac liblrdf libltc libmicrodns libmodplug libmpcdec libnice + libopenmpt libsrtp libva libvpl libxkbcommon-x11 libxml2 lilv lv2 mjpegtools + neon openal opencv qrencode rtmpdump sbc shaderc soundtouch spandsp svt-av1 + svt-hevc vulkan-headers vulkan-icd-loader vulkan-validation-layers + webrtc-audio-processing-1 wildmidi wpewebkit zbar zvbi zxing-cpp + + # gst-plugins-ugly + a52dec libcdio libdvdread libmpeg2 x264 + + # gst-libav + ffmpeg + + # gstreamer-vaapi + libxrandr + + # gst-python + python-gobject +) +makedepends=( ${makedepends[*]/faac/} ) # non-free +makedepends=( ${makedepends[*]/git/} ) # use source-ball, not VCS +makedepends=( ${makedepends[*]/$([[ "${CARCH}" == x86_64 ]] || echo svt-hevc)/} ) # x86_64 only +makedepends=( ${makedepends[*]/$([[ "${CARCH}" != armv7h ]] || echo svt-av1)/} ) # x86 only +makedepends=( ${makedepends[*]/$([[ "${CARCH}" == x86_64 ]] || echo libvpl)/} ) # x86_64 only +checkdepends=(xorg-server-xvfb) +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 +) +_srcball_url=https://gitlab.freedesktop.org/gstreamer/gstreamer/-/archive/${pkgver}/gstreamer-${pkgver}.tar.gz +source=( ${source[*]/git+*/$_srcball_url} ) # use source-ball, not VCS +b2sums=('SKIP' + '506088437f614f17a24402f70605d0a3831a597bec27c486763418d1ddce7dfa2370eac95e83dd82e1e2e856aaf0050ccf4b4e06a78a2664627236df762bde74' + 'SKIP' + 'afe47af956fe50ab2d77dba5d1e84649f63443a816ad7a0d0c0a37f2f46e1da3473472bd1183843b37dd3c0c61ee496b3d246df5de35e5df960a09bcac7eb48f') +_b2sum_x86_64=a79e105927fd45f6fd9881b1b7ff70e358c6a74119fb69f7907880979eb60466a19362f970fe476326ce90dce8bc5ed7e7e95013af0d3e83ab9b7366a06e922f # upstream source-ball +_b2sum_i686=518a025591e2d03296197dd4b6d30dbdd1a4c2b1d435df62cf451f13c1233c7fc1ad877344765c7b5c863e4886b7df750096fdb8835151cccf9618590801f1ea # upstream source-ball +eval "[[ -v _b2sum_${CARCH} ]] && b2sums[0]=\$_b2sum_${CARCH}" # upstream source-ball +validpgpkeys=( + D637032E45B8C6585B9456565D2EEE6F6F349D7C # Tim Müller <tim@gstreamer-foundation.org> +) + +_DISABLE_TESTS=1 + + +## dependency over-rides ## + +makedepends=( ${makedepends[*]/opencv/} libdc1394 ) # FIXME: 'opencv' package FTBS + + +prepare() { + # link source-ball root dir as VCS root dirname (minimize diff) + ln -s gstreamer-${pkgver} gstreamer + + + cd gstreamer + + # Disable broken tests + patch -Np1 < ../0001-HACK-meson-Disable-broken-tests.patch # DIFF: use source-ball, not VCS +} + +build() { + ## build configuration ## + + # DIFF: let these 'meson_options' match the arch PKGBUILD exactly + # several of these defines will be clobbered in the "parabola over-rides" section + local meson_options=( + # Superproject options + -D devtools=disabled + -D examples=disabled + -D gobject-cast-checks=disabled + -D gpl=enabled + -D gst-examples=disabled + -D libnice=disabled + -D orc-source=system + -D package-name="Arch Linux GStreamer ${epoch:+$epoch:}$pkgver-$pkgrel" + -D package-origin="https://www.archlinux.org/" + -D vaapi=enabled + + # Subproject options + -D gstreamer:dbghelp=disabled + -D gstreamer:ptp-helper-permissions=capabilities + -D gst-plugins-base:libvisual=disabled + -D gst-plugins-base:tremor=disabled + -D gst-plugins-good:rpicamsrc=disabled + -D gst-plugins-bad:aja=disabled + -D gst-plugins-bad:amfcodec=disabled + -D gst-plugins-bad:directfb=disabled + -D gst-plugins-bad:directshow=disabled + -D gst-plugins-bad:directsound=disabled + -D gst-plugins-bad:flite=disabled + -D gst-plugins-bad:gs=disabled + -D gst-plugins-bad:iqa=disabled + -D gst-plugins-bad:isac=disabled + -D gst-plugins-bad:magicleap=disabled + -D gst-plugins-bad:mfx_api=oneVPL + -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:qt6d3d11=disabled + -D gst-plugins-bad:tinyalsa=disabled + -D gst-plugins-bad:voaacenc=disabled + -D gst-plugins-bad:voamrwbenc=disabled + -D gst-plugins-bad:wasapi2=disabled + -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 + ) + + + ## parabola over-rides ## + + # branding + meson_options=( "${meson_options[@]/Arch Linux/Parabola GNU\/Linux-libre}" ) + meson_options=( "${meson_options[@]/archlinux.org/parabola.nu}" ) + + # libre options + meson_options+=( -D gst-plugins-bad:faac=disabled ) # non-free + + # arch-specific options + if [[ "${CARCH}" == i686 ]] + then meson_options=( "${meson_options[@]/amfcodec=disabled/faac=disabled}" ) # n/a in v1.20.5 + meson_options=( "${meson_options[@]/directshow=disabled/faac=disabled}" ) # n/a in v1.20.5 + meson_options=( "${meson_options[@]/wic=disabled/faac=disabled}" ) # n/a in v1.20.5 + meson_options=( "${meson_options[@]/win32ipc=disabled/faac=disabled}" ) # n/a in v1.20.5 + fi + meson_options+=( + $( case "${CARCH}" in armv7h) echo '-D gst-plugins-bad:msdk=disabled' # x86_64 only + echo '-D gst-plugins-bad:qsv=disabled' # x86 only + echo '-D gst-plugins-bad:svthevcenc=disabled' # x86_64 only + echo '-D gst-plugins-bad:svtav1=disabled' ;; # x86 only + i686 ) echo '-D gst-plugins-bad:msdk=disabled' # x86_64 only + echo '-D gst-plugins-bad:svthevcenc=disabled' ;; # x86_64 only + esac ) + ) + + # emergency options :( + meson_options+=(-D gst-plugins-bad:opencv=disabled) # FIXME: 'opencv' package FTBS + + + ## build ## + + arch-meson gstreamer build "${meson_options[@]}" + meson configure build # Print config + meson compile -C build +} + +check() ( + # networing tests fail in librechroots + # elements_rtpsrc, elements_rtpsink, elements_srtp, elements_netsim, elements_webrtcbin + (( ! _DISABLE_TESTS )) || ! echo "skipping check()" || return 0 + + + export XDG_RUNTIME_DIR="$PWD/runtime-dir" + mkdir -p -m 700 "$XDG_RUNTIME_DIR" + + # Flaky due to timeouts + xvfb-run -s '-nolisten local' \ + meson test -C build --print-errorlogs -t 3 +) + +_install() { + local src dir + for src in "${files[@]}"; do + dir="$pkgdir/$(dirname "$src")" + mkdir -p "$dir" + mv -v "$src" "$dir" + done +} + +package_gstreamer() { + pkgdesc+=" - core" + depends=( + glib2 libcap libelf libunwind libxml2 + ) + optdepends=('python: gst-plugins-doc-cache-generator') + install=gstreamer.install + + meson install -C build --destdir "$srcdir/root" + + cd root; local files=( + usr/include/gstreamer-1.0/gst/{base,check,controller,net,*.h} + usr/lib/libgst{reamer,base,check,controller,net}-1.0.so* + usr/lib/pkgconfig/gstreamer{,-base,-check,-controller,-net}-1.0.pc + usr/lib/girepository-1.0/Gst{,Base,Check,Controller,Net}-1.0.typelib + usr/share/gir-1.0/Gst{,Base,Check,Controller,Net}-1.0.gir + + usr/lib/gstreamer-1.0/gst-{completion,ptp}-helper + usr/lib/gstreamer-1.0/gst-{hotdoc-plugins,plugin}-scanner + usr/lib/gstreamer-1.0/gst-plugins-doc-cache-generator + usr/lib/gstreamer-1.0/gst-ptp-helper-test + usr/lib/gstreamer-1.0/libgstcoreelements.so + usr/lib/gstreamer-1.0/libgstcoretracers.so + + usr/share/locale/*/LC_MESSAGES/gstreamer-1.0.mo + + usr/bin/gst-{inspect,launch,stats,tester,typefind}-1.0 + usr/share/man/man1/gst-{inspect,launch,stats,typefind}-1.0.1 + + usr/share/bash-completion/completions/gst-{inspect,launch}-1.0 + usr/share/bash-completion/helpers/gst + + usr/share/gdb/auto-load/usr/lib/libgstreamer-1.0.so*.py + usr/share/gstreamer-1.0/gdb/glib_gobject_helper.py + usr/share/gstreamer-1.0/gdb/gst_gdb.py + + usr/share/aclocal/gst-element-check-1.0.m4 + ); _install +} + +package_gst-plugins-bad-libs() { + pkgdesc+=" - bad" + depends=( + "gst-plugins-base-libs=$pkgver" + libdrm libgudev libnice libusb libva libx11 libxkbcommon-x11 orc + vulkan-icd-loader wayland + ) + + cd root; local files=( + usr/include/gstreamer-1.0/gst/audio/{audio-bad-prelude,gstnonstreamaudiodecoder,gstplanaraudioadapter}.h + usr/include/gstreamer-1.0/gst/{analytics,basecamerabinsrc,codecparsers,cuda,insertbin,interfaces,isoff,mpegts,mse,play,player,sctp,transcoder,uridownloader,va,vulkan,wayland,webrtc} + usr/lib/libgst{adaptivedemux,analytics,badaudio,basecamerabinsrc,codecparsers,codecs,cuda,dxva,insertbin,isoff,mpegts,mse}-1.0.so* + usr/lib/libgst{photography,play,player,sctp,transcoder,uridownloader,va,vulkan,wayland,webrtc,webrtcnice}-1.0.so* + usr/lib/pkgconfig/gstreamer-{analytics,bad-audio,codecparsers,cuda,insertbin,mpegts,mse,photography,play,player,sctp,transcoder,vulkan{,-wayland,-xcb},va,wayland,webrtc{,-nice}}-1.0.pc + usr/lib/girepository-1.0/{CudaGst,Gst{Analytics,BadAudio,Codecs,Cuda,Dxva,InsertBin,Mpegts,Mse,Play,Player,Transcoder,Va,Vulkan{,Wayland,XCB},WebRTC}}-1.0.typelib + usr/share/gir-1.0/{CudaGst,Gst{Analytics,BadAudio,Codecs,Cuda,Dxva,InsertBin,Mpegts,Mse,Play,Player,Transcoder,Va,Vulkan{,Wayland,XCB},WebRTC}}-1.0.gir + + usr/lib/pkgconfig/gstreamer-plugins-bad-1.0.pc + usr/lib/gstreamer-1.0/libgstaccurip.so + usr/lib/gstreamer-1.0/libgstadpcmdec.so + usr/lib/gstreamer-1.0/libgstadpcmenc.so + usr/lib/gstreamer-1.0/libgstaiff.so + usr/lib/gstreamer-1.0/libgstasfmux.so + usr/lib/gstreamer-1.0/libgstaudiobuffersplit.so + usr/lib/gstreamer-1.0/libgstaudiofxbad.so + usr/lib/gstreamer-1.0/libgstaudiolatency.so + usr/lib/gstreamer-1.0/libgstaudiomixmatrix.so + usr/lib/gstreamer-1.0/libgstaudiovisualizers.so + usr/lib/gstreamer-1.0/libgstautoconvert.so + usr/lib/gstreamer-1.0/libgstbayer.so + usr/lib/gstreamer-1.0/libgstbluez.so + usr/lib/gstreamer-1.0/libgstcamerabin.so + usr/lib/gstreamer-1.0/libgstcodecalpha.so + usr/lib/gstreamer-1.0/libgstcodectimestamper.so + usr/lib/gstreamer-1.0/libgstcoloreffects.so + usr/lib/gstreamer-1.0/libgstdebugutilsbad.so + usr/lib/gstreamer-1.0/libgstdecklink.so + usr/lib/gstreamer-1.0/libgstdvb.so + usr/lib/gstreamer-1.0/libgstdvbsubenc.so + usr/lib/gstreamer-1.0/libgstdvbsuboverlay.so + usr/lib/gstreamer-1.0/libgstdvdspu.so + usr/lib/gstreamer-1.0/libgstfaceoverlay.so + usr/lib/gstreamer-1.0/libgstfbdevsink.so + usr/lib/gstreamer-1.0/libgstfestival.so + usr/lib/gstreamer-1.0/libgstfieldanalysis.so + usr/lib/gstreamer-1.0/libgstfreeverb.so + usr/lib/gstreamer-1.0/libgstfrei0r.so + usr/lib/gstreamer-1.0/libgstgaudieffects.so + usr/lib/gstreamer-1.0/libgstgdp.so + usr/lib/gstreamer-1.0/libgstgeometrictransform.so + usr/lib/gstreamer-1.0/libgstid3tag.so + usr/lib/gstreamer-1.0/libgstinsertbin.so + usr/lib/gstreamer-1.0/libgstinter.so + usr/lib/gstreamer-1.0/libgstinterlace.so + usr/lib/gstreamer-1.0/libgstipcpipeline.so + usr/lib/gstreamer-1.0/libgstivfparse.so + usr/lib/gstreamer-1.0/libgstivtc.so + usr/lib/gstreamer-1.0/libgstjp2kdecimator.so + usr/lib/gstreamer-1.0/libgstjpegformat.so + usr/lib/gstreamer-1.0/libgstkms.so + usr/lib/gstreamer-1.0/libgstlegacyrawparse.so + usr/lib/gstreamer-1.0/libgstmidi.so + usr/lib/gstreamer-1.0/libgstmpegpsdemux.so + usr/lib/gstreamer-1.0/libgstmpegpsmux.so + usr/lib/gstreamer-1.0/libgstmpegtsdemux.so + usr/lib/gstreamer-1.0/libgstmpegtsmux.so + usr/lib/gstreamer-1.0/libgstmse.so + usr/lib/gstreamer-1.0/libgstmxf.so + usr/lib/gstreamer-1.0/libgstnetsim.so + usr/lib/gstreamer-1.0/libgstnvcodec.so + usr/lib/gstreamer-1.0/libgstpcapparse.so + usr/lib/gstreamer-1.0/libgstpnm.so + usr/lib/gstreamer-1.0/libgstproxy.so + usr/lib/gstreamer-1.0/libgstremovesilence.so + usr/lib/gstreamer-1.0/libgstrfbsrc.so + usr/lib/gstreamer-1.0/libgstrist.so + usr/lib/gstreamer-1.0/libgstrtmp2.so + usr/lib/gstreamer-1.0/libgstrtpmanagerbad.so + usr/lib/gstreamer-1.0/libgstrtponvif.so + usr/lib/gstreamer-1.0/libgstsdpelem.so + usr/lib/gstreamer-1.0/libgstsegmentclip.so + usr/lib/gstreamer-1.0/libgstshm.so + usr/lib/gstreamer-1.0/libgstsiren.so + usr/lib/gstreamer-1.0/libgstsmooth.so + usr/lib/gstreamer-1.0/libgstspeed.so + usr/lib/gstreamer-1.0/libgstsubenc.so + usr/lib/gstreamer-1.0/libgstswitchbin.so + usr/lib/gstreamer-1.0/libgsttranscode.so + usr/lib/gstreamer-1.0/libgstunixfd.so + usr/lib/gstreamer-1.0/libgstuvcgadget.so + usr/lib/gstreamer-1.0/libgstuvch264.so + usr/lib/gstreamer-1.0/libgstv4l2codecs.so + usr/lib/gstreamer-1.0/libgstvideofiltersbad.so + usr/lib/gstreamer-1.0/libgstvideoframe_audiolevel.so + usr/lib/gstreamer-1.0/libgstvideoparsersbad.so + usr/lib/gstreamer-1.0/libgstvideosignal.so + usr/lib/gstreamer-1.0/libgstvmnc.so + usr/lib/gstreamer-1.0/libgstvulkan.so + usr/lib/gstreamer-1.0/libgstwaylandsink.so + usr/lib/gstreamer-1.0/libgsty4mdec.so + + usr/share/gstreamer-1.0/encoding-profiles + usr/share/gstreamer-1.0/presets/GstFreeverb.prs + + usr/share/locale/*/LC_MESSAGES/gst-plugins-bad-1.0.mo + + usr/bin/gst-transcoder-1.0 + ); _install +} + +package_gst-plugins-base-libs() { + pkgdesc+=" - base" + depends=( + "gstreamer=$pkgver" + iso-codes libdrm libgl libgudev libxi libxv mesa orc wayland + ) + + cd root; local files=( + usr/include/gstreamer-1.0/gst/{allocators,app,audio,fft,gl,pbutils,riff,rtp,rtsp,sdp,tag,video} + usr/lib/libgst{allocators,app,audio,fft,gl,pbutils,riff,rtp,rtsp,sdp,tag,video}-1.0.so* + usr/lib/pkgconfig/gstreamer-{allocators,app,audio,fft,gl{,-egl,-prototypes,-wayland,-x11},pbutils,riff,rtp,rtsp,sdp,tag,video}-1.0.pc + usr/lib/girepository-1.0/Gst{Allocators,App,Audio,GL{,EGL,Wayland,X11},Pbutils,Rtp,Rtsp,Sdp,Tag,Video}-1.0.typelib + usr/share/gir-1.0/Gst{Allocators,App,Audio,GL{,EGL,Wayland,X11},Pbutils,Rtp,Rtsp,Sdp,Tag,Video}-1.0.gir + + usr/lib/pkgconfig/gstreamer-plugins-base-1.0.pc + usr/lib/gstreamer-1.0/include/gst/gl/gstglconfig.h + usr/lib/gstreamer-1.0/libgstadder.so + usr/lib/gstreamer-1.0/libgstapp.so + usr/lib/gstreamer-1.0/libgstaudioconvert.so + usr/lib/gstreamer-1.0/libgstaudiomixer.so + usr/lib/gstreamer-1.0/libgstaudiorate.so + usr/lib/gstreamer-1.0/libgstaudioresample.so + usr/lib/gstreamer-1.0/libgstaudiotestsrc.so + usr/lib/gstreamer-1.0/libgstbasedebug.so + usr/lib/gstreamer-1.0/libgstcompositor.so + usr/lib/gstreamer-1.0/libgstdsd.so + usr/lib/gstreamer-1.0/libgstencoding.so + usr/lib/gstreamer-1.0/libgstgio.so + usr/lib/gstreamer-1.0/libgstoverlaycomposition.so + usr/lib/gstreamer-1.0/libgstpbtypes.so + usr/lib/gstreamer-1.0/libgstplayback.so + usr/lib/gstreamer-1.0/libgstrawparse.so + usr/lib/gstreamer-1.0/libgstsubparse.so + usr/lib/gstreamer-1.0/libgsttcp.so + usr/lib/gstreamer-1.0/libgsttypefindfunctions.so + usr/lib/gstreamer-1.0/libgstvideoconvertscale.so + usr/lib/gstreamer-1.0/libgstvideorate.so + usr/lib/gstreamer-1.0/libgstvideotestsrc.so + usr/lib/gstreamer-1.0/libgstvolume.so + usr/lib/gstreamer-1.0/libgstximagesink.so + usr/lib/gstreamer-1.0/libgstxvimagesink.so + + usr/share/locale/*/LC_MESSAGES/gst-plugins-base-1.0.mo + + usr/bin/gst-{device-monitor,discoverer,play}-1.0 + usr/share/man/man1/gst-{device-monitor,discoverer,play}-1.0.1 + + usr/share/gst-plugins-base + ); _install +} + +package_gst-plugins-base() { + pkgdesc+=" - base plugins" + depends=( + "gst-plugins-base-libs=$pkgver" + alsa-lib cdparanoia graphene libjpeg libpng libtheora libvorbis opus pango + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstalsa.so + usr/lib/gstreamer-1.0/libgstcdparanoia.so + usr/lib/gstreamer-1.0/libgstogg.so + usr/lib/gstreamer-1.0/libgstopengl.so + usr/lib/gstreamer-1.0/libgstopus.so + usr/lib/gstreamer-1.0/libgstpango.so + usr/lib/gstreamer-1.0/libgsttheora.so + usr/lib/gstreamer-1.0/libgstvorbis.so + ); _install +} + +package_gst-plugins-good() { + pkgdesc+=" - good plugins" + depends=( + "gst-plugins-base-libs=$pkgver" + aalib cairo flac gdk-pixbuf2 lame libavc1394 libcaca libdv libgudev + libiec61883 libpulse libraw1394 libshout libsoup3 libvpx libxdamage libxtst + mpg123 nettle opencore-amr speex taglib twolame v4l-utils wavpack + ) + optdepends=('jack: JACK backend') + + cd root; local files=( + usr/lib/gstreamer-1.0/libgst1394.so + usr/lib/gstreamer-1.0/libgstaasink.so + usr/lib/gstreamer-1.0/libgstadaptivedemux2.so + usr/lib/gstreamer-1.0/libgstalaw.so + usr/lib/gstreamer-1.0/libgstalpha.so + usr/lib/gstreamer-1.0/libgstalphacolor.so + usr/lib/gstreamer-1.0/libgstamrnb.so + usr/lib/gstreamer-1.0/libgstamrwbdec.so + usr/lib/gstreamer-1.0/libgstapetag.so + usr/lib/gstreamer-1.0/libgstaudiofx.so + usr/lib/gstreamer-1.0/libgstaudioparsers.so + usr/lib/gstreamer-1.0/libgstauparse.so + usr/lib/gstreamer-1.0/libgstautodetect.so + usr/lib/gstreamer-1.0/libgstavi.so + usr/lib/gstreamer-1.0/libgstcacasink.so + usr/lib/gstreamer-1.0/libgstcairo.so + usr/lib/gstreamer-1.0/libgstcutter.so + usr/lib/gstreamer-1.0/libgstdebug.so + usr/lib/gstreamer-1.0/libgstdeinterlace.so + usr/lib/gstreamer-1.0/libgstdtmf.so + usr/lib/gstreamer-1.0/libgstdv.so + usr/lib/gstreamer-1.0/libgsteffectv.so + usr/lib/gstreamer-1.0/libgstequalizer.so + usr/lib/gstreamer-1.0/libgstflac.so + usr/lib/gstreamer-1.0/libgstflv.so + usr/lib/gstreamer-1.0/libgstflxdec.so + usr/lib/gstreamer-1.0/libgstgdkpixbuf.so + usr/lib/gstreamer-1.0/libgstgoom.so + usr/lib/gstreamer-1.0/libgstgoom2k1.so + usr/lib/gstreamer-1.0/libgsticydemux.so + usr/lib/gstreamer-1.0/libgstid3demux.so + usr/lib/gstreamer-1.0/libgstimagefreeze.so + usr/lib/gstreamer-1.0/libgstinterleave.so + usr/lib/gstreamer-1.0/libgstisomp4.so + usr/lib/gstreamer-1.0/libgstjack.so + usr/lib/gstreamer-1.0/libgstjpeg.so + usr/lib/gstreamer-1.0/libgstlame.so + usr/lib/gstreamer-1.0/libgstlevel.so + usr/lib/gstreamer-1.0/libgstmatroska.so + usr/lib/gstreamer-1.0/libgstmonoscope.so + usr/lib/gstreamer-1.0/libgstmpg123.so + usr/lib/gstreamer-1.0/libgstmulaw.so + usr/lib/gstreamer-1.0/libgstmultifile.so + usr/lib/gstreamer-1.0/libgstmultipart.so + usr/lib/gstreamer-1.0/libgstnavigationtest.so + usr/lib/gstreamer-1.0/libgstoss4.so + usr/lib/gstreamer-1.0/libgstossaudio.so + usr/lib/gstreamer-1.0/libgstpng.so + usr/lib/gstreamer-1.0/libgstpulseaudio.so + usr/lib/gstreamer-1.0/libgstreplaygain.so + usr/lib/gstreamer-1.0/libgstrtp.so + usr/lib/gstreamer-1.0/libgstrtpmanager.so + usr/lib/gstreamer-1.0/libgstrtsp.so + usr/lib/gstreamer-1.0/libgstshapewipe.so + usr/lib/gstreamer-1.0/libgstshout2.so + usr/lib/gstreamer-1.0/libgstsmpte.so + usr/lib/gstreamer-1.0/libgstsoup.so + usr/lib/gstreamer-1.0/libgstspectrum.so + usr/lib/gstreamer-1.0/libgstspeex.so + usr/lib/gstreamer-1.0/libgsttaglib.so + usr/lib/gstreamer-1.0/libgsttwolame.so + usr/lib/gstreamer-1.0/libgstudp.so + usr/lib/gstreamer-1.0/libgstvideo4linux2.so + usr/lib/gstreamer-1.0/libgstvideobox.so + usr/lib/gstreamer-1.0/libgstvideocrop.so + usr/lib/gstreamer-1.0/libgstvideofilter.so + usr/lib/gstreamer-1.0/libgstvideomixer.so + usr/lib/gstreamer-1.0/libgstvpx.so + usr/lib/gstreamer-1.0/libgstwavenc.so + usr/lib/gstreamer-1.0/libgstwavpack.so + usr/lib/gstreamer-1.0/libgstwavparse.so + usr/lib/gstreamer-1.0/libgstximagesrc.so + usr/lib/gstreamer-1.0/libgstxingmux.so + usr/lib/gstreamer-1.0/libgsty4menc.so + + usr/share/gstreamer-1.0/presets/GstIirEqualizer{3,10}Bands.prs + usr/share/gstreamer-1.0/presets/GstQTMux.prs + usr/share/gstreamer-1.0/presets/Gst{Amrnb,VP8}Enc.prs + + usr/share/locale/*/LC_MESSAGES/gst-plugins-good-1.0.mo + ); _install +} + +package_gst-plugins-bad() { + pkgdesc+=" - bad plugins" + depends=( + "gst-plugins-bad-libs=$pkgver" + aom bzip2 chromaprint curl faac faad2 fluidsynth gsm json-glib lcms2 libass + libavtp libbs2b libdc1394 libdca libde265 libdvdnav libdvdread libfdk-aac + libfreeaptx libgme liblc3 libldac liblrdf libltc libmicrodns libmodplug + libmpcdec libopenmpt librsvg libsndfile libsrtp libwebp libxml2 lilv + mjpegtools neon nettle openal openexr openjpeg2 openssl opus pango qrencode + rtmpdump sbc soundtouch spandsp srt svt-av1 svt-hevc + webrtc-audio-processing-1 wildmidi x265 zbar zvbi zxing-cpp + ) + + # parabola over-rides + depends=( ${depends[*]/faac/} ) # non-free + depends=( ${depends[*]/$([[ "${CARCH}" == x86_64 ]] || echo svt-hevc)/} ) # x86_64 only + depends=( ${depends[*]/$([[ "${CARCH}" != armv7h ]] || echo svt-av1)/} ) # x86 only + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstaes.so + usr/lib/gstreamer-1.0/libgstanalyticsoverlay.so + usr/lib/gstreamer-1.0/libgstaom.so + usr/lib/gstreamer-1.0/libgstassrender.so + usr/lib/gstreamer-1.0/libgstavtp.so + usr/lib/gstreamer-1.0/libgstbs2b.so + usr/lib/gstreamer-1.0/libgstbz2.so + usr/lib/gstreamer-1.0/libgstchromaprint.so + usr/lib/gstreamer-1.0/libgstclosedcaption.so + usr/lib/gstreamer-1.0/libgstcodec2json.so + usr/lib/gstreamer-1.0/libgstcolormanagement.so + usr/lib/gstreamer-1.0/libgstcurl.so + usr/lib/gstreamer-1.0/libgstdash.so + usr/lib/gstreamer-1.0/libgstdc1394.so + usr/lib/gstreamer-1.0/libgstde265.so + usr/lib/gstreamer-1.0/libgstdtls.so + usr/lib/gstreamer-1.0/libgstdtsdec.so + usr/lib/gstreamer-1.0/libgstfaac.so + usr/lib/gstreamer-1.0/libgstfaad.so + usr/lib/gstreamer-1.0/libgstfdkaac.so + usr/lib/gstreamer-1.0/libgstfluidsynthmidi.so + usr/lib/gstreamer-1.0/libgstgme.so + usr/lib/gstreamer-1.0/libgstgsm.so + usr/lib/gstreamer-1.0/libgsthls.so + usr/lib/gstreamer-1.0/libgstladspa.so + usr/lib/gstreamer-1.0/libgstlc3.so + usr/lib/gstreamer-1.0/libgstldac.so + usr/lib/gstreamer-1.0/libgstlv2.so + usr/lib/gstreamer-1.0/libgstmicrodns.so + usr/lib/gstreamer-1.0/libgstmodplug.so + usr/lib/gstreamer-1.0/libgstmpeg2enc.so + usr/lib/gstreamer-1.0/libgstmplex.so + usr/lib/gstreamer-1.0/libgstmusepack.so + usr/lib/gstreamer-1.0/libgstneonhttpsrc.so + usr/lib/gstreamer-1.0/libgstopenal.so + usr/lib/gstreamer-1.0/libgstopenaptx.so + usr/lib/gstreamer-1.0/libgstopenexr.so + usr/lib/gstreamer-1.0/libgstopenjpeg.so + usr/lib/gstreamer-1.0/libgstopenmpt.so + usr/lib/gstreamer-1.0/libgstopusparse.so + usr/lib/gstreamer-1.0/libgstqroverlay.so + usr/lib/gstreamer-1.0/libgstresindvd.so + usr/lib/gstreamer-1.0/libgstrsvg.so + usr/lib/gstreamer-1.0/libgstrtmp.so + usr/lib/gstreamer-1.0/libgstsbc.so + usr/lib/gstreamer-1.0/libgstsctp.so + usr/lib/gstreamer-1.0/libgstsmoothstreaming.so + usr/lib/gstreamer-1.0/libgstsndfile.so + usr/lib/gstreamer-1.0/libgstsoundtouch.so + usr/lib/gstreamer-1.0/libgstspandsp.so + usr/lib/gstreamer-1.0/libgstsrt.so + usr/lib/gstreamer-1.0/libgstsrtp.so + usr/lib/gstreamer-1.0/libgstsvtav1.so + usr/lib/gstreamer-1.0/libgstsvthevcenc.so + usr/lib/gstreamer-1.0/libgstteletext.so + usr/lib/gstreamer-1.0/libgsttimecode.so + usr/lib/gstreamer-1.0/libgstttmlsubs.so + usr/lib/gstreamer-1.0/libgstwebp.so + usr/lib/gstreamer-1.0/libgstwebrtc.so + usr/lib/gstreamer-1.0/libgstwebrtcdsp.so + usr/lib/gstreamer-1.0/libgstwildmidi.so + usr/lib/gstreamer-1.0/libgstx265.so + usr/lib/gstreamer-1.0/libgstzbar.so + usr/lib/gstreamer-1.0/libgstzxing.so + ) + + # parabola over-rides + files=( + ${files[*]/usr\/lib\/gstreamer-1.0\/libgstfaac.so/} # non-free + ); [[ "${CARCH}" == x86_64 ]] || files=( + ${files[*]/usr\/lib\/gstreamer-1.0\/libgstsvthevcenc.so/} # x86_64 only + ); [[ "${CARCH}" != armv7h ]] || files=( + ${files[*]/usr\/lib\/gstreamer-1.0\/libgstsvtav1.so/} # x86 only + ); _install +} + +package_gst-plugin-gtk() { + pkgdesc+=" - gtk plugin" + depends=( + "gst-plugins-bad-libs=$pkgver" + gtk3 + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstgtk.so + usr/lib/gstreamer-1.0/libgstgtkwayland.so + ); _install +} + +package_gst-plugin-msdk() { + pkgdesc+=" - msdk plugin" + depends=( + "gst-plugins-bad-libs=$pkgver" + libvpl + ) + depends=( ${depends[*]/$([[ "${CARCH}" == x86_64 ]] || echo libvpl)/} ) # x86_64 only + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstmsdk.so + ); _install +} + +package_gst-plugin-opencv() { + pkgdesc+=" - opencv plugin" + depends=( + "gst-plugins-base-libs=$pkgver" + opencv + ) + + cd root; local files=( + usr/include/gstreamer-1.0/gst/opencv + usr/lib/libgstopencv-1.0.so* + + usr/lib/gstreamer-1.0/libgstopencv.so + ); _install +} + +package_gst-plugin-qml6() { + pkgdesc+=" - qml6 plugin" + depends=( + "gst-plugins-base-libs=$pkgver" + qt6-declarative qt6-wayland + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstqml6.so + ); _install +} + +package_gst-plugin-qmlgl() { + pkgdesc+=" - qmlgl plugin" + depends=( + "gst-plugins-base-libs=$pkgver" + qt5-declarative qt5-wayland qt5-x11extras + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstqmlgl.so + ); _install +} + +package_gst-plugin-qsv() { + pkgdesc+=" - qsv plugin" + depends=("gst-plugins-bad-libs=$pkgver") + optdepends=( + 'intel-media-sdk: runtime for legacy Intel GPUs' + 'onevpl-intel-gpu: runtime for Tiger Lake and newer GPUs' + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstqsv.so + ); _install +} + + +package_gst-plugin-va() { + pkgdesc+=" - va plugin" + depends=("gst-plugins-bad-libs=$pkgver") + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstva.so + ); _install +} + +package_gst-plugin-wpe() { + pkgdesc+=" - wpe plugin" + depends=( + "gst-plugins-base-libs=$pkgver" + wpewebkit + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstwpe.so + usr/lib/gst-plugins-bad/wpe-extension/libgstwpeextension.so + ); _install +} + +package_gst-plugins-ugly() { + pkgdesc+=" - ugly plugins" + depends=( + "gst-plugins-base-libs=$pkgver" + a52dec libcdio libdvdread libmpeg2 x264 + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgsta52dec.so + usr/lib/gstreamer-1.0/libgstasf.so + usr/lib/gstreamer-1.0/libgstcdio.so + usr/lib/gstreamer-1.0/libgstdvdlpcmdec.so + usr/lib/gstreamer-1.0/libgstdvdread.so + 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/libgstx264.so + + usr/share/gstreamer-1.0/presets/GstX264Enc.prs + + usr/share/locale/*/LC_MESSAGES/gst-plugins-ugly-1.0.mo + ); _install +} + +package_gst-libav() { + pkgdesc+=" - libav plugin" + depends=( + "gst-plugins-base-libs=$pkgver" + bzip2 ffmpeg + ) + provides=("gst-ffmpeg=$pkgver") + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstlibav.so + ); _install +} + +package_gst-rtsp-server() { + pkgdesc+=" - rtsp server" + depends=("gst-plugins-base-libs=$pkgver") + + cd root; local files=( + usr/include/gstreamer-1.0/gst/rtsp-server + usr/lib/libgstrtspserver-1.0.so* + usr/lib/pkgconfig/gstreamer-rtsp-server-1.0.pc + usr/lib/girepository-1.0/GstRtspServer-1.0.typelib + usr/share/gir-1.0/GstRtspServer-1.0.gir + + usr/lib/gstreamer-1.0/libgstrtspclientsink.so + ); _install +} + +package_gst-editing-services() { + pkgdesc+=" - editing services" + depends=( + "gst-plugins-base-libs=$pkgver" + python + ) + + cd root; local files=( + usr/include/gstreamer-1.0/ges + usr/lib/libges-1.0.so* + usr/lib/pkgconfig/gst-editing-services-1.0.pc + usr/lib/girepository-1.0/GES-1.0.typelib + usr/share/gir-1.0/GES-1.0.gir + + usr/lib/gstreamer-1.0/libgstges.so + usr/lib/gstreamer-1.0/libgstnle.so + + usr/lib/python*/site-packages/gi/overrides/GES.py + usr/lib/python*/site-packages/gi/overrides/__pycache__/GES.*.pyc + + usr/bin/ges-launch-1.0 + usr/share/man/man1/ges-launch-1.0.1 + + usr/share/bash-completion/completions/ges-launch-1.0 + ); _install +} + +package_gstreamer-vaapi() { + pkgdesc+=" - vaapi plugin" + depends=( + "gst-plugins-bad-libs=$pkgver" + libxrandr + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstvaapi.so + ); _install +} + +package_gst-python() { + pkgdesc+=" - python plugin" + depends=( + "gst-plugins-base-libs=$pkgver" + python-gobject + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstpython.so + usr/lib/python*/site-packages/gi/overrides + ); _install +} + +package_gstreamer-docs() { + pkgdesc+=" - documentation" + license=( + 'BSD-2-Clause OR MIT OR LGPL-2.1-or-later' + CC-BY-SA-4.0 + LGPL-2.1-or-later + MIT + OPUBL-1.0 + ) + + # make sure there are no files left to install + find root -depth ! -type d + find root -depth -print0 | xargs -0 rmdir + + cd gstreamer-docs-${pkgver%%+*} + + mkdir -p "$pkgdir/usr/share/doc/$pkgbase" + cp -t "$pkgdir/usr/share" -a devhelp + cp -t "$pkgdir/usr/share/doc/$pkgbase" -a html README* + + install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 COPYING LICENSE* +} |