Files
2026-06-23 21:22:18 +02:00

136 lines
2.8 KiB
Nix

{
lib,
stdenv,
fetchurl,
fetchpatch,
cairo,
meson,
ninja,
pkg-config,
gstreamer,
gst-plugins-base,
gst-plugins-bad,
gst-rtsp-server,
python3,
gobject-introspection,
rustPlatform,
rustc,
cargo,
json-glib,
# Checks meson.is_cross_build(), so even canExecute isn't enough.
enableDocumentation ? stdenv.hostPlatform == stdenv.buildPlatform,
hotdoc,
directoryListingUpdater,
_experimental-update-script-combinators,
common-updater-scripts,
apple-sdk_gstreamer,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gst-devtools";
version = "1.28.4";
outputs = [
"out"
"dev"
];
src = fetchurl {
url = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${finalAttrs.version}.tar.xz";
hash = "sha256-EdTxGIY506l2IDkGW7t7LDCbeo7Mb6Su0SJFVovwDbM=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs)
src
cargoRoot
;
name = "gst-devtools-${finalAttrs.version}";
hash = "sha256-5VYzDwAMyVN2HR/sS8rCwTR7UW/tt60AS7wZMjx+w74=";
};
separateDebugInfo = true;
__structuredAttrs = true;
strictDeps = true;
depsBuildBuild = [
pkg-config
];
nativeBuildInputs = [
meson
ninja
pkg-config
gobject-introspection
rustPlatform.cargoSetupHook
rustc
cargo
]
++ lib.optionals enableDocumentation [
hotdoc
];
buildInputs = [
cairo
python3
json-glib
]
++ lib.optionals (stdenv.hostPlatform.isDarwin) [
apple-sdk_gstreamer
];
propagatedBuildInputs = [
gstreamer
gst-plugins-base
gst-plugins-bad
gst-rtsp-server
];
mesonFlags = [
(lib.mesonEnable "doc" enableDocumentation)
];
cargoRoot = "dots-viewer";
passthru = {
updateScript =
let
updateSource = directoryListingUpdater { odd-unstable = true; };
updateLockfile = {
command = [
"sh"
"-c"
''
PATH=${
lib.makeBinPath [
common-updater-scripts
]
}
update-source-version gst_all_1.gst-devtools --ignore-same-version --source-key=cargoDeps.vendorStaging > /dev/null
''
];
# Experimental feature: do not copy!
supportedFeatures = [ "silent" ];
};
in
_experimental-update-script-combinators.sequence [
updateSource
updateLockfile
];
};
preFixup = ''
moveToOutput "lib/gstreamer-1.0/pkgconfig" "$dev"
'';
meta = {
description = "Integration testing infrastructure for the GStreamer framework";
homepage = "https://gstreamer.freedesktop.org";
license = lib.licenses.lgpl2Plus;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ tmarkus ];
};
})