summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2018-04-04 18:34:40 +0200
committerGitHub <noreply@github.com>2018-04-04 18:34:40 +0200
commitc490b0550715ca0b76258c27ccf4b24b85b7fb87 (patch)
tree4e46731791c52785421cbb3a9bbeebafa8420dbe /pkgs
parenta4581f521dac24e44e83def0335457e3caba7e04 (diff)
parent853a086b6a5bcc522e65405bd799649239f2ad59 (diff)
downloadnixpkgs-c490b0550715ca0b76258c27ccf4b24b85b7fb87.tar
nixpkgs-c490b0550715ca0b76258c27ccf4b24b85b7fb87.tar.gz
nixpkgs-c490b0550715ca0b76258c27ccf4b24b85b7fb87.tar.bz2
nixpkgs-c490b0550715ca0b76258c27ccf4b24b85b7fb87.tar.lz
nixpkgs-c490b0550715ca0b76258c27ccf4b24b85b7fb87.tar.xz
nixpkgs-c490b0550715ca0b76258c27ccf4b24b85b7fb87.tar.zst
nixpkgs-c490b0550715ca0b76258c27ccf4b24b85b7fb87.zip
Merge pull request #38149 from bkchr/gst_1_14_0
Updates gstreamer and plugins to 1.14.0
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/networking/corebird/default.nix2
-rw-r--r--pkgs/development/libraries/gstreamer/bad/default.nix37
-rw-r--r--pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch15
-rw-r--r--pkgs/development/libraries/gstreamer/base/default.nix32
-rw-r--r--pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch15
-rw-r--r--pkgs/development/libraries/gstreamer/core/default.nix33
-rw-r--r--pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch15
-rw-r--r--pkgs/development/libraries/gstreamer/default.nix6
-rw-r--r--pkgs/development/libraries/gstreamer/ges/default.nix21
-rw-r--r--pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch15
-rw-r--r--pkgs/development/libraries/gstreamer/gnonlin/default.nix30
-rw-r--r--pkgs/development/libraries/gstreamer/good/default.nix28
-rw-r--r--pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch15
-rw-r--r--pkgs/development/libraries/gstreamer/libav/default.nix15
-rw-r--r--pkgs/development/libraries/gstreamer/rtsp-server/default.nix10
-rw-r--r--pkgs/development/libraries/gstreamer/ugly/default.nix14
-rw-r--r--pkgs/development/libraries/gstreamer/vaapi/default.nix13
-rw-r--r--pkgs/development/libraries/gstreamer/validate/default.nix4
-rw-r--r--pkgs/development/python-modules/gst-python/default.nix19
19 files changed, 201 insertions, 138 deletions
diff --git a/pkgs/applications/networking/corebird/default.nix b/pkgs/applications/networking/corebird/default.nix
index 216569cc821..56947d6650e 100644
--- a/pkgs/applications/networking/corebird/default.nix
+++ b/pkgs/applications/networking/corebird/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glib gtk3 json-glib sqlite libsoup gettext gnome3.dconf gnome3.gspell glib-networking
-  ] ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good (gst-plugins-bad.override { gtkSupport = true; }) gst-libav ]);
+  ] ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-bad (gst-plugins-good.override { gtkSupport = true; }) gst-libav ]);
 
   postPatch = ''
     chmod +x data/meson_post_install.py # patchShebangs requires executable file
diff --git a/pkgs/development/libraries/gstreamer/bad/default.nix b/pkgs/development/libraries/gstreamer/bad/default.nix
index d4cc2f43aaa..8caca820a57 100644
--- a/pkgs/development/libraries/gstreamer/bad/default.nix
+++ b/pkgs/development/libraries/gstreamer/bad/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchurl, pkgconfig, python, gst-plugins-base, orc
+{ stdenv, fetchurl, fetchpatch, meson, ninja, gettext
+, pkgconfig, python, gst-plugins-base, orc
 , faacSupport ? false, faac ? null
-, gtkSupport ? false, gtk3 ? null
 , faad2, libass, libkate, libmms
-, libmodplug, mpeg2dec, mpg123
+, libmodplug, mpeg2dec
 , openjpeg, libopus, librsvg
 , wildmidi, fluidsynth, libvdpau, wayland
 , libwebp, xvidcore, gnutls, mjpegtools
@@ -11,7 +11,6 @@
 }:
 
 assert faacSupport -> faac != null;
