1{
2 stdenv,
3 lib,
4 fetchurl,
5 meson,
6 ninja,
7 pkg-config,
8 gobject-introspection,
9 vala,
10 gi-docgen,
11 glib,
12 gssdp_1_6,
13 libsoup_3,
14 libxml2,
15 gnome,
16}:
17
18stdenv.mkDerivation (finalAttrs: {
19 pname = "gupnp";
20 version = "1.6.8";
21
22 outputs = [
23 "out"
24 "dev"
25 "devdoc"
26 ];
27
28 src = fetchurl {
29 url = "mirror://gnome/sources/gupnp/${lib.versions.majorMinor finalAttrs.version}/gupnp-${finalAttrs.version}.tar.xz";
30 hash = "sha256-cKADzr1oV3KT+z5q9J/5AiA7+HaLL8XWUd3B8PoeEek=";
31 };
32
33 depsBuildBuild = [
34 pkg-config
35 ];
36
37 nativeBuildInputs = [
38 meson
39 ninja
40 pkg-config
41 gobject-introspection
42 vala
43 gi-docgen
44 ];
45
46 propagatedBuildInputs = [
47 glib
48 gssdp_1_6
49 libsoup_3
50 libxml2
51 ];
52
53 mesonFlags = [
54 "-Dgtk_doc=true"
55 ];
56
57 # On Darwin: Failed to bind socket, Operation not permitted
58 doCheck = !stdenv.hostPlatform.isDarwin;
59
60 postFixup = ''
61 # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
62 moveToOutput "share/doc" "$devdoc"
63 '';
64
65 passthru = {
66 updateScript = gnome.updateScript {
67 attrPath = "gupnp_1_6";
68 packageName = "gupnp";
69 };
70 };
71
72 meta = with lib; {
73 homepage = "http://www.gupnp.org/";
74 description = "Implementation of the UPnP specification";
75 mainProgram = "gupnp-binding-tool-1.6";
76 license = licenses.lgpl2Plus;
77 platforms = platforms.unix;
78 };
79})