diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gssdp')
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; + }; +} |