about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/gssdp
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gssdp')
-rw-r--r--nixpkgs/pkgs/development/libraries/gssdp/default.nix82
-rw-r--r--nixpkgs/pkgs/development/libraries/gssdp/standalone-tools.patch42
-rw-r--r--nixpkgs/pkgs/development/libraries/gssdp/tools.nix50
3 files changed, 174 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gssdp/default.nix b/nixpkgs/pkgs/development/libraries/gssdp/default.nix
new file mode 100644
index 000000000000..21af779a5112
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/gssdp/default.nix
@@ -0,0 +1,82 @@
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, gobject-introspection
+, vala
+, gi-docgen
+, python3
+, libsoup
+, glib
+, gnome
+, gssdp-tools
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gssdp";
+  version = "1.4.0.1";
+
+  outputs = [ "out" "dev" ]
+    ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [ "devdoc" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gssdp/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "hnaEnVf7giuHKIVtut6/OGf4nuR6DsR6IARdAR9DFYI=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gobject-introspection
+    vala
+    gi-docgen
+    python3
+  ];
+
+  buildInputs = [
+    libsoup
+  ];
+
+  propagatedBuildInputs = [
+    glib
+  ];
+
+  mesonFlags = [
+    "-Dgtk_doc=${lib.boolToString (stdenv.buildPlatform == stdenv.hostPlatform)}"
+    "-Dsniffer=false"
+    "-Dintrospection=${lib.boolToString (stdenv.buildPlatform == stdenv.hostPlatform)}"
+  ];
+
+  doCheck = true;
+
+  postFixup = lib.optionalString (stdenv.buildPlatform == stdenv.hostPlatform) ''
+    # 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
+        moveToOutput "$(dirname "''${file/"$out/"/}")" "$devdoc"
+    done
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+    };
+
+    tests = {
+      inherit gssdp-tools;
+    };
+  };
+
+  meta = with lib; {
+    broken = stdenv.isDarwin;
+    description = "GObject-based API for handling resource discovery and announcement over SSDP";
+    homepage = "http://www.gupnp.org/";
+    license = licenses.lgpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/gssdp/standalone-tools.patch b/nixpkgs/pkgs/development/libraries/gssdp/standalone-tools.patch
new file mode 100644
index 000000000000..f2273a978d67
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/libraries/gssdp/tools.nix b/nixpkgs/pkgs/development/libraries/gssdp/tools.nix
new file mode 100644
index 000000000000..36bc56429008
--- /dev/null
+++ b/nixpkgs/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;
+  };
+}