diff --git a/pkgs/development/libraries/gstreamer/bad/default.nix b/pkgs/development/libraries/gstreamer/bad/default.nix index 8179806859c97..675771b08a929 100644 --- a/pkgs/development/libraries/gstreamer/bad/default.nix +++ b/pkgs/development/libraries/gstreamer/bad/default.nix @@ -1,10 +1,43 @@ { stdenv, fetchurl, fetchpatch, meson, ninja, gettext +, config , pkgconfig, python3, gst-plugins-base, orc +, gobject-introspection , faacSupport ? false, faac ? null , faad2, libass, libkate, libmms, librdf, ladspaH , libnice, webrtc-audio-processing, lilv, lv2, serd, sord, sratom , libbs2b, libmodplug, mpeg2dec , openjpeg, libopus, librsvg +, bluez +, chromaprint +, curl +, darwin +, directfb +, fdk_aac +, flite +, gsm +, libaom +, libdc1394 +, libde265 +, libdrm +, libdvdnav +, libdvdread +, libgudev +, libofa +, libsndfile +, libusb1 +, neon +, openal +, opencv3 +, openexr +, openh264 +, pango +, rtmpdump +, sbc +, soundtouch +, spandsp +, srtp +, zbar +, wayland-protocols , wildmidi, fluidsynth, libvdpau, wayland , libwebp, xvidcore, gnutls, mjpegtools , libGLU_combined, libintl, libgme @@ -15,11 +48,11 @@ assert faacSupport -> faac != null; let - inherit (stdenv.lib) optional; + inherit (stdenv.lib) optional optionals; in stdenv.mkDerivation rec { name = "gst-plugins-bad-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = with stdenv.lib; { description = "Gstreamer Bad Plugins"; @@ -40,37 +73,62 @@ stdenv.mkDerivation rec { ''; patches = [ + ./fix_pkgconfig_includedir.patch + # Remove when https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/312 is merged and available to us (fetchpatch { - url = "https://bug794856.bugzilla-attachments.gnome.org/attachment.cgi?id=370409"; - sha256 = "0hy0rcn35alq65yqwri4fqjz2hf3nyyg5c7rnndk51msmqjxpprk"; + url = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/commit/99790eaad9083cce5ab2b1646489e1a1c0faad1e.patch"; + sha256 = "11bqy4sl05qq5mj4bx5s09rq106s3j0vnpjl4np058im32j69lr3"; }) - ./fix_pkgconfig_includedir.patch - # Enable bs2b compilation - # https://bugzilla.gnome.org/show_bug.cgi?id=794346 - (fetchurl { - url = https://bugzilla.gnome.org/attachment.cgi?id=369724; - sha256 = "1716mp0h2866ab33w607isvfhv1zwyj71qb4jrkx5v0h276v1pwr"; + # Remove when https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/312 is merged and available to us + (fetchpatch { + url = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/commit/1872da81c48d3a719bd39955fd97deac7d037d74.patch"; + sha256 = "11zwrr5ggflmvr0qfssj7dmhgd3ybiadmy79b4zh24022zgw3xpz"; }) ]; src = fetchurl { url = "${meta.homepage}/src/gst-plugins-bad/${name}.tar.xz"; - sha256 = "1r8dma3x127rbx42yab7kwq7q1bhkmvz2ykn0rnqnzl95q74w2wi"; + sha256 = "019b0yqjrcg6jmfd4cc336h1bz5p4wxl58yz1c4sdb96avirs4r2"; }; outputs = [ "out" "dev" ]; - nativeBuildInputs = [ meson ninja pkgconfig python3 gettext ]; + nativeBuildInputs = [ + meson ninja pkgconfig python3 gettext gobject-introspection + ] + ++ optionals stdenv.isLinux [ + wayland-protocols + ]; buildInputs = [ gst-plugins-base orc faad2 libass libkate libmms - libnice webrtc-audio-processing # webrtc + webrtc-audio-processing # webrtc libbs2b - ladspaH librdf # ladspa plug-in - lilv lv2 serd sord sratom # lv2 plug-in + ladspaH # ladspa plug-in libmodplug mpeg2dec openjpeg libopus librsvg + curl.dev + fdk_aac + gsm + libaom + libdc1394 + libde265 + libdvdnav + libdvdread + libsndfile + libusb1 + mjpegtools + neon + openal + opencv3 + openexr + openh264 + rtmpdump + pango + soundtouch + srtp + zbar fluidsynth libvdpau libwebp xvidcore gnutls libGLU_combined libgme openssl x265 libxml2 @@ -78,12 +136,106 @@ stdenv.mkDerivation rec { srt ] ++ optional faacSupport faac + ++ 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 + ]) + # These currently do not evaluate on darwin + ++ optionals (!stdenv.isDarwin) [ + bluez + chromaprint + directfb + flite + flite + libdrm + libgudev + libnice + libofa + librdf + lilv lv2 serd sord sratom # lv2 plug-in + sbc + spandsp + ] ++ optional stdenv.isLinux wayland # wildmidi requires apple's OpenAL # TODO: package apple's OpenAL, fix wildmidi, include on Darwin ++ optional (!stdenv.isDarwin) wildmidi - # TODO: mjpegtools uint64_t is not compatible with guint64 on Darwin - ++ optional (!stdenv.isDarwin) mjpegtools; + ; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + + "-Ddts=disabled" # required `libdca` library not packaged in nixpkgs as of writing, and marked as "BIG FAT WARNING: libdca is still in early development" + "-Dfaac=${if faacSupport then "enabled" else "disabled"}" + "-Diqa=disabled" # required `dssim` library not packaging in nixpkgs as of writing + "-Dmsdk=disabled" # 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?). + "-Dmusepack=disabled" + "-Dopenmpt=disabled" # `libopenmpt` not packaged in nixpkgs as of writing + "-Dopenni2=disabled" # not packaged in nixpkgs as of writing + "-Dopensles=disabled" # not packaged in nixpkgs as of writing + "-Dsctp=disabled" # required `usrsctp` library not packaged in nixpkgs as of writing + "-Dteletext=disabled" # required `zvbi` library not packaged in nixpkgs as of writing + "-Dtinyalsa=disabled" # not packaged in nixpkgs as of writing + "-Dvoaacenc=disabled" # required `vo-aacenc` library not packaged in nixpkgs as of writing + "-Dvoamrwbenc=disabled" # required `vo-amrwbenc` library not packaged in nixpkgs as of writing + "-Dvulkan=disabled" # Linux-only, and we haven't figured out yet which of the vulkan nixpkgs it needs + "-Dwasapi=disabled" # not packaged in nixpkgs as of writing / no Windows support + "-Dwpe=disabled" # 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 + "-Dnvdec=disabled" + "-Dnvenc=disabled" + ] + ++ optionals stdenv.isDarwin [ + "-Dbluez=disabled" + "-Dchromaprint=disabled" + "-Ddirectfb=disabled" + "-Dflite=disabled" + "-Dkms=disabled" # renders to libdrm output + "-Dofa=disabled" + "-Dlv2=disabled" + "-Dsbc=disabled" + "-Dspandsp=disabled" + "-Ddvb=disabled" + "-Dfbdev=disabled" + "-Duvch264=disabled" # requires gudev + "-Dladspa=disabled" # requires lrdf + "-Dwebrtc=disabled" # requires libnice, which as of writing doesn't work on Darwin in nixpkgs + "-Dwildmidi=disabled" # see dependencies above + ] + ++ optional (!gst-plugins-base.glEnabled) "-Dgl=disabled" + ++ optional (!gst-plugins-base.waylandEnabled) "-Dwayland=disabled" + # `applemedia/videotexturecache.h` requires `gst/gl/gl.h`, + # but its meson build system does not declare the dependency. + ++ optional (!gst-plugins-base.glEnabled) "-Dapplemedia=disabled" + ; + + # This package has some `_("string literal")` string formats + # that trip up clang with format security enabled. + hardeningDisable = [ "format" ]; enableParallelBuilding = true; diff --git a/pkgs/development/libraries/gstreamer/base/default.nix b/pkgs/development/libraries/gstreamer/base/default.nix index 0acdf71fb72fc..50a77a746c482 100644 --- a/pkgs/development/libraries/gstreamer/base/default.nix +++ b/pkgs/development/libraries/gstreamer/base/default.nix @@ -2,15 +2,26 @@ , pkgconfig, meson, ninja, gettext, gobject-introspection , python3, gstreamer, orc, pango, libtheora , libintl, libopus +, isocodes +, libjpeg +, libpng +, libvisual +, tremor # provides 'virbisidec' +, gtk-doc, docbook_xsl, docbook_xml_dtd_412 , enableX11 ? stdenv.isLinux, libXv , enableWayland ? stdenv.isLinux, wayland , enableAlsa ? stdenv.isLinux, alsaLib -, enableCocoa ? false, darwin +# Enabling Cocoa seems to currently not work, giving compile +# errors. Suspected is that a newer version than clang +# is needed than 5.0 but it is not clear. +, enableCocoa ? false +, darwin +, enableGl ? (enableX11 || enableWayland || enableCocoa) , enableCdparanoia ? (!stdenv.isDarwin), cdparanoia }: stdenv.mkDerivation rec { name = "gst-plugins-base-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = with lib; { description = "Base plugins and helper libraries"; @@ -22,30 +33,56 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}/src/gst-plugins-base/${name}.tar.xz"; - sha256 = "0qbllw4kphchwhy4p7ivdysigx69i97gyw6q0rvkx1j81r4kjqfa"; + sha256 = "1bmmdwbyy89ayb85xc48y217f6wdmpz96f30zm6v53z2a5xsm4s0"; }; outputs = [ "out" "dev" ]; - nativeBuildInputs = [ pkgconfig python3 gettext gobject-introspection ] - - # Broken meson with Darwin. Should hopefully be fixed soon. Tracking - # in https://bugzilla.gnome.org/show_bug.cgi?id=781148. - ++ lib.optionals (!stdenv.isDarwin) [ meson ninja ]; + nativeBuildInputs = [ + pkgconfig python3 gettext gobject-introspection + meson + ninja + gtk-doc + # Without these, enabling the 'gtk_doc' gives us `FAILED: meson-install` + docbook_xsl docbook_xml_dtd_412 + ]; - # TODO How to pass these to Meson? - configureFlags = [ - "--enable-x11=${if enableX11 then "yes" else "no"}" - "--enable-wayland=${if enableWayland then "yes" else "no"}" - "--enable-cocoa=${if enableCocoa then "yes" else "no"}" + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dgl-graphene=disabled" # not packaged in nixpkgs as of writing + "-Dgl_platform=[${lib.optionalString (enableX11 || enableWayland || enableCocoa) "auto"}]" + # See https://github.com/GStreamer/gst-plugins-base/blob/d64a4b7a69c3462851ff4dcfa97cc6f94cd64aef/meson_options.txt#L15 for a list of choices + "-Dgl_winsys=[${lib.concatStringsSep "," (lib.optional enableX11 "x11" ++ lib.optional enableWayland "wayland" ++ lib.optional enableCocoa "cocoa")}]" + # We must currently disable gtk_doc API docs generation, + # because it is not compatible with some features being disabled. + # See for example + # https://gitlab.gnome.org/GNOME/gnome-build-meta/issues/38 + # for it failing because some Wayland symbols are missing. + # This problem appeared between 1.15.1 and 1.16.0. + "-Dgtk_doc=disabled" ] + ++ lib.optional (!enableX11) "-Dx11=disabled" + # TODO How to disable Wayland? + ++ lib.optional (!enableGl) "-Dgl=disabled" + ++ lib.optional (!enableAlsa) "-Dalsa=disabled" + ++ lib.optional (!enableCdparanoia) "-Dcdparanoia=disabled" + ++ lib.optionals stdenv.isDarwin [ + "-Dlibvisual=disabled" + ] + ; - # Introspection fails on my MacBook currently - ++ lib.optional stdenv.isDarwin "--disable-introspection"; - - buildInputs = [ orc libtheora libintl libopus ] + buildInputs = [ orc libtheora libintl libopus isocodes libjpeg libpng tremor ] ++ lib.optional enableAlsa alsaLib + ++ lib.optionals (!stdenv.isDarwin) [ + libvisual + ] ++ lib.optionals enableX11 [ libXv pango ] + ++ lib.optionals stdenv.isDarwin [ + pango + darwin.apple_sdk.frameworks.OpenGL + ] ++ lib.optional enableWayland wayland ++ lib.optional enableCocoa darwin.apple_sdk.frameworks.Cocoa ++ lib.optional enableCdparanoia cdparanoia; @@ -56,15 +93,32 @@ stdenv.mkDerivation rec { patchShebangs . ''; + # This package has some `_("string literal")` string formats + # that trip up clang with format security enabled. + hardeningDisable = [ "format" ]; + enableParallelBuilding = true; doCheck = false; # fails, wants DRI access for OpenGL patches = [ - (fetchpatch { - url = "https://bug794856.bugzilla-attachments.gnome.org/attachment.cgi?id=370414"; - sha256 = "07x43xis0sr0hfchf36ap0cibx0lkfpqyszb3r3w9dzz301fk04z"; - }) ./fix_pkgconfig_includedir.patch ]; + + passthru = { + # Downstream `gst-*` packages depending on `gst-plugins-base` + # have meson build options like 'gl' etc. that depend + # on these features being built in `-base`. + # If they are not built here, then the downstream builds + # will fail, as they, too, use `-Dauto_features=enabled` + # which would enable these options unconditionally. + # That means we must communicate to these downstream packages + # if the `-base` enabled these options or not, so that + # the can enable/disable those features accordingly. + # The naming `*Enabled` vs `enable*` is intentional to + # distinguish inputs from outputs (what is to be built + # vs what was built) and to make them easier to search for. + glEnabled = enableGl; + waylandEnabled = enableWayland; + }; } diff --git a/pkgs/development/libraries/gstreamer/core/default.nix b/pkgs/development/libraries/gstreamer/core/default.nix index b69ab89df24d0..23b4d3675f65b 100644 --- a/pkgs/development/libraries/gstreamer/core/default.nix +++ b/pkgs/development/libraries/gstreamer/core/default.nix @@ -2,12 +2,16 @@ , pkgconfig, gettext, gobject-introspection , bison, flex, python3, glib, makeWrapper , libcap,libunwind, darwin +, elfutils # for libdw +, bash-completion +, docbook_xsl, docbook_xml_dtd_412 +, gtk-doc , lib }: stdenv.mkDerivation rec { name = "gstreamer-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = with lib ;{ description = "Open source multimedia framework"; @@ -19,14 +23,10 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}/src/gstreamer/${name}.tar.xz"; - sha256 = "1izzhnlsy83rgr4zl3jcl1sryxqbbigrrqw3j4x3nnphqnb6ckzr"; + sha256 = "003wy1p1in85p9sr5jsyhbnwqaiwz069flwkhyx7qhxy31qjz3hf"; }; patches = [ - (fetchpatch { - url = "https://bug794856.bugzilla-attachments.gnome.org/attachment.cgi?id=370411"; - sha256 = "16plzzmkk906k4892zq68j3c9z8vdma5nxzlviq20jfv04ykhmk2"; - }) ./fix_pkgconfig_includedir.patch ]; @@ -35,13 +35,28 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ meson ninja pkgconfig gettext bison flex python3 makeWrapper gobject-introspection + bash-completion + gtk-doc + # Without these, enabling the 'gtk_doc' gives us `FAILED: meson-install` + docbook_xsl docbook_xml_dtd_412 ]; + buildInputs = - lib.optionals stdenv.isLinux [ libcap libunwind ] + lib.optionals stdenv.isLinux [ libcap libunwind elfutils ] ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.CoreServices; propagatedBuildInputs = [ glib ]; + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Ddbghelp=disabled" # not needed as we already provide libunwind and libdw, and dbghelp is a fallback to those + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ] ++ lib.optionals (stdenv.isDarwin) [ + "-Dlibunwind=disabled" + "-Dlibdw=disabled" + ]; + postInstall = '' for prog in "$dev/bin/"*; do # We can't use --suffix here due to quoting so we craft the export command by hand @@ -49,9 +64,17 @@ stdenv.mkDerivation rec { done ''; - preConfigure= '' - patchShebangs . - ''; + preConfigure= + # These files are not executable upstream, so we need to + # make them executable for `patchShebangs` to pick them up. + # Can be removed when this is merged and available: + # https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/141 + '' + chmod +x gst/parse/get_flex_version.py + '' + + '' + patchShebangs . + ''; preFixup = '' moveToOutput "share/bash-completion" "$dev" diff --git a/pkgs/development/libraries/gstreamer/default.nix b/pkgs/development/libraries/gstreamer/default.nix index 9aec876340409..767ef8c6afdc4 100644 --- a/pkgs/development/libraries/gstreamer/default.nix +++ b/pkgs/development/libraries/gstreamer/default.nix @@ -13,7 +13,7 @@ rec { gst-plugins-ugly = callPackage ./ugly { inherit gst-plugins-base; }; - gst-rtsp-server = callPackage ./rtsp-server { inherit gst-plugins-base; }; + gst-rtsp-server = callPackage ./rtsp-server { inherit gst-plugins-base gst-plugins-bad; }; gst-libav = callPackage ./libav { inherit gst-plugins-base; }; diff --git a/pkgs/development/libraries/gstreamer/ges/default.nix b/pkgs/development/libraries/gstreamer/ges/default.nix index fb7a37a4f4480..61d39bc963694 100644 --- a/pkgs/development/libraries/gstreamer/ges/default.nix +++ b/pkgs/development/libraries/gstreamer/ges/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation rec { name = "gstreamer-editing-services-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = with stdenv.lib; { description = "Library for creation of audio/video non-linear editors"; @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}/src/gstreamer-editing-services/${name}.tar.xz"; - sha256 = "0pxk65jib3mqszjkyvlzklwia4kbdj6j2b6jw1d502b06mdx5lak"; + sha256 = "1las94jkx83sxmzi5w6b0xm89dqqwzpdsb6h9w9ixndhnbpzm8w2"; }; outputs = [ "out" "dev" ]; @@ -26,10 +26,6 @@ stdenv.mkDerivation rec { 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/good/default.nix b/pkgs/development/libraries/gstreamer/good/default.nix index 247a74e3a325f..affc8ae1ac8ec 100644 --- a/pkgs/development/libraries/gstreamer/good/default.nix +++ b/pkgs/development/libraries/gstreamer/good/default.nix @@ -6,10 +6,17 @@ , libsoup, libpulseaudio, libintl , darwin, lame, mpg123, twolame , gtkSupport ? false, gtk3 ? null +# As of writing, jack2 incurs a Qt dependency (big!) via `ffado`. +# In the fuure we should probably split `ffado`. +, enableJack ? false , libXdamage , libXext , libXfixes , ncurses +, xorg +, libgudev +, wavpack +, jack2 }: assert gtkSupport -> gtk3 != null; @@ -19,7 +26,7 @@ let in stdenv.mkDerivation rec { name = "gst-plugins-good-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = with stdenv.lib; { description = "Gstreamer Good Plugins"; @@ -36,10 +43,10 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}/src/gst-plugins-good/${name}.tar.xz"; - sha256 = "0y89qynb4b6fry3h43z1r99qslmi3m8xhlq0i5baq2nbc0r5b2sz"; + sha256 = "1zdhif1mhf0ihkjpjyrh65g2iz2cawkjjb3h5w8h9ml06grxwjk5"; }; - outputs = [ "out" "dev" ]; + outputs = [ "out" ]; patches = [ ./fix_pkgconfig_includedir.patch ]; @@ -52,16 +59,51 @@ stdenv.mkDerivation rec { libdv libvpx speex flac taglib cairo gdk_pixbuf aalib libcaca libsoup libshout lame mpg123 twolame libintl - # TODO: Remove the comments once https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/commit/e234932dc703e51a0e1aa3b9c408f12758b12335 - # is merged and available in nixpkgs. - libXdamage # present feature but undeclared in meson_options.txt, see https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/553 - libXext # present feature but undeclared in meson_options.txt, see https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/553 - libXfixes # present feature but undeclared in meson_options.txt, see https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/553 + libXdamage + libXext + libXfixes ncurses + xorg.libXfixes + xorg.libXdamage + wavpack ] ++ optional gtkSupport gtk3 # for gtksink - ++ optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa ] - ++ optionals stdenv.isLinux [ libv4l libpulseaudio libavc1394 libiec61883 ]; + ++ optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.Cocoa + # Needed for NSDefaultRunLoopMode symbols. + darwin.cf-private + ] + ++ optionals stdenv.isLinux [ + libavc1394 + libgudev + libiec61883 + libpulseaudio + libv4l + ] + ++ optionals (stdenv.isLinux && enableJack) [ + jack2 + ]; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dqt5=disabled" # not clear as of writing how to correctly pass in the required qt5 deps + ] + ++ optional (!gtkSupport) "-Dgtk3=disabled" + ++ optionals (!stdenv.isLinux) [ + "-Ddv1394=disabled" # Linux only + "-Doss4=disabled" # Linux only + "-Doss=disabled" # Linux only + "-Dpulse=disabled" # TODO check if we can keep this enabled + "-Dv4l2-gudev=disabled" # Linux-only + "-Dv4l2=disabled" # Linux-only + "-Dximagesrc=disabled" # Linux-only + "-Dpulse=disabled" # TODO check if we can keep this enabled + ] + ++ optionals (!stdenv.isLinux || !enableJack) [ + "-Djack=disabled" # unclear whether Jack works on Darwin + ]; # fails 1 tests with "Unexpected critical/warning: g_object_set_is_valid_property: object class 'GstRtpStorage' has no property named ''" doCheck = false; diff --git a/pkgs/development/libraries/gstreamer/libav/default.nix b/pkgs/development/libraries/gstreamer/libav/default.nix index 7f7393bba28ef..297c8ada884ee 100644 --- a/pkgs/development/libraries/gstreamer/libav/default.nix +++ b/pkgs/development/libraries/gstreamer/libav/default.nix @@ -10,7 +10,7 @@ assert withSystemLibav -> libav != null; stdenv.mkDerivation rec { name = "gst-libav-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = { homepage = https://gstreamer.freedesktop.org; @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}/src/gst-libav/${name}.tar.xz"; - sha256 = "1nk5g24z2xx5kaw5cg8dv8skdc516inahmkymcz8bxqxj28qbmyz"; + sha256 = "16ixqpfrr7plaaz14n3vagr2q5xbfkv7gpmcsyndrkx98f813b6z"; }; outputs = [ "out" "dev" ]; @@ -34,4 +34,10 @@ stdenv.mkDerivation rec { [ gst-plugins-base orc bzip2 ] ++ optional withSystemLibav libav ; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + ]; + } diff --git a/pkgs/development/libraries/gstreamer/rtsp-server/default.nix b/pkgs/development/libraries/gstreamer/rtsp-server/default.nix index 6236edec6a400..c4620a29e9458 100644 --- a/pkgs/development/libraries/gstreamer/rtsp-server/default.nix +++ b/pkgs/development/libraries/gstreamer/rtsp-server/default.nix @@ -1,10 +1,12 @@ { stdenv, fetchurl, meson, ninja, pkgconfig -, gst-plugins-base, gettext, gobject-introspection +, gettext, gobject-introspection +, gst-plugins-base +, gst-plugins-bad }: stdenv.mkDerivation rec { name = "gst-rtsp-server-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = with stdenv.lib; { description = "Gstreamer RTSP server"; @@ -19,12 +21,18 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}/src/gst-rtsp-server/${name}.tar.xz"; - sha256 = "1wc4d0y57hpfvv9sykjg8mxj86dw60mf696fbqbiqq6dzlmcw3ix"; + sha256 = "069zy159izy50blci9fli1i2r8jh91qkmgrz1n0xqciy3bn9x3hr"; }; outputs = [ "out" "dev" ]; nativeBuildInputs = [ meson ninja gettext gobject-introspection pkgconfig ]; - buildInputs = [ gst-plugins-base ]; + buildInputs = [ gst-plugins-base gst-plugins-bad ]; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ]; } diff --git a/pkgs/development/libraries/gstreamer/ugly/default.nix b/pkgs/development/libraries/gstreamer/ugly/default.nix index 0cdfd1f4a7b69..5c3a56814bad8 100644 --- a/pkgs/development/libraries/gstreamer/ugly/default.nix +++ b/pkgs/development/libraries/gstreamer/ugly/default.nix @@ -2,12 +2,13 @@ , gst-plugins-base, orc, gettext , a52dec, libcdio, libdvdread , libmad, libmpeg2, x264, libintl, lib +, opencore-amr , darwin }: stdenv.mkDerivation rec { name = "gst-plugins-ugly-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = with lib; { description = "Gstreamer Ugly Plugins"; @@ -25,7 +26,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}/src/gst-plugins-ugly/${name}.tar.xz"; - sha256 = "08vd1xgwmapnviah47zv5h2r02qdd20y4f07rvv5zhv6y4vxh0mc"; + sha256 = "1hm46c1fy9vl1wfwipsj41zp79cm7in1fpmjw24j5hriy32n82g3"; }; outputs = [ "out" "dev" ]; @@ -37,8 +38,16 @@ stdenv.mkDerivation rec { a52dec libcdio libdvdread libmad libmpeg2 x264 libintl + opencore-amr ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ IOKit CoreFoundation DiskArbitration ]); + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dsidplay=disabled" # sidplay / sidplay/player.h isn't packaged in nixpkgs as of writing + ]; + NIX_LDFLAGS = [ "-lm" ]; } diff --git a/pkgs/development/libraries/gstreamer/vaapi/default.nix b/pkgs/development/libraries/gstreamer/vaapi/default.nix index e84f8dce91252..c0541857e8b7a 100644 --- a/pkgs/development/libraries/gstreamer/vaapi/default.nix +++ b/pkgs/development/libraries/gstreamer/vaapi/default.nix @@ -5,11 +5,11 @@ stdenv.mkDerivation rec { name = "gst-vaapi-${version}"; - version = "1.14.4"; + version = "1.16.0"; src = fetchurl { url = "${meta.homepage}/src/gstreamer-vaapi/gstreamer-vaapi-${version}.tar.xz"; - sha256 = "18yha6119v7mwz47idv2vykzfssqfmh6hc824wqqsshwjvzdn66f"; + sha256 = "07qpynamiz0lniqajcaijh3n7ixs4lfk9a5mfk50sng0dricwzsf"; }; outputs = [ "out" "dev" ]; @@ -27,6 +27,12 @@ stdenv.mkDerivation rec { mkdir -p $GST_PLUGIN_PATH_1_0 ''; + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ]; + meta = { homepage = https://gstreamer.freedesktop.org; license = stdenv.lib.licenses.lgpl21Plus; diff --git a/pkgs/development/libraries/gstreamer/validate/default.nix b/pkgs/development/libraries/gstreamer/validate/default.nix index 916185bf7ecf6..2ce2e751df87b 100644 --- a/pkgs/development/libraries/gstreamer/validate/default.nix +++ b/pkgs/development/libraries/gstreamer/validate/default.nix @@ -1,10 +1,10 @@ -{ stdenv, fetchurl, pkgconfig, gstreamer, gst-plugins-base +{ stdenv, fetchurl, fetchpatch, pkgconfig, gstreamer, gst-plugins-base , python, gobject-introspection, json-glib }: stdenv.mkDerivation rec { name = "gst-validate-${version}"; - version = "1.14.4"; + version = "1.16.0"; meta = { description = "Integration testing infrastructure for the GStreamer framework"; @@ -15,9 +15,19 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}/src/gst-validate/${name}.tar.xz"; - sha256 = "1ismv4i7ldi04swq76pcpd5apxqd52yify5hvlyan2yw9flwrp0q"; + sha256 = "1jfnd0g9hmdbqfxsx96yc9vpf1w6m33hqwrr6lj4i83kl54awcck"; }; + patches = [ + # Fixes a duplicate symbol compilation error on Darwin. + # TODO Remove when https://gitlab.freedesktop.org/gstreamer/gst-devtools/commit/22e179cbc1acf8e4bcbc8173c833ea5f086fa28c is available in nixpkgs, likely for 1.18. + (fetchpatch { + url = "https://gitlab.freedesktop.org/gstreamer/gst-devtools/commit/751a6d756c0f7c3a721a235ced74fec17f038185.patch"; + sha256 = "05pzjn63pcsf3y153r7azy8dbr0cmn10d10r11cdprgw2bv5hlha"; + stripLen = 1; # gst-validate is a subdir of the `gst-devtools` git repo + }) + ]; + outputs = [ "out" "dev" ]; nativeBuildInputs = [ @@ -31,4 +41,9 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ gstreamer gst-plugins-base ]; enableParallelBuilding = true; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + ]; } diff --git a/pkgs/development/libraries/libnice/default.nix b/pkgs/development/libraries/libnice/default.nix index e71bcd0e36802..2bd04c65caab7 100644 --- a/pkgs/development/libraries/libnice/default.nix +++ b/pkgs/development/libraries/libnice/default.nix @@ -33,18 +33,20 @@ stdenv.mkDerivation rec { }) ]; - nativeBuildInputs = [ meson ninja pkgconfig python3 gobject-introspection gtk-doc docbook_xsl docbook_xml_dtd_412 ]; + nativeBuildInputs = [ + meson ninja pkgconfig python3 gobject-introspection + gtk-doc + # Without these, enabling the 'gtk_doc' gives us `FAILED: meson-install` + docbook_xsl docbook_xml_dtd_412 + ]; buildInputs = [ gst_all_1.gstreamer gst_all_1.gst-plugins-base gnutls ]; propagatedBuildInputs = [ glib gupnp-igd ]; mesonFlags = [ - "-Dgupnp=enabled" - "-Dgstreamer=enabled" - "-Dignored-network-interface-prefix=enabled" - "-Dexamples=enabled" - "-Dtests=enabled" - "-Dgtk_doc=enabled" - "-Dintrospection=enabled" + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dgtk_doc=enabled" # Disabled by default as of libnice-0.1.15 + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users ]; # TODO; see #53293 etc. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 904fc2a01a7bf..0fbf0a20c60eb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10429,7 +10429,7 @@ in gsettings-qt = libsForQt5.callPackage ../development/libraries/gsettings-qt { }; gst_all_1 = recurseIntoAttrs(callPackage ../development/libraries/gstreamer { - callPackage = pkgs.newScope (pkgs // { libav = pkgs.ffmpeg; }); + callPackage = pkgs.newScope (pkgs // { libav = pkgs.ffmpeg_4; }); }); gstreamer = callPackage ../development/libraries/gstreamer/legacy/gstreamer {