Files
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

163 lines
4.0 KiB
Nix

{
stdenv,
fetchurl,
meson,
ninja,
pkg-config,
gettext,
bison,
flex,
python3,
glib,
makeWrapper,
libcap,
elfutils, # for libdw
bash-completion,
lib,
testers,
rustc,
withRust ?
lib.any (lib.meta.platformMatch stdenv.hostPlatform) rustc.targetPlatforms
&& lib.all (p: !lib.meta.platformMatch stdenv.hostPlatform p) rustc.badTargetPlatforms,
gobject-introspection,
buildPackages,
withIntrospection ?
lib.meta.availableOn stdenv.hostPlatform gobject-introspection
&& stdenv.hostPlatform.emulatorAvailable buildPackages,
libunwind,
withLibunwind ?
lib.meta.availableOn stdenv.hostPlatform libunwind
&& lib.elem "libunwind" libunwind.meta.pkgConfigModules or [ ],
# Checks meson.is_cross_build(), so even canExecute isn't enough.
enableDocumentation ? stdenv.hostPlatform == stdenv.buildPlatform,
hotdoc,
directoryListingUpdater,
apple-sdk_gstreamer,
}:
let
hasElfutils = lib.meta.availableOn stdenv.hostPlatform elfutils;
in
stdenv.mkDerivation (finalAttrs: {
pname = "gstreamer";
version = "1.26.5";
outputs = [
"bin"
"out"
"dev"
];
separateDebugInfo = true;
src = fetchurl {
url = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${finalAttrs.version}.tar.xz";
hash = "sha256-Cn7bDntC2+a1dfzmGkgIo/ayDghaHq7LwCXQ7CHx53Q=";
};
depsBuildBuild = [
pkg-config
];
strictDeps = true;
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
bison
flex
python3
makeWrapper
glib
bash-completion
]
++ lib.optionals stdenv.hostPlatform.isLinux [
libcap # for setcap binary
]
++ lib.optionals withIntrospection [
gobject-introspection
]
++ lib.optionals withRust [
rustc
]
++ lib.optionals enableDocumentation [
hotdoc
];
buildInputs = [
bash-completion
]
++ lib.optionals stdenv.hostPlatform.isLinux [
libcap
]
++ lib.optionals hasElfutils [
elfutils
]
++ lib.optionals withLibunwind [
libunwind
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
apple-sdk_gstreamer
];
propagatedBuildInputs = [
glib
];
mesonFlags = [
"-Dglib_debug=disabled" # cast checks should be disabled on stable releases
"-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.mesonEnable "ptp-helper" withRust)
(lib.mesonEnable "introspection" withIntrospection)
(lib.mesonEnable "doc" enableDocumentation)
(lib.mesonEnable "libunwind" withLibunwind)
(lib.mesonEnable "libdw" (withLibunwind && hasElfutils))
];
postPatch = ''
patchShebangs \
gst/parse/get_flex_version.py \
gst/parse/gen_grammar.py.in \
gst/parse/gen_lex.py.in \
libs/gst/helpers/ptp_helper_post_install.sh \
scripts/extract-release-date-from-doap-file.py \
docs/gst-plugins-doc-cache-generator.py
'';
postInstall = ''
for prog in "$bin/bin/"*; do
# We can't use --suffix here due to quoting so we craft the export command by hand
wrapProgram "$prog" --run 'export GST_PLUGIN_SYSTEM_PATH_1_0=$GST_PLUGIN_SYSTEM_PATH_1_0''${GST_PLUGIN_SYSTEM_PATH_1_0:+:}$(unset _tmp; for profile in $NIX_PROFILES; do _tmp="$profile/lib/gstreamer-1.0''${_tmp:+:}$_tmp"; done; printf '%s' "$_tmp")'
done
'';
preFixup = ''
moveToOutput "share/bash-completion" "$bin"
'';
setupHook = ./setup-hook.sh;
passthru = {
tests = {
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
};
updateScript = directoryListingUpdater { };
};
meta = with lib; {
description = "Open source multimedia framework";
homepage = "https://gstreamer.freedesktop.org";
license = licenses.lgpl2Plus;
pkgConfigModules = [
"gstreamer-controller-1.0"
];
platforms = platforms.unix;
maintainers = with maintainers; [
ttuegel
matthewbauer
];
};
})