linux_xanmod: 5.11.14 -> 5.11.15
[NixPkgs.git] / pkgs / development / libraries / gstreamer / core / default.nix
blob84badf3041082386fc524f96f30739187978af40
1 { stdenv
2 , fetchurl
3 , meson
4 , ninja
5 , pkg-config
6 , gettext
7 , gobject-introspection
8 , bison
9 , flex
10 , python3
11 , glib
12 , makeWrapper
13 , libcap
14 , libunwind
15 , darwin
16 , elfutils # for libdw
17 , bash-completion
18 , lib
19 , CoreServices
22 stdenv.mkDerivation rec {
23   pname = "gstreamer";
24   version = "1.18.2";
26   outputs = [
27     "out"
28     "dev"
29     # "devdoc" # disabled until `hotdoc` is packaged in nixpkgs, see:
30     # - https://github.com/NixOS/nixpkgs/pull/98767
31     # - https://github.com/NixOS/nixpkgs/issues/98769#issuecomment-702296551
32   ];
33   outputBin = "dev";
35   src = fetchurl {
36     url = "https://gstreamer.freedesktop.org/src/${pname}/${pname}-${version}.tar.xz";
37     sha256 = "0ijlmvr660m8zn09xlmnq1ajrziqsivp2hig5a9mabhcjx7ypkb6";
38   };
40   patches = [
41     ./fix_pkgconfig_includedir.patch
42   ];
44   nativeBuildInputs = [
45     meson
46     ninja
47     pkg-config
48     gettext
49     bison
50     flex
51     python3
52     makeWrapper
53     glib
54     gobject-introspection
55     bash-completion
57     # documentation
58     # TODO add hotdoc here
59   ];
61   buildInputs = [
62     bash-completion
63   ] ++ lib.optionals stdenv.isLinux [
64     libcap
65     libunwind
66     elfutils
67   ] ++ lib.optionals stdenv.isDarwin [
68     CoreServices
69   ];
71   propagatedBuildInputs = [
72     glib
73   ];
75   mesonFlags = [
76     "-Ddbghelp=disabled" # not needed as we already provide libunwind and libdw, and dbghelp is a fallback to those
77     "-Dexamples=disabled" # requires many dependencies and probably not useful for our users
78     "-Ddoc=disabled" # `hotdoc` not packaged in nixpkgs as of writing
79   ] ++ lib.optionals stdenv.isDarwin [
80     # darwin.libunwind doesn't have pkg-config definitions so meson doesn't detect it.
81     "-Dlibunwind=disabled"
82     "-Dlibdw=disabled"
83   ];
85   postPatch = ''
86     patchShebangs \
87       gst/parse/get_flex_version.py \
88       gst/parse/gen_grammar.py.in \
89       gst/parse/gen_lex.py.in \
90       libs/gst/helpers/ptp_helper_post_install.sh \
91       scripts/extract-release-date-from-doap-file.py
92   '';
94   postInstall = ''
95     for prog in "$dev/bin/"*; do
96         # We can't use --suffix here due to quoting so we craft the export command by hand
97         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")'
98     done
99   '';
101   preFixup = ''
102     moveToOutput "share/bash-completion" "$dev"
103   '';
105   setupHook = ./setup-hook.sh;
107   meta = with lib ;{
108     description = "Open source multimedia framework";
109     homepage = "https://gstreamer.freedesktop.org";
110     license = licenses.lgpl2Plus;
111     platforms = platforms.unix;
112     maintainers = with maintainers; [ ttuegel matthewbauer ];
113   };