2018-03-31 21:03:18 +00:00
{ stdenv , fetchurl , fetchpatch , meson , ninja , gettext
2019-01-21 01:48:04 +00:00
, config
2018-09-03 21:09:17 +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
2014-04-07 13:37:02 +00:00
, faacSupport ? false , faac ? null
2018-07-08 23:17:35 +00:00
, faad2 , libass , libkate , libmms , librdf , ladspaH
, libnice , webrtc-audio-processing , lilv , lv2 , serd , sord , sratom
, libbs2b , libmodplug , mpeg2dec
2013-12-23 15:36:37 +00:00
, openjpeg , libopus , librsvg
2019-01-21 01:48:04 +00:00
, bluez
, chromaprint
, curl
, 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
, opencv3
, 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
2014-04-29 09:15:10 +00:00
, wildmidi , fluidsynth , libvdpau , wayland
2016-04-21 14:13:05 +00:00
, libwebp , xvidcore , gnutls , mjpegtools
2018-03-14 19:15:06 +00:00
, libGLU_combined , libintl , libgme
2016-09-04 19:44:15 +00:00
, 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 ;
2015-04-09 01:54:51 +00:00
in
2013-12-23 15:36:37 +00:00
stdenv . mkDerivation rec {
2018-08-30 11:30:00 +00:00
name = " g s t - p l u g i n s - b a d - ${ version } " ;
2019-05-01 14:10:36 +00:00
version = " 1 . 1 6 . 0 " ;
2013-12-23 15:36:37 +00:00
2014-03-17 13:31:45 +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 " ;
2017-09-16 19:28:31 +00:00
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 " ;
2014-03-17 13:31:45 +00:00
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 ;
2018-02-23 18:34:26 +00:00
platforms = platforms . linux ++ platforms . darwin ;
2018-04-24 23:35:54 +00:00
maintainers = with maintainers ; [ matthewbauer ] ;
2013-12-23 15:36:37 +00:00
} ;
2018-03-31 21:03:18 +00:00
preConfigure = ''
patchShebangs .
2017-11-20 06:48:40 +00:00
'' ;
2018-03-31 21:03:18 +00:00
patches = [
./fix_pkgconfig_includedir.patch
2019-05-01 17:47:53 +00:00
# Remove when https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/312 is merged and available to us
( 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 / 9 9 7 9 0 e a a d 9 0 8 3 c c e 5 a b 2 b 1 6 4 6 4 8 9 e 1 a 1 c 0 f a a d 1 e . p a t c h " ;
sha256 = " 1 1 b q y 4 s l 0 5 q q 5 m j 4 b x 5 s 0 9 r q 1 0 6 s 3 j 0 v n p j l 4 n p 0 5 8 i m 3 2 j 6 9 l r 3 " ;
} )
# Remove when https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/312 is merged and available to us
( 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 / 1 8 7 2 d a 8 1 c 4 8 d 3 a 7 1 9 b d 3 9 9 5 5 f d 9 7 d e a c 7 d 0 3 7 d 7 4 . p a t c h " ;
sha256 = " 1 1 z w r r 5 g g f l m v r 0 q f s s j 7 d m h g d 3 y b i a d m y 7 9 b 4 z h 2 4 0 2 2 z g w 3 x p z " ;
} )
2018-03-31 21:03:18 +00:00
] ;
2013-12-23 15:36:37 +00:00
src = fetchurl {
url = " ${ meta . homepage } / s r c / g s t - p l u g i n s - b a d / ${ name } . t a r . x z " ;
2019-05-01 14:10:36 +00:00
sha256 = " 0 1 9 b 0 y q j r c g 6 j m f d 4 c c 3 3 6 h 1 b z 5 p 4 w x l 5 8 y z 1 c 4 s d b 9 6 a v i r s 4 r 2 " ;
2013-12-23 15:36:37 +00:00
} ;
2016-08-29 00:30:01 +00:00
outputs = [ " o u t " " d e v " ] ;
2016-04-24 12:39:30 +00:00
2019-01-21 01:48:04 +00:00
nativeBuildInputs = [
meson ninja pkgconfig python3 gettext gobject-introspection
]
++ optionals stdenv . isLinux [
wayland-protocols
] ;
2013-12-23 15:36:37 +00:00
buildInputs = [
gst-plugins-base orc
2018-04-04 15:43:36 +00:00
faad2 libass libkate libmms
2018-07-08 23:17:35 +00:00
libnice webrtc-audio-processing # webrtc
libbs2b
ladspaH librdf # ladspa plug-in
lilv lv2 serd sord sratom # lv2 plug-in
2018-04-04 15:44:23 +00:00
libmodplug mpeg2dec
2013-12-23 15:36:37 +00:00
openjpeg libopus librsvg
2019-01-21 01:48:04 +00:00
bluez
chromaprint
curl . dev
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
opencv3
openexr
openh264
2019-05-01 17:48:38 +00:00
rtmpdump
2019-01-21 01:48:04 +00:00
pango
sbc
soundtouch
spandsp
srtp
2015-04-09 01:54:51 +00:00
fluidsynth libvdpau
2018-02-24 13:12:44 +00:00
libwebp xvidcore gnutls libGLU_combined
2018-02-23 18:34: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
2015-04-09 01:54:51 +00:00
]
2019-07-23 14:30:56 +00:00
++ optional enableZbar zbar
2015-04-09 01:54:51 +00:00
++ optional faacSupport faac
++ optional stdenv . isLinux wayland
# wildmidi requires apple's OpenAL
# TODO: package apple's OpenAL, fix wildmidi, include on Darwin
2018-02-23 18:34:26 +00:00
++ optional ( ! stdenv . isDarwin ) wildmidi
# TODO: mjpegtools uint64_t is not compatible with guint64 on Darwin
++ optional ( ! stdenv . isDarwin ) mjpegtools ;
2015-04-09 01:54:51 +00:00
2019-01-21 01:48:04 +00:00
mesonFlags = [
# Enables all features, so that we know when new dependencies are necessary.
" - D a u t o _ f e a t u r e s = e n a b l e d "
" - 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 "
] ;
2017-12-06 06:54:33 +00:00
enableParallelBuilding = true ;
2018-04-25 03:20:18 +00:00
doCheck = false ; # fails 20 out of 58 tests, expensive
2013-12-23 15:36:37 +00:00
}