summaryrefslogtreecommitdiff
path: root/libre/gst-plugins-bad/PKGBUILD
blob: 08a57a2f004cb5fd24593b5b445c59049f3e8107 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Maintainer (Arch): Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Contributor (Arch): Jan de Groot <jgc@archlinux.org>
# Maintainer: 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>

# parabola changes and rationale
# * removed support for non-free faac codec
# * removed nvidia-utils from optdepends
# * adapt pkgdesc variable substitutions in package() functions
# * remove makedepend and package depend on svt-hevc (i686 and armv7h)
# * meson with -D svthevcenc=disabled (i686 and armv7h)

pkgbase=gst-plugins-bad
pkgname=(gst-plugins-bad-libs gst-plugins-bad gst-plugin-opencv gst-plugin-wpe)
pkgver=1.18.3
pkgrel=2
pkgrel+=.parabola1
pkgdesc="Multimedia graph framework - bad plugins"
pkgdesc+=", without nonfree faac support"
url="https://gstreamer.freedesktop.org/"
arch=(x86_64)
arch+=(i686 armv7h)
license=(LGPL)
depends=(gst-plugins-base-libs orc libdrm libx11 libgudev libusb libvdpau
         libxkbcommon-x11)
makedepends=(mjpegtools curl chromaprint libmms faad2 libdca libdvdnav
             libmodplug libgme nettle libkate wayland libofa openjpeg2 libwebp
             libsrtp sbc rtmpdump libexif libdvdread wildmidi ladspa openal
             vulkan-icd-loader libfdk-aac soundtouch spandsp neon
             webrtc-audio-processing libdc1394 libmpcdec zvbi openexr libbs2b
             libnice lcms2 bluez-libs glu srt aom x265 liblrdf libde265 zbar
             librsvg fluidsynth lilv lv2 gst-plugins-good python git
             gobject-introspection vulkan-headers vulkan-validation-layers
             wayland-protocols gtk3 meson shaderc libavtp libmicrodns
             zxing-cpp opencv libva wpewebkit)
makedepends_x86_64=(svt-hevc)
checkdepends=(xorg-server-xvfb)
options=(!emptydirs)
_commit=382e373d9be363f1e21b12990a4d12f1ecb6df41  # tags/1.18.3^0
source=("git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad.git#commit=$_commit")
sha256sums=('SKIP')

pkgver() {
  cd $pkgbase
  git describe --tags | sed 's/-/+/g'
}

prepare() {
  cd $pkgbase

  if [ "$CARCH" = armv7h ]; then
    git cherry-pick -n 3ea6387f969c0b08027fc959b8b8cd102708bceb  # Fix svthevcenc test
    git cherry-pick -n 77f28ee3e71d1c5bd8278967963b08b226515dd1  # opencv 4.5
  fi
}

build() {
  if ! [ "$CARCH" = x86_64 ]; then
    disable_svthevc='-D svthevcenc=disabled'
  fi

  arch-meson $pkgbase build $disable_svthevc \
    -D directfb=disabled \
    -D faac=disabled \
    -D doc=disabled \
    -D flite=disabled \
    -D gsm=disabled \
    -D iqa=disabled \
    -D magicleap=disabled \
    -D msdk=disabled \
    -D openh264=disabled \
    -D openmpt=disabled \
    -D openni2=disabled \
    -D opensles=disabled \
    -D tinyalsa=disabled \
    -D voaacenc=disabled \
    -D voamrwbenc=disabled \
    -D wasapi2=disabled \
    -D wasapi=disabled \
    -D gobject-cast-checks=disabled \
    -D package-name="GStreamer Bad Plugins (Parabola GNU/Linux-libre)" \
    -D package-origin="https://www.parabola.nu/"
  meson compile -C build
}

check() (
  mkdir -p -m 700 "${XDG_RUNTIME_DIR:=$PWD/runtime-dir}"
  export XDG_RUNTIME_DIR

  # elements_dtls test hangs sometimes
  xvfb-run -s '-screen 0 1920x1080x24 -nolisten local +iglx -noreset' \
    meson test -C build --print-errorlogs || :
)

package_gst-plugins-bad-libs() {
  pkgdesc="${pkgdesc/ plugins}"
  provides=("gst-transcoder=$pkgver")
  conflicts=("gst-transcoder<1.18.0")
  replaces=("gst-transcoder<1.18.0")

  if [ "$CARCH" = x86_64 ]; then
    enable_svthevc=svthevcenc
  fi

  DESTDIR="$pkgdir" meson install -C build

  mkdir -p ext/lib/gstreamer-1.0
  for _x in aom assrender bs2b bz2 chromaprint closedcaption colormanagement \
            curl dc1394 de265 dtls dtsdec faad fdkaac fluidsynthmidi gme \
            hls kate ladspa lv2 mms modplug mpeg2enc mplex musepack \
            neonhttpsrc ofa openal openexr openjpeg opusparse resindvd rsvg \
            rtmp sbc sctp smoothstreaming sndfile soundtouch spandsp srt srtp \
            teletext ttmlsubs vulkan waylandsink webp webrtc webrtcdsp \
            wildmidi x265 zbar va "$enable_svthevc" avtp zxing microdns; do
    _x="lib/gstreamer-1.0/libgst${_x}.so"
    mv "$pkgdir/usr/$_x" "ext/$_x"
  done

  mkdir -p opencv/{lib,include/gstreamer-1.0/gst}
  mv -t opencv/lib "$pkgdir"/usr/lib/*opencv*
  mv -t opencv/include/gstreamer-1.0/gst \
    "$pkgdir"/usr/include/gstreamer-1.0/gst/opencv

  for _x in opencv wpe; do
    mkdir -p "$_x/lib/gstreamer-1.0"
    _f="lib/gstreamer-1.0/libgst${_x}.so"
    mv "$pkgdir/usr/$_f" "$_x/$_f"
  done
}

package_gst-plugins-bad() {
  depends=("gst-plugins-bad-libs=$pkgver" gst-plugins-good
           aom libass libbs2b bzip2 chromaprint pango lcms2 curl libxml2
           libdc1394 libde265 openssl libdca faad2 libfdk-aac fluidsynth
           libgme nettle libkate liblrdf lilv libmms libmodplug mjpegtools
           libmpcdec neon libofa openal openexr openjpeg2 opus libdvdnav
           libdvdread librsvg rtmpdump sbc libsndfile soundtouch spandsp srt
           libsrtp zvbi vulkan-icd-loader libxcb wayland libwebp libnice
           webrtc-audio-processing wildmidi x265 zbar libavtp
           libmicrodns zxing-cpp libva)
  depends_x86_64=(svt-hevc)

  mv ext "$pkgdir/usr"
}

package_gst-plugin-opencv() {
  pkgdesc="${pkgdesc/bad plugins/opencv plugin}"
  depends=(gst-plugins-base-libs opencv)

  mv opencv "$pkgdir/usr"
}

package_gst-plugin-wpe() {
  pkgdesc="${pkgdesc/bad plugins/wpe plugin}"
  depends=(gst-plugins-base-libs wpewebkit)

  mv wpe "$pkgdir/usr"
}