From 5f59913c74f3b165594cedcaf7dc475407c2ca7d Mon Sep 17 00:00:00 2001 From: Philipp Hausmann Date: Mon, 30 Oct 2017 16:27:40 +0100 Subject: [PATCH 1/2] FusionInventory: 3.18 -> 3.21 --- .../services/monitoring/fusion-inventory.nix | 3 --- .../monitoring/fusion-inventory/default.nix | 24 +++++++++++++------ .../remove_software_test.patch | 23 ++++++++++++++---- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/nixos/modules/services/monitoring/fusion-inventory.nix b/nixos/modules/services/monitoring/fusion-inventory.nix index 1c00f3c299e..c3b869e0088 100644 --- a/nixos/modules/services/monitoring/fusion-inventory.nix +++ b/nixos/modules/services/monitoring/fusion-inventory.nix @@ -55,9 +55,6 @@ in { description = "Fusion Inventory Agent"; wantedBy = [ "multi-user.target" ]; - environment = { - OPTIONS = "--no-category=software"; - }; serviceConfig = { ExecStart = "${pkgs.fusionInventory}/bin/fusioninventory-agent --conf-file=${configFile} --daemon --no-fork"; }; diff --git a/pkgs/servers/monitoring/fusion-inventory/default.nix b/pkgs/servers/monitoring/fusion-inventory/default.nix index 2e694ede497..b4f5e325675 100644 --- a/pkgs/servers/monitoring/fusion-inventory/default.nix +++ b/pkgs/servers/monitoring/fusion-inventory/default.nix @@ -1,22 +1,28 @@ -{ stdenv, fetchurl, buildPerlPackage, perlPackages +{ stdenv, lib, fetchurl, buildPerlPackage, perlPackages, gnused, nix, dmidecode, pciutils, usbutils, iproute, nettools +, fetchFromGitHub, makeWrapper }: buildPerlPackage rec { - version = "2.3.18"; name = "FusionInventory-Agent-${version}"; + version = "2.3.21"; src = fetchurl { - url = "mirror://cpan/authors/id/G/GR/GROUSSE/${name}.tar.gz"; - sha256 = "543d96fa61b8f2a2bc599fe9f694f19d1f2094dc5506bc514d00b8a445bc5401"; + url = "mirror://cpan/authors/id/G/GB/GBOUGARD/${name}.tar.gz"; + sha256 = "0c2ijild03bfw125h2gyaip2mg1jxk72dcanrlx9n6pjh2ay90zh"; }; patches = [ ./remove_software_test.patch ]; postPatch = '' patchShebangs bin + + substituteInPlace "lib/FusionInventory/Agent/Tools/Linux.pm" \ + --replace /sbin/ip ${iproute}/sbin/ip + substituteInPlace "lib/FusionInventory/Agent/Task/Inventory/Linux/Networks.pm" \ + --replace /sbin/ip ${iproute}/sbin/ip ''; buildTools = []; - buildInputs = with perlPackages; [ + buildInputs = [ makeWrapper ] ++ (with perlPackages; [ CGI DataStructureUtil FileCopyRecursive @@ -28,6 +34,7 @@ buildPerlPackage rec { IPCRun JSON LWPProtocolhttps + ModuleInstall NetSNMP TestCompile TestDeep @@ -35,7 +42,7 @@ buildPerlPackage rec { TestMockModule TestMockObject TestNoWarnings - ]; + ]); propagatedBuildInputs = with perlPackages; [ FileWhich LWP @@ -52,7 +59,10 @@ buildPerlPackage rec { cp -r lib $out for cur in $out/bin/*; do - sed -e "s|./lib|$out/lib|" -i "$cur" + if [ -x "$cur" ]; then + sed -e "s|./lib|$out/lib|" -i "$cur" + wrapProgram "$cur" --prefix PATH : ${lib.makeBinPath [nix dmidecode pciutils usbutils nettools]} + fi done ''; diff --git a/pkgs/servers/monitoring/fusion-inventory/remove_software_test.patch b/pkgs/servers/monitoring/fusion-inventory/remove_software_test.patch index 5449f4d3740..b360f418aa0 100644 --- a/pkgs/servers/monitoring/fusion-inventory/remove_software_test.patch +++ b/pkgs/servers/monitoring/fusion-inventory/remove_software_test.patch @@ -28,7 +28,7 @@ index 8ee7ff02c..bd5551ab3 100755 skip 'live SNMP test disabled', 6 unless $ENV{TEST_LIVE_SNMP}; diff --git a/t/apps/agent.t b/t/apps/agent.t -index f417b4106..12207f192 100755 +index c0f6fc52f..c83837d70 100755 --- a/t/apps/agent.t +++ b/t/apps/agent.t @@ -12,7 +12,7 @@ use XML::TreePP; @@ -40,15 +40,28 @@ index f417b4106..12207f192 100755 my ($content, $out, $err, $rc); -@@ -73,11 +73,6 @@ subtest "first inventory execution and content" => sub { +@@ -71,11 +71,6 @@ subtest "first inventory execution and content" => sub { + check_content_ok($out); }; - ok( +-ok( - exists $content->{REQUEST}->{CONTENT}->{SOFTWARES}, - 'inventory has software' -); - --ok( + ok( exists $content->{REQUEST}->{CONTENT}->{ENVS}, 'inventory has environment variables' - ); +diff --git a/t/tasks/inventory/linux/softwares.t b/t/tasks/inventory/linux/softwares.t +index 72a0e578c..13944f34f 100755 +--- a/t/tasks/inventory/linux/softwares.t ++++ b/t/tasks/inventory/linux/softwares.t +@@ -89,7 +89,7 @@ my $rpm_packages = [ + PUBLISHER => 'Mageia.Org', + NAME => 'xfsprogs', + COMMENTS => 'Utilities for managing the XFS filesystem', +- INSTALLDATE => '25/03/2012', ++ INSTALLDATE => '24/03/2012', + FILESIZE => '3628382', + FROM => 'rpm', + ARCH => 'x86_64', From 59a737a9220dbd5de9e281744ff83c44ed762377 Mon Sep 17 00:00:00 2001 From: Philipp Hausmann Date: Tue, 28 Nov 2017 08:26:38 +0100 Subject: [PATCH 2/2] FusionInventory: Patch in NixOS support Adds support for the /etc/os-release file and to read installed software from the Nix store. --- .../monitoring/fusion-inventory/default.nix | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/pkgs/servers/monitoring/fusion-inventory/default.nix b/pkgs/servers/monitoring/fusion-inventory/default.nix index b4f5e325675..34b4e87bf65 100644 --- a/pkgs/servers/monitoring/fusion-inventory/default.nix +++ b/pkgs/servers/monitoring/fusion-inventory/default.nix @@ -5,14 +5,30 @@ buildPerlPackage rec { name = "FusionInventory-Agent-${version}"; version = "2.3.21"; - src = fetchurl { - url = "mirror://cpan/authors/id/G/GB/GBOUGARD/${name}.tar.gz"; - sha256 = "0c2ijild03bfw125h2gyaip2mg1jxk72dcanrlx9n6pjh2ay90zh"; + + src = fetchFromGitHub { + owner = "fusioninventory"; + repo = "fusioninventory-agent"; + rev = version; + sha256 = "034clffcn0agx85macjgml4lyhvvck7idn94pqd2c77pk6crvw2y"; }; - patches = [ ./remove_software_test.patch ]; + patches = [ + ./remove_software_test.patch + # support for os-release file + (fetchurl { + url = https://github.com/fusioninventory/fusioninventory-agent/pull/396.diff; + sha256 = "0bxrjmff80ab01n23xggci32ajsah6zvcmz5x4hj6ayy6dzwi6jb"; + }) + # support for Nix software inventory + (fetchurl { + url = https://github.com/fusioninventory/fusioninventory-agent/pull/397.diff; + sha256 = "0pyf7mp0zsb3zcqb6yysr1zfp54p9ciwjn1pzayw6s9flmcgrmbw"; + }) + ]; postPatch = '' + patchShebangs bin substituteInPlace "lib/FusionInventory/Agent/Tools/Linux.pm" \ @@ -61,7 +77,7 @@ buildPerlPackage rec { for cur in $out/bin/*; do if [ -x "$cur" ]; then sed -e "s|./lib|$out/lib|" -i "$cur" - wrapProgram "$cur" --prefix PATH : ${lib.makeBinPath [nix dmidecode pciutils usbutils nettools]} + wrapProgram "$cur" --prefix PATH : ${lib.makeBinPath [nix dmidecode pciutils usbutils nettools iproute]} fi done '';