-assert gtkSupport -> gtk3 != null;
 
 let
   inherit (stdenv.lib) optional optionalString;
@@ -23,7 +22,7 @@ let
 
 in
 stdenv.mkDerivation rec {
-  name = "gst-plugins-bad-1.12.3";
+  name = "gst-plugins-bad-1.14.0";
 
   meta = with stdenv.lib; {
     description = "Gstreamer Bad Plugins";
@@ -38,27 +37,31 @@ stdenv.mkDerivation rec {
     platforms   = platforms.linux ++ platforms.darwin;
   };
 
-  # TODO: Fix Cocoa build. The problem was ARC, which might be related to too
-  #       old version of Apple SDK's.
-  configureFlags = optional stdenv.isDarwin "--disable-cocoa";
-
-  patchPhase = ''
-    sed -i 's/openjpeg-2.2/openjpeg-${openJpegVersion}/' ext/openjpeg/*
+  preConfigure = ''
+    patchShebangs .
   '';
 
+  patches = [
+    (fetchpatch {
+        url = "https://bug794856.bugzilla-attachments.gnome.org/attachment.cgi?id=370409";
+        sha256 = "0hy0rcn35alq65yqwri4fqjz2hf3nyyg5c7rnndk51msmqjxpprk";
+    })
+    ./fix_pkgconfig_includedir.patch
+  ];
+
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-bad/${name}.tar.xz";
-    sha256 = "1v5z3i5ha20gmbb3r9dwsaaspv5fm1jfzlzwlzqx1gjj31v5kl1n";
+    sha256 = "17sgzgx1c54k5rzz7ljyz3is0n7yj56k74vv05h8z1gjnsnjnppd";
   };
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig python ];
+  nativeBuildInputs = [ meson ninja pkgconfig python gettext ];
 
   buildInputs = [
     gst-plugins-base orc
-    faad2 gtk3 libass libkate libmms
-    libmodplug mpeg2dec mpg123
+    faad2 libass libkate libmms
+    libmodplug mpeg2dec
     openjpeg libopus librsvg
     fluidsynth libvdpau
     libwebp xvidcore gnutls libGLU_combined
@@ -66,8 +69,6 @@ stdenv.mkDerivation rec {
   ]
     ++ libintlOrEmpty
     ++ optional faacSupport faac
-    # for gtksink
-    ++ optional gtkSupport gtk3
     ++ optional stdenv.isLinux wayland
     # wildmidi requires apple's OpenAL
     # TODO: package apple's OpenAL, fix wildmidi, include on Darwin
@@ -76,6 +77,4 @@ stdenv.mkDerivation rec {
     ++ optional (!stdenv.isDarwin) mjpegtools;
 
   LDFLAGS = optionalString stdenv.isDarwin "-lintl";
-
-  enableParallelBuilding = true;
 }
diff --git a/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch b/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch
new file mode 100644
index 00000000000..c687fffc9c0
--- /dev/null
+++ b/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch
@@ -0,0 +1,15 @@
+diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build
+index 271f327f3..7e2afa754 100644
+--- a/pkgconfig/meson.build
++++ b/pkgconfig/meson.build
+@@ -2,8 +2,8 @@ pkgconf = configuration_data()
+ 
+ pkgconf.set('prefix', join_paths(get_option('prefix')))
+ pkgconf.set('exec_prefix', '${prefix}')
+-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
+-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir')))
++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir')))
+ pkgconf.set('GST_API_VERSION', api_version)
+ pkgconf.set('VERSION', gst_version)
+ 
diff --git a/pkgs/development/libraries/gstreamer/base/default.nix b/pkgs/development/libraries/gstreamer/base/default.nix
index 2cd0c14c1f3..e2a8c36bf02 100644
--- a/pkgs/development/libraries/gstreamer/base/default.nix
+++ b/pkgs/development/libraries/gstreamer/base/default.nix
@@ -1,10 +1,11 @@
-{ stdenv, fetchurl, pkgconfig, python, gstreamer, gobjectIntrospection
-, orc, alsaLib, libXv, pango, libtheora
-, cdparanoia, libvisual, libintlOrEmpty
+{ stdenv, fetchurl, fetchpatch, pkgconfig, meson
+, ninja, gettext, gobjectIntrospection, python
+, gstreamer, orc, alsaLib, libXv, pango, libtheora
+, wayland, cdparanoia, libvisual, libintlOrEmpty
 }:
 
 stdenv.mkDerivation rec {
-  name = "gst-plugins-base-1.12.3";
+  name = "gst-plugins-base-1.14.0";
 
   meta = {
     description = "Base plugins and helper libraries";
@@ -15,17 +16,17 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-base/${name}.tar.xz";
-    sha256 = "19ffwdch7m777ragmwpy6prqmfb742ym1n3ki40s0zyki627plyk";
+    sha256 = "0h39bcp7fcd9kgb189lxr8l0hm0almvzpzgpdh1jpq2nzxh4d43y";
   };
 
   outputs = [ "out" "dev" ];
 
   nativeBuildInputs = [
-    pkgconfig python gobjectIntrospection
+    pkgconfig python meson ninja gettext gobjectIntrospection
   ];
 
   buildInputs = [
-    orc libXv pango libtheora cdparanoia
+    orc libXv pango libtheora cdparanoia wayland
   ]
   ++ libintlOrEmpty
   ++ stdenv.lib.optional stdenv.isLinux alsaLib
@@ -33,14 +34,17 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ gstreamer ];
 
-  configureFlags = if stdenv.isDarwin then [
-    # Does not currently build on Darwin
-    "--disable-libvisual"
-    # Undefined symbols _cdda_identify and _cdda_identify_scsi in cdparanoia
-    "--disable-cdparanoia"
-  ] else null;
+  preConfigure = ''
+    patchShebangs .
+  '';
 
   NIX_LDFLAGS = if stdenv.isDarwin then "-lintl" else null;
 
-  enableParallelBuilding = true;
+  patches = [
+    (fetchpatch {
+        url = "https://bug794856.bugzilla-attachments.gnome.org/attachment.cgi?id=370414";
+        sha256 = "07x43xis0sr0hfchf36ap0cibx0lkfpqyszb3r3w9dzz301fk04z";
+    })
+    ./fix_pkgconfig_includedir.patch
+  ];
 }
diff --git a/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch b/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch
new file mode 100644
index 00000000000..04486a4647f
--- /dev/null
+++ b/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch
@@ -0,0 +1,15 @@
+diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build
+index 04abfbee5..88c86b431 100644
+--- a/pkgconfig/meson.build
++++ b/pkgconfig/meson.build
+@@ -2,8 +2,8 @@ pkgconf = configuration_data()
+ 
+ pkgconf.set('prefix', get_option('prefix'))
+ pkgconf.set('exec_prefix', '${prefix}')
+-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
+-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir')))
++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir')))
+ pkgconf.set('GST_API_VERSION', api_version)
+ pkgconf.set('VERSION', gst_version)
+ pkgconf.set('LIBM', libm.found() ? '-lm' : '')
diff --git a/pkgs/development/libraries/gstreamer/core/default.nix b/pkgs/development/libraries/gstreamer/core/default.nix
index ee9438d3c29..ab3f78767a1 100644
--- a/pkgs/development/libraries/gstreamer/core/default.nix
+++ b/pkgs/development/libraries/gstreamer/core/default.nix
@@ -1,10 +1,11 @@
-{ stdenv, fetchurl, pkgconfig, perl, bison, flex, python, gobjectIntrospection
-, glib, makeWrapper
-, darwin
+{ stdenv, fetchurl, fetchpatch, meson, ninja
+, pkgconfig, gettext, gobjectIntrospection
+, bison, flex, python3, glib, makeWrapper
+, libcap,libunwind, darwin
 }:
 
 stdenv.mkDerivation rec {
-  name = "gstreamer-1.12.3";
+  name = "gstreamer-1.14.0";
 
   meta = {
     description = "Open source multimedia framework";
@@ -16,31 +17,37 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gstreamer/${name}.tar.xz";
-    sha256 = "0vi1g8rmmsnd630ds3jwv2iph46ll8y07fzf04mz15q88j9g926k";
+    sha256 = "0vj6k01lp2yva6rfd95fkyng9jdr62gkz0x8d2l81dyly1ki6dpw";
   };
 
+  patches = [ 
+    (fetchpatch {
+        url = "https://bug794856.bugzilla-attachments.gnome.org/attachment.cgi?id=370411";
+        sha256 = "16plzzmkk906k4892zq68j3c9z8vdma5nxzlviq20jfv04ykhmk2";
+    })
+    ./fix_pkgconfig_includedir.patch
+  ];
+
   outputs = [ "out" "dev" ];
   outputBin = "dev";
 
   nativeBuildInputs = [
-    pkgconfig perl bison flex python gobjectIntrospection makeWrapper
+    meson ninja pkgconfig gettext bison flex python3 makeWrapper gobjectIntrospection
   ];
-  buildInputs = stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.CoreServices;
+  buildInputs = [ libcap libunwind ] ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.CoreServices;
 
   propagatedBuildInputs = [ glib ];
 
-  enableParallelBuilding = true;
-
-  preConfigure = ''
-    configureFlagsArray+=("--exec-prefix=$dev")
-  '';
-
   postInstall = ''
     for prog in "$dev/bin/"*; do
         wrapProgram "$prog" --suffix GST_PLUGIN_SYSTEM_PATH : "\$(unset _tmp; for profile in \$NIX_PROFILES; do _tmp="\$profile/lib/gstreamer-1.0''$\{_tmp:+:\}\$_tmp"; done; printf "\$_tmp")"
     done
   '';
 
+  preConfigure= ''
+    patchShebangs .
+  '';
+
   preFixup = ''
     moveToOutput "share/bash-completion" "$dev"
   '';
diff --git a/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch b/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch
new file mode 100644
index 00000000000..c388a82fa2a
--- /dev/null
+++ b/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch
@@ -0,0 +1,15 @@
+diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build
+index edb0586c2..7ed46dfce 100644
+--- a/pkgconfig/meson.build
++++ b/pkgconfig/meson.build
+@@ -2,8 +2,8 @@ pkgconf = configuration_data()
+ 
+ pkgconf.set('prefix', join_paths(get_option('prefix')))
+ pkgconf.set('exec_prefix', '${prefix}')
+-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
+-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir')))
++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir')))
+ pkgconf.set('GST_API_VERSION', apiversion)
+ pkgconf.set('VERSION', gst_version)
+ pkgconf.set('LIBM', mathlib.found() ? '-lm' : '')
diff --git a/pkgs/development/libraries/gstreamer/default.nix b/pkgs/development/libraries/gstreamer/default.nix
index fe67bb1b797..ce74b2f27ff 100644
--- a/pkgs/development/libraries/gstreamer/default.nix
+++ b/pkgs/development/libraries/gstreamer/default.nix
@@ -17,11 +17,7 @@ rec {
 
   gst-libav = callPackage ./libav { inherit gst-plugins-base; };
 
-  gnonlin = callPackage ./gnonlin { inherit gst-plugins-base; };
-
-  # TODO: gnonlin is deprecated in gst-editing-services, better switch to nle
-  # (Non Linear Engine).
-  gst-editing-services = callPackage ./ges { inherit gnonlin; };
+  gst-editing-services = callPackage ./ges { inherit gst-plugins-base; };
 
   gst-vaapi = callPackage ./vaapi {
     inherit gst-plugins-base gstreamer gst-plugins-bad;
diff --git a/pkgs/development/libraries/gstreamer/ges/default.nix b/pkgs/development/libraries/gstreamer/ges/default.nix
index c38ab12ec96..895f298c826 100644
--- a/pkgs/development/libraries/gstreamer/ges/default.nix
+++ b/pkgs/development/libraries/gstreamer/ges/default.nix
@@ -1,9 +1,10 @@
-{ stdenv, fetchurl, pkgconfig, python, gobjectIntrospection
-, gnonlin, libxml2, flex, perl
+{ stdenv, fetchurl, fetchpatch, meson, ninja
+, pkgconfig, python, gst-plugins-base, libxml2
+, flex, perl, gettext, gobjectIntrospection
 }:
 
 stdenv.mkDerivation rec {
-  name = "gstreamer-editing-services-1.12.3";
+  name = "gstreamer-editing-services-1.14.0";
 
   meta = with stdenv.lib; {
     description = "Library for creation of audio/video non-linear editors";
@@ -14,12 +15,20 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gstreamer-editing-services/${name}.tar.xz";
-    sha256 = "0xjz8r0wbzc0kwi9q8akv7w71ii1n2y2dmb0q2p5k4h78382ybh3";
+    sha256 = "14cdd6y9p4k603hsnyhdjw2igg855gwpx0362jmg8k1gagmr0pwd";
   };
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig python gobjectIntrospection flex perl ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext gobjectIntrospection python flex perl ];
 
-  propagatedBuildInputs = [ gnonlin libxml2 ];
+  propagatedBuildInputs = [ gst-plugins-base libxml2 ];
+
+  patches = [
+    (fetchpatch {
+        url = "https://bug794856.bugzilla-attachments.gnome.org/attachment.cgi?id=370413";
+        sha256 = "1xcgbs18g6n5p7z7kqj7ffakwmkxq7ijajyvhyl7p3zvqll9dc7x";
+    })
+    ./fix_pkgconfig_includedir.patch
+  ];
 }
diff --git a/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch b/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch
new file mode 100644
index 00000000000..1e12f3bbfbe
--- /dev/null
+++ b/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch
@@ -0,0 +1,15 @@
+diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build
+index a612b21b..c017eaff 100644
+--- a/pkgconfig/meson.build
++++ b/pkgconfig/meson.build
+@@ -2,8 +2,8 @@ pkgconf = configuration_data()
+ 
+ pkgconf.set('prefix', get_option('prefix'))
+ pkgconf.set('exec_prefix', '${prefix}')
+-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
+-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir')))
++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir')))
+ pkgconf.set('GST_API_VERSION', apiversion)
+ pkgconf.set('VERSION', gst_version)
+ 
diff --git a/pkgs/development/libraries/gstreamer/gnonlin/default.nix b/pkgs/development/libraries/gstreamer/gnonlin/default.nix
deleted file mode 100644
index c04b64ae3c6..00000000000
--- a/pkgs/development/libraries/gstreamer/gnonlin/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ stdenv, fetchurl, pkgconfig
-, gst-plugins-base
-}:
-
-stdenv.mkDerivation rec {
-  name = "gnonlin-1.4.0";
-
-  meta = with stdenv.lib; {
-    description = "Gstreamer Non-Linear Multimedia Editing Plugins";
-    homepage    = "https://gstreamer.freedesktop.org";
-    longDescription = ''
-      Gnonlin is a library built on top of GStreamer which provides 
-      support for writing non-linear audio and video editing
-      applications. It introduces the concept of a timeline.
-    '';
-    license     = licenses.lgpl2Plus;
-    platforms   = platforms.unix;
-  };
-
-  src = fetchurl {
-    url = "${meta.homepage}/src/gnonlin/${name}.tar.xz";
-    sha256 = "0zv60rq2h736a6fivd3a3wp59dj1jar7b2vwzykahvl168b7wrid";
-  };
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ pkgconfig ];
-
-  propagatedBuildInputs = [ gst-plugins-base ];
-}
diff --git a/pkgs/development/libraries/gstreamer/good/default.nix b/pkgs/development/libraries/gstreamer/good/default.nix
index e4e4f3b394d..960c03b52e2 100644
--- a/pkgs/development/libraries/gstreamer/good/default.nix
+++ b/pkgs/development/libraries/gstreamer/good/default.nix
@@ -1,17 +1,20 @@
-{ stdenv, fetchurl, pkgconfig, python
-, gst-plugins-base, orc, bzip2
+{ stdenv, fetchurl, meson, ninja, pkgconfig, python
+, gst-plugins-base, orc, bzip2, gettext
 , libv4l, libdv, libavc1394, libiec61883
 , libvpx, speex, flac, taglib, libshout
 , cairo, gdk_pixbuf, aalib, libcaca
 , libsoup, libpulseaudio, libintlOrEmpty
-, darwin
+, darwin, lame, mpg123, twolame
+, gtkSupport ? false, gtk3 ? null
 }:
 
+assert gtkSupport -> gtk3 != null;
+
 let
   inherit (stdenv.lib) optionals optionalString;
 in
 stdenv.mkDerivation rec {
-  name = "gst-plugins-good-1.12.3";
+  name = "gst-plugins-good-1.14.0";
 
   meta = with stdenv.lib; {
     description = "Gstreamer Good Plugins";
@@ -27,27 +30,26 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-good/${name}.tar.xz";
-    sha256 = "00sznj1sl97fqpn6j8ngps04clvxp8h8yhw6lvszx4b855wz9rqk";
+    sha256 = "1226s30cf7pqg3fj8shd20l7sp93yw9sqplgxns3m3ajgms3byka";
   };
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig python ];
+  patches = [ ./fix_pkgconfig_includedir.patch ];
+
+  nativeBuildInputs = [ pkgconfig python meson ninja gettext ];
 
   buildInputs = [
     gst-plugins-base orc bzip2
     libdv libvpx speex flac taglib
     cairo gdk_pixbuf aalib libcaca
-    libsoup libshout
+    libsoup libshout lame mpg123 twolame
   ]
   ++ libintlOrEmpty
   ++ optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa ]
-  ++ optionals stdenv.isLinux [ libv4l libpulseaudio libavc1394 libiec61883 ];
-
-  preFixup = ''
-    mkdir -p "$dev/lib/gstreamer-1.0"
-    mv "$out/lib/gstreamer-1.0/"*.la "$dev/lib/gstreamer-1.0"
-  '';
+  ++ optionals stdenv.isLinux [ libv4l libpulseaudio libavc1394 libiec61883 ]
+  # for gtksink
+  ++ optionals gtkSupport [ gtk3 ];
 
   LDFLAGS = optionalString stdenv.isDarwin "-lintl";
 }
diff --git a/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch b/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch
new file mode 100644
index 00000000000..f68ad603a37
--- /dev/null
+++ b/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch
@@ -0,0 +1,15 @@
+diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build
+index b3bf0d4d4..3e6e576c0 100644
+--- a/pkgconfig/meson.build
++++ b/pkgconfig/meson.build
+@@ -2,8 +2,8 @@ pkgconf = configuration_data()
+ 
+ pkgconf.set('prefix', get_option('prefix'))
+ pkgconf.set('exec_prefix', '${prefix}')
+-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
+-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir')))
++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir')))
+ pkgconf.set('GST_API_VERSION', api_version)
+ pkgconf.set('VERSION', gst_version)
+ 
diff --git a/pkgs/development/libraries/gstreamer/libav/default.nix b/pkgs/development/libraries/gstreamer/libav/default.nix
index 9969c5e604f..564b37fab79 100644
--- a/pkgs/development/libraries/gstreamer/libav/default.nix
+++ b/pkgs/development/libraries/gstreamer/libav/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pkgconfig, python, yasm
-, gst-plugins-base, orc, bzip2
-, withSystemLibav ? true, libav ? null
+{ stdenv, fetchurl, meson, ninja, pkgconfig
+, python, yasm, gst-plugins-base, orc, bzip2
+, gettext, withSystemLibav ? true, libav ? null
 }:
 
 # Note that since gst-libav-1.6, libav is actually ffmpeg. See
@@ -9,7 +9,7 @@
 assert withSystemLibav -> libav != null;
 
 stdenv.mkDerivation rec {
-  name = "gst-libav-1.12.3";
+  name = "gst-libav-1.14.0";
 
   meta = {
     homepage = https://gstreamer.freedesktop.org;
@@ -19,16 +19,13 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-libav/${name}.tar.xz";
-    sha256 = "0l4nc6ikdx49l7bdrk3bd9p3pzry8a328r22zg48gyzpnv5ghph1";
+    sha256 = "12gglx6rarnxbaj0h1wivlgkv467n1bz2bwjigplciq57r6ln4zv";
   };
 
   outputs = [ "out" "dev" ];
 
-  configureFlags = stdenv.lib.optionalString withSystemLibav
-    "--with-system-libav";
-
   nativeBuildInputs = with stdenv.lib;
-    [ pkgconfig python ]
+    [ meson ninja gettext pkgconfig python ]
     ++ optional (!withSystemLibav) yasm
     ;
 
diff --git a/pkgs/development/libraries/gstreamer/rtsp-server/default.nix b/pkgs/development/libraries/gstreamer/rtsp-server/default.nix
index 813135f270d..9ff799b0a27 100644
--- a/pkgs/development/libraries/gstreamer/rtsp-server/default.nix
+++ b/pkgs/development/libraries/gstreamer/rtsp-server/default.nix
@@ -1,7 +1,9 @@
-{ stdenv, fetchurl, pkgconfig, gst-plugins-base }:
+{ stdenv, fetchurl, meson, ninja, pkgconfig
+, gst-plugins-base, gettext, gobjectIntrospection
+}:
 
 stdenv.mkDerivation rec {
-  name = "gst-rtsp-server-1.12.3";
+  name = "gst-rtsp-server-1.14.0";
 
   meta = with stdenv.lib; {
     description = "Gstreamer RTSP server";
@@ -16,12 +18,12 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-rtsp-server/${name}.tar.xz";
-    sha256 = "1v3lghx75l05hssgwxdxsgrxpn10gxlgkfb6vq0rl0hnpdqmj9b7";
+    sha256 = "0mlp9ms5hfbyzyvmc9xgi7934g4zrh1sbgky2p9zc5fqprvs0rbb";
   };
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ meson ninja gettext gobjectIntrospection pkgconfig ];
 
   buildInputs = [ gst-plugins-base ];
 }
diff --git a/pkgs/development/libraries/gstreamer/ugly/default.nix b/pkgs/development/libraries/gstreamer/ugly/default.nix
index cdaa88ce350..90e7eab860a 100644
--- a/pkgs/development/libraries/gstreamer/ugly/default.nix
+++ b/pkgs/development/libraries/gstreamer/ugly/default.nix
@@ -1,11 +1,11 @@
-{ stdenv, fetchurl, pkgconfig, python
-, gst-plugins-base, orc
+{ stdenv, fetchurl, meson, ninja, pkgconfig, python
+, gst-plugins-base, orc, gettext
 , a52dec, libcdio, libdvdread
-, lame, libmad, libmpeg2, x264, libintlOrEmpty, mpg123
+, libmad, libmpeg2, x264, libintlOrEmpty
 }:
 
 stdenv.mkDerivation rec {
-  name = "gst-plugins-ugly-1.12.3";
+  name = "gst-plugins-ugly-1.14.0";
 
   meta = with stdenv.lib; {
     description = "Gstreamer Ugly Plugins";
@@ -22,17 +22,17 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-ugly/${name}.tar.xz";
-    sha256 = "0lh00rg26iy5lr5al23lxsyncjqkgzph1bzkrgp8x9sfr62ab378";
+    sha256 = "1la2nny9hfw3rf3wvqggkg8ivn52qrqqs4n4mqz4ppm2r1gymf9z";
   };
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig python ];
+  nativeBuildInputs = [ meson ninja gettext pkgconfig python ];
 
   buildInputs = [
     gst-plugins-base orc
     a52dec libcdio libdvdread
-    lame libmad libmpeg2 x264 mpg123
+    libmad libmpeg2 x264
   ] ++ libintlOrEmpty;
 
   NIX_LDFLAGS = if stdenv.isDarwin then "-lintl" else null;
diff --git a/pkgs/development/libraries/gstreamer/vaapi/default.nix b/pkgs/development/libraries/gstreamer/vaapi/default.nix
index 8351cfd65b1..11b451e76fd 100644
--- a/pkgs/development/libraries/gstreamer/vaapi/default.nix
+++ b/pkgs/development/libraries/gstreamer/vaapi/default.nix
@@ -1,20 +1,20 @@
-{ stdenv, fetchurl, pkgconfig, gst-plugins-base, bzip2, libva, wayland
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gst-plugins-base, bzip2, libva, wayland
 , libdrm, udev, xorg, libGLU_combined, yasm, gstreamer, gst-plugins-bad, nasm
 , libvpx, python
 }:
 
 stdenv.mkDerivation rec {
   name = "gst-vaapi-${version}";
-  version = "1.12.4";
+  version = "1.14.0";
 
   src = fetchurl {
     url = "${meta.homepage}/src/gstreamer-vaapi/gstreamer-vaapi-${version}.tar.xz";
-    sha256 = "1jg9nvc8000yi2bcl3wn2yh2hwl7yvlwldj6778w8c0z5qj7fb8w";
+    sha256 = "1whxk428badv8ibji00sn6hj17cp8l9n93rr948bz2gjbq41zqz4";
   };
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig bzip2 ];
+  nativeBuildInputs = [ meson ninja pkgconfig bzip2 ];
 
   buildInputs = [
     gstreamer gst-plugins-base gst-plugins-bad libva wayland libdrm udev
@@ -22,11 +22,10 @@ stdenv.mkDerivation rec {
     xorg.libICE libGLU_combined nasm libvpx python
   ];
 
-  preConfigure = "
+  preConfigure = ''
     export GST_PLUGIN_PATH_1_0=$out/lib/gstreamer-1.0
     mkdir -p $GST_PLUGIN_PATH_1_0
-    ";
-  configureFlags = "--disable-builtin-libvpx --with-gstreamer-api=1.0";
+  '';
 
   meta = {
     homepage = https://gstreamer.freedesktop.org;
diff --git a/pkgs/development/libraries/gstreamer/validate/default.nix b/pkgs/development/libraries/gstreamer/validate/default.nix
index 1cb5e4f968e..bd33d9c5280 100644
--- a/pkgs/development/libraries/gstreamer/validate/default.nix
+++ b/pkgs/development/libraries/gstreamer/validate/default.nix
@@ -3,7 +3,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gst-validate-1.12.3";
+  name = "gst-validate-1.14.0";
 
   meta = {
     description = "Integration testing infrastructure for the GStreamer framework";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-validate/${name}.tar.xz";
-    sha256 = "17j812pkzgbyn9ys3b305yl5mrf9nbm8whwj4iqdskr742fr8fai";
+    sha256 = "1pzzxqkv1spjrzpzpazdm2h4s2wk7gg5gag8nxj5v2gjfyzhiprk";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/python-modules/gst-python/default.nix b/pkgs/development/python-modules/gst-python/default.nix
index 393d00a8176..b1d19e9f509 100644
--- a/pkgs/development/python-modules/gst-python/default.nix
+++ b/pkgs/development/python-modules/gst-python/default.nix
@@ -1,10 +1,10 @@
-{ fetchurl, stdenv, pkgconfig, python, pygobject3
+{ fetchurl, stdenv, meson, ninja, pkgconfig, python, pygobject3
 , gst-plugins-base, ncurses
 }:
 
 stdenv.mkDerivation rec {
   pname = "gst-python";
-  version = "1.12.3";
+  version = "1.14.0";
   name = "${pname}-${version}";
 
   src = fetchurl {
@@ -12,22 +12,25 @@ stdenv.mkDerivation rec {
       "${meta.homepage}/src/gst-python/${name}.tar.xz"
       "mirror://gentoo/distfiles/${name}.tar.xz"
       ];
-    sha256 = "19rb06x2m7103zwfm0plxx95gb8bp01ng04h4q9k6ii9q7g2kxf3";
+    sha256 = "1rlr6gl4lg97ng4jxh3gb2ldmywm15vwsa72nvggr8qa2l8q3fg0";
   };
 
-  patches = [ ./different-path-with-pygobject.patch ];
-
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig python ];
+  nativeBuildInputs = [ meson ninja pkgconfig python ];
 
   # XXX: in the Libs.private field of python3.pc
   buildInputs = [ ncurses ];
 
-  configureFlags = [
-    "--with-pygi-overrides-dir=$(out)/${python.sitePackages}/gi/overrides"
+  mesonFlags = [
+    "-Dpygi-overrides-dir=${python.sitePackages}/gi/overrides"
   ];
 
+  postPatch = ''
+    chmod +x scripts/pythondetector # patchShebangs requires executable file
+    patchShebangs scripts/pythondetector
+  '';
+
   propagatedBuildInputs = [ gst-plugins-base pygobject3 ];
 
   # Needed for python.buildEnv