1{ lib, stdenv
2, fetchurl
3, meson
4, ninja
5, python3
6, vala
7, libxslt
8, pkg-config
9, glib
10, bash-completion
11, dbus
12, gnome
13, gtk-doc
14, docbook-xsl-nons
15, docbook_xml_dtd_42
16}:
17let
18 isCross = (stdenv.hostPlatform != stdenv.buildPlatform);
19in
20stdenv.mkDerivation rec {
21 pname = "dconf";
22 version = "0.40.0";
23
24 outputs = [ "out" "lib" "dev" ]
25 ++ lib.optional (!isCross) "devdoc";
26
27 src = fetchurl {
28 url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
29 sha256 = "0cs5nayg080y8pb9b7qccm1ni8wkicdmqp1jsgc22110r6j24zyg";
30 };
31
32 nativeBuildInputs = [
33 meson
34 ninja
35 pkg-config
36 python3
37 libxslt
38 glib
39 docbook-xsl-nons
40 docbook_xml_dtd_42
41 ] ++ lib.optional (!isCross) gtk-doc;
42
43 buildInputs = [
44 glib
45 bash-completion
46 dbus
47 ] ++ lib.optional (!isCross) vala;
48 # Vala cross compilation is broken. For now, build dconf without vapi when cross-compiling.
49
50 mesonFlags = [
51 "--sysconfdir=/etc"
52 "-Dgtk_doc=${lib.boolToString (!isCross)}" # gtk-doc does do some gobject introspection, which doesn't yet cross-compile.
53 ] ++ lib.optional isCross "-Dvapi=false";
54
55 nativeCheckInputs = [
56 dbus # for dbus-daemon
57 ];
58
59 doCheck = !stdenv.isAarch32 && !stdenv.isAarch64 && !stdenv.isDarwin;
60
61 postPatch = ''
62 chmod +x meson_post_install.py tests/test-dconf.py
63 patchShebangs meson_post_install.py
64 patchShebangs tests/test-dconf.py
65 '';
66
67 passthru = {
68 updateScript = gnome.updateScript {
69 packageName = pname;
70 versionPolicy = "odd-unstable";
71 };
72 };
73
74 meta = with lib; {
75 homepage = "https://wiki.gnome.org/Projects/dconf";
76 license = licenses.lgpl21Plus;
77 platforms = platforms.unix;
78 maintainers = teams.gnome.members;
79 };
80}