diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix new file mode 100644 index 000000000000..bac59ac4c48c --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix @@ -0,0 +1,153 @@ +{ stdenv +, fetchurl +, lib +, pkg-config +, meson +, ninja +, gettext +, gobject-introspection +, python3 +, gstreamer +, orc +, pango +, libtheora +, libintl +, libopus +, isocodes +, libjpeg +, libpng +, libvisual +, tremor # provides 'virbisidec' +, libGL +, enableX11 ? stdenv.isLinux +, libXv +, libXext +, enableWayland ? stdenv.isLinux +, wayland +, wayland-protocols +, enableAlsa ? stdenv.isLinux +, alsaLib +# 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 +, glib +}: + +stdenv.mkDerivation rec { + pname = "gst-plugins-base"; + version = "1.18.2"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "1b05kg46azrxxvq42c71071lfsnc34pw4vynnkczdqi6g0gzn16x"; + }; + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + python3 + gettext + orc + glib + gobject-introspection + + # docs + # TODO add hotdoc here + ] ++ lib.optional enableWayland wayland; + + buildInputs = [ + orc + libtheora + libintl + libopus + isocodes + libpng + libjpeg + tremor + libGL + ] ++ lib.optional (!stdenv.isDarwin) [ + libvisual + ] ++ lib.optionals stdenv.isDarwin [ + pango + darwin.apple_sdk.frameworks.OpenGL + ] ++ lib.optionals enableAlsa [ + alsaLib + ] ++ lib.optionals enableX11 [ + libXext + libXv + pango + ] ++ lib.optionals enableWayland [ + wayland + wayland-protocols + ] ++ lib.optional enableCocoa darwin.apple_sdk.frameworks.Cocoa + ++ lib.optional enableCdparanoia cdparanoia; + + propagatedBuildInputs = [ + gstreamer + ]; + + mesonFlags = [ + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Ddoc=disabled" # `hotdoc` not packaged in nixpkgs as of writing + "-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 + "-Dgl_winsys=${lib.concatStringsSep "," (lib.optional enableX11 "x11" ++ lib.optional enableWayland "wayland" ++ lib.optional enableCocoa "cocoa")}" + ] + ++ 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" + ]; + + postPatch = '' + patchShebangs \ + common/scangobj-merge.py \ + scripts/extract-release-date-from-doap-file.py + ''; + + # This package has some `_("string literal")` string formats + # that trip up clang with format security enabled. + hardeningDisable = [ "format" ]; + + doCheck = false; # fails, wants DRI access for OpenGL + + 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; + }; + + 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 ]; + }; +} |