summary refs log tree commit diff
path: root/pkgs/development/libraries/gssdp
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2021-10-20 19:46:57 +0200
committerJan Tojnar <jtojnar@gmail.com>2021-10-24 15:38:18 +0200
commit767f2007ffd8babe23c5514aefcfbceca6594e38 (patch)
treed7649b0e1f089d695336439f00e95ae97d46b4fd /pkgs/development/libraries/gssdp
parentb30e56bddfc27846f8338ea7a0748bb8069e19b5 (diff)
gssdp-tools: re-add as separate derivation
Diffstat (limited to 'pkgs/development/libraries/gssdp')
-rw-r--r--pkgs/development/libraries/gssdp/default.nix6
-rw-r--r--pkgs/development/libraries/gssdp/standalone-tools.patch42
-rw-r--r--pkgs/development/libraries/gssdp/tools.nix50
3 files changed, 98 insertions, 0 deletions
diff --git a/pkgs/development/libraries/gssdp/default.nix b/pkgs/development/libraries/gssdp/default.nix
index 523899fb3bd69..9947214bf7fc0 100644
--- a/pkgs/development/libraries/gssdp/default.nix
+++ b/pkgs/development/libraries/gssdp/default.nix
@@ -11,6 +11,7 @@
 , libsoup
 , glib
 , gnome
+, gssdp-tools
 }:
 
 stdenv.mkDerivation rec {
@@ -50,6 +51,7 @@ stdenv.mkDerivation rec {
   doCheck = true;
 
   postFixup = ''
+    # Move developer documentation to devdoc output.
     # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
     find -L "$out/share/doc" -type f -regex '.*\.devhelp2?' -print0 \
       | while IFS= read -r -d ''' file; do
@@ -61,6 +63,10 @@ stdenv.mkDerivation rec {
     updateScript = gnome.updateScript {
       packageName = pname;
     };
+
+    tests = {
+      inherit gssdp-tools;
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/development/libraries/gssdp/standalone-tools.patch b/pkgs/development/libraries/gssdp/standalone-tools.patch
new file mode 100644
index 0000000000000..f2273a978d675
--- /dev/null
+++ b/pkgs/development/libraries/gssdp/standalone-tools.patch
@@ -0,0 +1,42 @@
+diff --git a/libgssdp/gssdp-client-private.h b/libgssdp/gssdp-client-private.h
+index ac31247..241c054 100644
+--- a/libgssdp/gssdp-client-private.h
++++ b/libgssdp/gssdp-client-private.h
+@@ -10,7 +10,11 @@
+ #ifndef GSSDP_CLIENT_PRIVATE_H
+ #define GSSDP_CLIENT_PRIVATE_H
+ 
++#ifdef GSSDP_TOOLS
++#include <libgssdp/gssdp-client.h>
++#else
+ #include "gssdp-client.h"
++#endif
+ 
+ G_BEGIN_DECLS
+ 
+diff --git a/tools/meson.build b/tools/meson.build
+index 40eb8e3..5db545b 100644
+--- a/tools/meson.build
++++ b/tools/meson.build
+@@ -1,3 +1,10 @@
++project('gssdp-tools', 'c', version: '@version@')
++gnome = import('gnome')
++
++gssdp = dependency('gssdp-1.2')
++gtk = dependency('gtk4', version : '>= 4')
++libsoup = dependency('libsoup-2.4', version : '>= 2.26.1')
++
+ resource = gnome.compile_resources(
+     'org.gupnp.GSSDP.DeviceSniffer',
+     'gssdp-device-sniffer.gresource.xml',
+@@ -12,7 +19,9 @@ sniffer = executable(
+         'main-window.h',
+         resource
+     ],
+-    dependencies : [gssdp, gtk],
++    dependencies : [gssdp, gtk, libsoup],
++    c_args: ['-DGSSDP_TOOLS'],
++    include_directories : [include_directories('..')],
+     install: true,
+     export_dynamic : true,
+     gui_app : true
diff --git a/pkgs/development/libraries/gssdp/tools.nix b/pkgs/development/libraries/gssdp/tools.nix
new file mode 100644
index 0000000000000..36bc564290080
--- /dev/null
+++ b/pkgs/development/libraries/gssdp/tools.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, lib
+, substituteAll
+, meson
+, ninja
+, pkg-config
+, wrapGAppsHook4
+, gssdp
+, gtk4
+, libsoup
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gssdp-tools";
+  inherit (gssdp) version src;
+
+  patches = [
+    # Allow building tools separately from the library.
+    # This is needed to break the depenency cycle.
+    (substituteAll {
+      src = ./standalone-tools.patch;
+      inherit version;
+    })
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    gssdp
+    gtk4
+    libsoup
+  ];
+
+  preConfigure = ''
+    cd tools
+  '';
+
+  meta = with lib; {
+    description = "Device Sniffer tool based on GSSDP framework";
+    homepage = "http://www.gupnp.org/";
+    license = licenses.lgpl2Plus;
+    maintainers = gssdp.meta.maintainers;
+    platforms = platforms.all;
+  };
+}