2019-10-02 17:04:26 +00:00
{ stdenv
, fetchurl
2020-04-03 23:01:41 +00:00
, fetchpatch
2019-10-02 17:04:26 +00:00
, meson
, ninja
, gettext
2019-01-21 01:48:04 +00:00
, config
2019-10-02 17:04:26 +00:00
, pkgconfig
, python3
, gst-plugins-base
, orc
2019-01-21 01:48:04 +00:00
, gobject-introspection
2019-07-23 14:30:56 +00:00
, enableZbar ? true
2019-10-02 17:04:26 +00:00
, faacSupport ? false
, faac ? null
, faad2
, libass
, libkate
, libmms
2020-03-22 23:18:53 +00:00
, lrdf
2019-10-02 17:04:26 +00:00
, ladspaH
, libnice
, webrtc-audio-processing
, lilv
, lv2
, serd
, sord
, sratom
, libbs2b
, libmodplug
, mpeg2dec
, openjpeg
, libopus
, librsvg
2019-01-21 01:48:04 +00:00
, bluez
, chromaprint
, curl
2019-05-01 16:44:08 +00:00
, darwin
2019-01-21 01:48:04 +00:00
, directfb
, fdk_aac
, flite
2019-05-01 17:47:53 +00:00
, gsm
2019-01-21 01:48:04 +00:00
, libaom
, libdc1394
, libde265
, libdrm
, libdvdnav
, libdvdread
, libgudev
, libofa
, libsndfile
, libusb1
, neon
, openal
2019-10-02 17:04:26 +00:00
, opencv4
2019-01-21 01:48:04 +00:00
, openexr
, openh264
, pango
2019-05-01 17:48:38 +00:00
, rtmpdump
2019-01-21 01:48:04 +00:00
, sbc
, soundtouch
, spandsp
, srtp
, zbar
, wayland-protocols
2019-10-02 17:04:26 +00:00
, wildmidi
, fluidsynth
, libvdpau
, wayland
, libwebp
, xvidcore
, gnutls
, mjpegtools
2019-11-10 16:44:34 +00:00
, libGLU
, libGL
2019-10-02 17:04:26 +00:00
, libintl
, libgme
, openssl
, x265
, libxml2
2019-01-20 17:59:47 +00:00
, srt
2013-12-23 15:36:37 +00:00
} :
2014-04-07 13:37:02 +00:00
assert faacSupport -> faac != null ;
2015-04-09 01:54:51 +00:00
let
2019-01-21 01:48:04 +00:00
inherit ( stdenv . lib ) optional optionals ;
2019-10-02 17:04:26 +00:00
in stdenv . mkDerivation rec {
2019-08-15 12:41:18 +00:00
pname = " g s t - p l u g i n s - b a d " ;
2019-12-05 17:24:00 +00:00
version = " 1 . 1 6 . 2 " ;
2013-12-23 15:36:37 +00:00
2019-10-02 17:04:26 +00:00
outputs = [ " o u t " " d e v " ] ;
2018-03-31 21:03:18 +00:00
2013-12-23 15:36:37 +00:00
src = fetchurl {
2019-10-02 16:59:16 +00:00
url = " ${ meta . homepage } / s r c / ${ pname } / ${ pname } - ${ version } . t a r . x z " ;
2019-12-05 17:24:00 +00:00
sha256 = " 0 x 0 y 0 h m 0 g a 3 z q i 5 q 4 0 9 0 h w 5 s j h 5 9 y 1 r y 9 a k 1 6 q s a a s c m 7 2 i 7 m j z i " ;
2013-12-23 15:36:37 +00:00
} ;
2019-10-02 17:04:26 +00:00
patches = [
2020-04-03 23:01:41 +00:00
# Fix build with neon 0.31
# https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1165
( fetchpatch {
url = " h t t p s : / / g i t l a b . f r e e d e s k t o p . o r g / g s t r e a m e r / g s t - p l u g i n s - b a d / - / c o m m i t / f 1 0 b 4 2 4 4 1 8 e 4 4 8 2 1 1 e 3 4 2 7 a 7 6 f c d 0 4 6 e 1 5 7 e f 0 b 7 . p a t c h " ;
sha256 = " 0 l 1 f 6 k q c l 0 4 q 7 w 1 2 a 2 b 4 q i b c v j z 6 g q h s 0 c s d v 2 w b v f d 6 z n d p j m 6 p " ;
} )
2019-10-02 17:04:26 +00:00
./fix_pkgconfig_includedir.patch
] ;
2016-04-24 12:39:30 +00:00
2019-01-21 01:48:04 +00:00
nativeBuildInputs = [
2019-10-02 17:04:26 +00:00
meson
ninja
pkgconfig
python3
gettext
gobject-introspection
] ++ optionals stdenv . isLinux [
2019-01-21 01:48:04 +00:00
wayland-protocols
] ;
2013-12-23 15:36:37 +00:00
buildInputs = [
2019-10-02 17:04:26 +00:00
gst-plugins-base
orc
faad2
libass
libkate
libmms
webrtc-audio-processing # webrtc
2018-07-08 23:17:35 +00:00
libbs2b
2019-10-02 17:04:26 +00:00
libmodplug
mpeg2dec
openjpeg
libopus
librsvg
2019-01-21 01:48:04 +00:00
curl . dev
fdk_aac
2019-05-01 17:47:53 +00:00
gsm
2019-01-21 01:48:04 +00:00
libaom
libdc1394
libde265
libdvdnav
libdvdread
libsndfile
libusb1
2019-05-01 16:44:08 +00:00
mjpegtools
2019-01-21 01:48:04 +00:00
neon
openal
2019-10-02 17:04:26 +00:00
opencv4
2019-01-21 01:48:04 +00:00
openexr
openh264
2019-05-01 17:48:38 +00:00
rtmpdump
2019-01-21 01:48:04 +00:00
pango
soundtouch
srtp
2019-10-02 17:04:26 +00:00
fluidsynth
libvdpau
libwebp
xvidcore
gnutls
2019-11-10 16:44:34 +00:00
libGL
libGLU
2019-10-02 17:04:26 +00:00
libgme
openssl
x265
libxml2
2018-03-14 19:15:06 +00:00
libintl
2019-01-20 17:59:47 +00:00
srt
2019-10-02 17:04:26 +00:00
] ++ optionals enableZbar [
zbar
] ++ optionals faacSupport [
faac
] ++ optionals stdenv . isLinux [
2019-05-01 16:44:08 +00:00
bluez
2019-10-02 17:04:26 +00:00
wayland
] ++ optionals ( ! stdenv . isDarwin ) [
2015-04-09 01:54:51 +00:00
# wildmidi requires apple's OpenAL
# TODO: package apple's OpenAL, fix wildmidi, include on Darwin
2019-10-02 17:04:26 +00:00
wildmidi
2018-02-23 18:34:26 +00:00
# TODO: mjpegtools uint64_t is not compatible with guint64 on Darwin
2019-10-02 17:04:26 +00:00
mjpegtools
2019-05-01 16:44:08 +00:00
chromaprint
directfb
flite
libdrm
libgudev
libnice
libofa
sbc
spandsp
# ladspa plug-in
ladspaH
2020-03-22 23:18:53 +00:00
lrdf # TODO: make build on Darwin
2019-05-01 16:44:08 +00:00
# lv2 plug-in
lilv
lv2
serd
sord
sratom
] ++ optionals stdenv . isDarwin ( with darwin . apple_sdk . frameworks ; [
# For unknown reasons the order is important, e.g. if
# VideoToolbox is last, we get:
# fatal error: 'VideoToolbox/VideoToolbox.h' file not found
VideoToolbox
AudioToolbox
AVFoundation
CoreMedia
CoreVideo
Foundation
MediaToolbox
] ) ;
2015-04-09 01:54:51 +00:00
2019-01-21 01:48:04 +00:00
mesonFlags = [
" - D e x a m p l e s = d i s a b l e d " # requires many dependencies and probably not useful for our users
" - D d t s = d i s a b l e d " # required `libdca` library not packaged in nixpkgs as of writing, and marked as "BIG FAT WARNING: libdca is still in early development"
2019-07-23 14:30:56 +00:00
" - D z b a r = ${ if enableZbar then " e n a b l e d " else " d i s a b l e d " } "
2019-01-21 01:48:04 +00:00
" - D f a a c = ${ if faacSupport then " e n a b l e d " else " d i s a b l e d " } "
" - D i q a = d i s a b l e d " # required `dssim` library not packaging in nixpkgs as of writing
" - D m s d k = d i s a b l e d " # not packaged in nixpkgs as of writing / no Windows support
# As of writing, with `libmpcdec` in `buildInputs` we get
# "Could not find libmpcdec header files, but Musepack was enabled via options"
# This is likely because nixpkgs has the header in libmpc/mpcdec.h
# instead of mpc/mpcdec.h, like Arch does. The situation is not trivial.
# There are apparently 2 things called `libmpcdec` from the same author:
# * http://svn.musepack.net/libmpcdec/trunk/src/
# * http://svn.musepack.net/libmpc/trunk/include/mpc/
# Fixing it likely requires to first figure out with upstream which one
# is needed, and then patching upstream to find it (though it probably
# already works on Arch?).
" - D m u s e p a c k = d i s a b l e d "
" - D o p e n m p t = d i s a b l e d " # `libopenmpt` not packaged in nixpkgs as of writing
" - D o p e n n i 2 = d i s a b l e d " # not packaged in nixpkgs as of writing
" - D o p e n s l e s = d i s a b l e d " # not packaged in nixpkgs as of writing
" - D s c t p = d i s a b l e d " # required `usrsctp` library not packaged in nixpkgs as of writing
" - D t e l e t e x t = d i s a b l e d " # required `zvbi` library not packaged in nixpkgs as of writing
" - D t i n y a l s a = d i s a b l e d " # not packaged in nixpkgs as of writing
" - D v o a a c e n c = d i s a b l e d " # required `vo-aacenc` library not packaged in nixpkgs as of writing
" - D v o a m r w b e n c = d i s a b l e d " # required `vo-amrwbenc` library not packaged in nixpkgs as of writing
" - D v u l k a n = d i s a b l e d " # Linux-only, and we haven't figured out yet which of the vulkan nixpkgs it needs
" - D w a s a p i = d i s a b l e d " # not packaged in nixpkgs as of writing / no Windows support
" - D w p e = d i s a b l e d " # required `wpe-webkit` library not packaged in nixpkgs as of writing
# Requires CUDA and we haven't figured out how to make Meson find CUDA yet;
# it probably searches via pkgconfig, for which we have no .pc files,
# see https://github.com/NixOS/nixpkgs/issues/54395
" - D n v d e c = d i s a b l e d "
" - D n v e n c = d i s a b l e d "
2019-05-01 16:44:08 +00:00
]
++ optionals stdenv . isDarwin [
" - D b l u e z = d i s a b l e d "
" - D c h r o m a p r i n t = d i s a b l e d "
" - D d i r e c t f b = d i s a b l e d "
" - D f l i t e = d i s a b l e d "
" - D k m s = d i s a b l e d " # renders to libdrm output
" - D o f a = d i s a b l e d "
" - D l v 2 = d i s a b l e d "
" - D s b c = d i s a b l e d "
" - D s p a n d s p = d i s a b l e d "
" - D d v b = d i s a b l e d "
" - D f b d e v = d i s a b l e d "
" - D u v c h 2 6 4 = d i s a b l e d " # requires gudev
" - D l a d s p a = d i s a b l e d " # requires lrdf
" - D w e b r t c = d i s a b l e d " # requires libnice, which as of writing doesn't work on Darwin in nixpkgs
" - D w i l d m i d i = d i s a b l e d " # see dependencies above
] ++ optionals ( ! gst-plugins-base . glEnabled ) [
" - D g l = d i s a b l e d " ]
++ optionals ( ! gst-plugins-base . waylandEnabled ) [
" - D w a y l a n d = d i s a b l e d "
] ++ optionals ( ! gst-plugins-base . glEnabled ) [
# `applemedia/videotexturecache.h` requires `gst/gl/gl.h`,
# but its meson build system does not declare the dependency.
" - D a p p l e m e d i a = d i s a b l e d "
2019-01-21 01:48:04 +00:00
] ;
2019-05-01 16:44:08 +00:00
# This package has some `_("string literal")` string formats
# that trip up clang with format security enabled.
hardeningDisable = [ " f o r m a t " ] ;
2018-04-25 03:20:18 +00:00
doCheck = false ; # fails 20 out of 58 tests, expensive
2019-10-02 17:04:26 +00:00
meta = with stdenv . lib ; {
description = " G S t r e a m e r B a d P l u g i n s " ;
homepage = " h t t p s : / / g s t r e a m e r . f r e e d e s k t o p . o r g " ;
longDescription = ''
a set of plug-ins that aren't up to par compared to the
rest . They might be close to being good quality , but they're missing
something - be it a good code review , some documentation , a set of tests ,
a real live maintainer , or some actual wide use .
'' ;
license = licenses . lgpl2Plus ;
platforms = platforms . linux ++ platforms . darwin ;
maintainers = with maintainers ; [ matthewbauer ] ;
} ;
2013-12-23 15:36:37 +00:00
}