9bb3fccb5b
continuation of #109595 pkgconfig was aliased in 2018, however, it remained in all-packages.nix due to its wide usage. This cleans up the remaining references to pkgs.pkgsconfig and moves the entry to aliases.nix. python3Packages.pkgconfig remained unchanged because it's the canonical name of the upstream package on pypi.
154 lines
4.0 KiB
Nix
154 lines
4.0 KiB
Nix
{ 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 ];
|
|
};
|
|
}
|