1{ lib
2, stdenv
3, fetchFromGitLab
4, meson
5, ninja
6, pkg-config
7, gobject-introspection
8, gtk-doc
9, docbook-xsl-nons
10, docbook_xml_dtd_43
11, help2man
12, glib
13, python3
14, mesonEmulatorHook
15, libgudev
16, bash-completion
17, libmbim
18, libqrtr-glib
19, buildPackages
20, withIntrospection ? lib.meta.availableOn stdenv.hostPlatform gobject-introspection && stdenv.hostPlatform.emulatorAvailable buildPackages
21, withMan ? stdenv.buildPlatform.canExecute stdenv.hostPlatform
22}:
23
24stdenv.mkDerivation rec {
25 pname = "libqmi";
26 version = "1.32.4";
27
28 outputs = [ "out" "dev" ]
29 ++ lib.optional withIntrospection "devdoc";
30
31 src = fetchFromGitLab {
32 domain = "gitlab.freedesktop.org";
33 owner = "mobile-broadband";
34 repo = "libqmi";
35 rev = version;
36 hash = "sha256-cczGvoD+2+G6uiAt0Iv1BO4/FqzO9bkqhFsEwOfp7qw=";
37 };
38
39 nativeBuildInputs = [
40 meson
41 ninja
42 pkg-config
43 python3
44 ] ++ lib.optionals withMan [
45 help2man
46 ] ++ lib.optionals withIntrospection [
47 gobject-introspection
48 gtk-doc
49 docbook-xsl-nons
50 docbook_xml_dtd_43
51 ] ++ lib.optionals (withIntrospection && !stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
52 mesonEmulatorHook
53 ];
54
55 buildInputs = [
56 bash-completion
57 libmbim
58 ] ++ lib.optionals withIntrospection [
59 libgudev
60 ];
61
62 propagatedBuildInputs = [
63 glib
64 ] ++ lib.optionals withIntrospection [
65 libqrtr-glib
66 ];
67
68 mesonFlags = [
69 "-Dudevdir=${placeholder "out"}/lib/udev"
70 (lib.mesonBool "gtk_doc" withIntrospection)
71 (lib.mesonBool "introspection" withIntrospection)
72 (lib.mesonBool "man" withMan)
73 (lib.mesonBool "qrtr" withIntrospection)
74 (lib.mesonBool "udev" withIntrospection)
75 ];
76
77 doCheck = true;
78
79 postPatch = ''
80 patchShebangs \
81 build-aux/qmi-codegen/qmi-codegen
82 '';
83
84 meta = with lib; {
85 homepage = "https://www.freedesktop.org/wiki/Software/libqmi/";
86 description = "Modem protocol helper library";
87 maintainers = teams.freedesktop.members;
88 platforms = platforms.linux;
89 license = with licenses; [
90 # Library
91 lgpl2Plus
92 # Tools
93 gpl2Plus
94 ];
95 changelog = "https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/blob/${version}/NEWS";
96 };
97}