diff --git a/pkgs/development/libraries/gstreamer/base/default.nix b/pkgs/development/libraries/gstreamer/base/default.nix index f09b8d0ed24f..d7d4439d30c6 100644 --- a/pkgs/development/libraries/gstreamer/base/default.nix +++ b/pkgs/development/libraries/gstreamer/base/default.nix @@ -1,63 +1,88 @@ -{ stdenv, fetchurl, fetchpatch, lib -, pkgconfig, meson, ninja, gettext, gobject-introspection -, python3, gstreamer, orc, pango, libtheora -, libintl, libopus +{ stdenv +, fetchurl +, lib +, pkgconfig +, meson +, ninja +, gettext +, gobject-introspection +, python3 +, gstreamer +, orc +, pango +, libtheora +, libintl +, libopus , isocodes , libjpeg , libvisual , tremor # provides 'virbisidec' , libGL -, gtk-doc, docbook_xsl, docbook_xml_dtd_412 -, enableX11 ? stdenv.isLinux, libXv -, enableWayland ? stdenv.isLinux, wayland -, enableAlsa ? stdenv.isLinux, alsaLib -, enableCocoa ? false, darwin -, enableCdparanoia ? (!stdenv.isDarwin), cdparanoia }: +, gtk-doc +, docbook_xsl +, docbook_xml_dtd_43 +, enableX11 ? stdenv.isLinux +, libXv +, enableWayland ? stdenv.isLinux +, wayland +, enableAlsa ? stdenv.isLinux +, alsaLib +, enableCocoa ? false +, darwin +, enableCdparanoia ? (!stdenv.isDarwin) +, cdparanoia +}: stdenv.mkDerivation rec { pname = "gst-plugins-base"; - version = "1.16.0"; - - meta = with lib; { - description = "Base plugins and helper libraries"; - homepage = https://gstreamer.freedesktop.org; - license = licenses.lgpl2Plus; - platforms = platforms.unix; - maintainers = with maintainers; [ matthewbauer ]; - }; - - src = fetchurl { - url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; - sha256 = "1bmmdwbyy89ayb85xc48y217f6wdmpz96f30zm6v53z2a5xsm4s0"; - }; + version = "1.16.1"; outputs = [ "out" "dev" ]; + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "0aybbwnzm15074smdk2bamj3ssck3hjvmilvgh49f19xjf4w8g2w"; + }; + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; + nativeBuildInputs = [ - pkgconfig python3 gettext gobject-introspection + meson + ninja + pkgconfig + python3 + gettext + gobject-introspection + + # docs gtk-doc - # Without these, enabling the 'gtk_doc' gives us `FAILED: meson-install` - docbook_xsl docbook_xml_dtd_412 - ] - # 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 ]; + docbook_xsl + docbook_xml_dtd_43 + ]; - # On Darwin, we currently use autoconf, on all other systems Meson - # TODO Switch to Meson on Darwin as well + buildInputs = [ + orc + libtheora + libintl + libopus + isocodes + libjpeg + tremor + libGL + ] ++ lib.optional (!stdenv.isDarwin) libvisual + ++ lib.optional enableAlsa alsaLib + ++ lib.optionals enableX11 [ libXv pango ] + ++ lib.optional enableWayland wayland + ++ lib.optional enableCocoa darwin.apple_sdk.frameworks.Cocoa + ++ lib.optional enableCdparanoia cdparanoia; - # TODO How to pass these to Meson? - configureFlags = lib.optionals stdenv.isDarwin [ - "--enable-x11=${if enableX11 then "yes" else "no"}" - "--enable-wayland=${if enableWayland then "yes" else "no"}" - "--enable-cocoa=${if enableCocoa then "yes" else "no"}" - ] - # Introspection fails on my MacBook currently - ++ lib.optional stdenv.isDarwin "--disable-introspection"; + propagatedBuildInputs = [ + gstreamer + ]; - mesonFlags = lib.optionals (!stdenv.isDarwin) [ - # Enables all features, so that we know when new dependencies are necessary. - "-Dauto_features=enabled" + mesonFlags = [ "-Dexamples=disabled" # requires many dependencies and probably not useful for our users "-Dgl-graphene=disabled" # not packaged in nixpkgs as of writing # See https://github.com/GStreamer/gst-plugins-base/blob/d64a4b7a69c3462851ff4dcfa97cc6f94cd64aef/meson_options.txt#L15 for a list of choices @@ -65,36 +90,28 @@ stdenv.mkDerivation rec { # 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 + # https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/564 # for it failing because some Wayland symbols are missing. # This problem appeared between 1.15.1 and 1.16.0. + # In 1.18 they should switch to hotdoc, which should make this issue irrelevant. "-Dgtk_doc=disabled" ] ++ lib.optional (!enableX11) "-Dx11=disabled" # TODO How to disable Wayland? ++ lib.optional (!enableAlsa) "-Dalsa=disabled" - ++ lib.optional (!enableCdparanoia) "-Dcdparanoia=disabled" - ; - - buildInputs = [ orc libtheora libintl libopus isocodes libjpeg tremor libGL ] - ++ lib.optional (!stdenv.isDarwin) libvisual - ++ lib.optional enableAlsa alsaLib - ++ lib.optionals enableX11 [ libXv pango ] - ++ lib.optional enableWayland wayland - ++ lib.optional enableCocoa darwin.apple_sdk.frameworks.Cocoa - ++ lib.optional enableCdparanoia cdparanoia; - - propagatedBuildInputs = [ gstreamer ]; + ++ lib.optional (!enableCdparanoia) "-Dcdparanoia=disabled"; postPatch = '' - patchShebangs . + patchShebangs common/scangobj-merge.py ''; - enableParallelBuilding = true; - doCheck = false; # fails, wants DRI access for OpenGL - patches = [ - ./fix_pkgconfig_includedir.patch - ]; + meta = with lib; { + description = "Base GStreamer plug-ins and helper libraries"; + homepage = "https://gstreamer.freedesktop.org"; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ matthewbauer ]; + }; }