From 49ac683e70a11caa2702572619fa3c394346e572 Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Wed, 14 Nov 2018 11:01:41 -0500 Subject: [PATCH 1/3] netdata: 1.10.0 -> 1.11.0 --- pkgs/tools/system/netdata/default.nix | 27 ++++++++++++--------------- pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/pkgs/tools/system/netdata/default.nix b/pkgs/tools/system/netdata/default.nix index 6f86647f4c7..ccbc11d212a 100644 --- a/pkgs/tools/system/netdata/default.nix +++ b/pkgs/tools/system/netdata/default.nix @@ -1,39 +1,36 @@ -{ stdenv, fetchFromGitHub, autoreconfHook, zlib, pkgconfig, libuuid }: +{ stdenv, fetchurl, autoreconfHook, pkgconfig, zlib, libuuid, libossp_uuid, CoreFoundation, IOKit }: stdenv.mkDerivation rec{ - version = "1.10.0"; + version = "1.11.0"; name = "netdata-${version}"; - src = fetchFromGitHub { - rev = "v${version}"; - owner = "firehol"; - repo = "netdata"; - sha256 = "02spfisabjkkgd9fairldlf84n83vbv2xafg0g5jrpfa972pjl9r"; + src = fetchurl { + url = "https://github.com/netdata/netdata/releases/download/v${version}/netdata-v${version}.tar.gz"; + sha256 = "17b14w34jif6bviw3s81imbazkvvafwxff7d5zjy6wicq88q8b64"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; - buildInputs = [ zlib libuuid ]; + buildInputs = [ zlib ] + ++ (if stdenv.isDarwin then [ libossp_uuid CoreFoundation IOKit ] else [ libuuid ]); # Build will fail trying to create /var/{cache,lib,log}/netdata without this postPatch = '' - sed -i '/dist_.*_DATA = \.keep/d' src/Makefile.am + substituteInPlace Makefile.am --replace "installer/.keep" "" ''; configureFlags = [ "--localstatedir=/var" ]; - # App fails on runtime if the default config file is not detected - # The upstream installer does prepare an empty file too - postInstall = '' - touch $out/etc/netdata/netdata.conf + postFixup = '' + rm -r $out/sbin ''; meta = with stdenv.lib; { description = "Real-time performance monitoring tool"; - homepage = http://netdata.firehol.org; + homepage = https://my-netdata.io/; license = licenses.gpl3; - platforms = platforms.linux; + platforms = platforms.unix; maintainers = [ maintainers.lethalman ]; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index be30a885759..ffed6229b6c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3766,7 +3766,9 @@ with pkgs; pythonPackages = python3Packages; }; - netdata = callPackage ../tools/system/netdata { }; + netdata = callPackage ../tools/system/netdata { + inherit (darwin.apple_sdk.frameworks) CoreFoundation IOKit; + }; netsurf = recurseIntoAttrs (let callPackage = newScope pkgs.netsurf; in rec { # ui could be gtk, sixel or framebuffer. Note that console display (sixel) From d417ca7ba9b53cfe692f5ffa61daf88fc8d32785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 12 Oct 2018 09:53:36 +0100 Subject: [PATCH 2/3] netdata: Disable files in /etc and /var --- pkgs/tools/system/netdata/default.nix | 8 +- .../netdata/no-files-in-etc-and-var.patch | 86 +++++++++++++++++++ 2 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 pkgs/tools/system/netdata/no-files-in-etc-and-var.patch diff --git a/pkgs/tools/system/netdata/default.nix b/pkgs/tools/system/netdata/default.nix index ccbc11d212a..03249cce82b 100644 --- a/pkgs/tools/system/netdata/default.nix +++ b/pkgs/tools/system/netdata/default.nix @@ -13,13 +13,13 @@ stdenv.mkDerivation rec{ buildInputs = [ zlib ] ++ (if stdenv.isDarwin then [ libossp_uuid CoreFoundation IOKit ] else [ libuuid ]); - # Build will fail trying to create /var/{cache,lib,log}/netdata without this - postPatch = '' - substituteInPlace Makefile.am --replace "installer/.keep" "" - ''; + patches = [ + ./no-files-in-etc-and-var.patch + ]; configureFlags = [ "--localstatedir=/var" + "--sysconfdir=/etc" ]; postFixup = '' diff --git a/pkgs/tools/system/netdata/no-files-in-etc-and-var.patch b/pkgs/tools/system/netdata/no-files-in-etc-and-var.patch new file mode 100644 index 00000000000..bf9b6c19e7c --- /dev/null +++ b/pkgs/tools/system/netdata/no-files-in-etc-and-var.patch @@ -0,0 +1,86 @@ +diff -ruN orig/Makefile.am new/Makefile.am +--- orig/Makefile.am 2018-11-02 08:56:21.000000000 -0500 ++++ new/Makefile.am 2018-11-16 10:30:22.000000000 -0500 +@@ -99,10 +99,10 @@ + $(NULL) + + sbin_PROGRAMS = +-dist_cache_DATA = installer/.keep +-dist_varlib_DATA = installer/.keep +-dist_registry_DATA = installer/.keep +-dist_log_DATA = installer/.keep ++dist_cache_DATA = ++dist_varlib_DATA = ++dist_registry_DATA = ++dist_log_DATA = + plugins_PROGRAMS = + + LIBNETDATA_FILES = \ +diff -ruN orig/collectors/charts.d.plugin/Makefile.am new/collectors/charts.d.plugin/Makefile.am +--- orig/collectors/charts.d.plugin/Makefile.am 2018-11-02 08:56:21.000000000 -0500 ++++ new/collectors/charts.d.plugin/Makefile.am 2018-11-16 11:16:47.000000000 -0500 +@@ -32,7 +32,6 @@ + + userchartsconfigdir=$(configdir)/charts.d + dist_userchartsconfig_DATA = \ +- $(top_srcdir)/installer/.keep \ + $(NULL) + + chartsconfigdir=$(libconfigdir)/charts.d +diff -ruN orig/collectors/node.d.plugin/Makefile.am new/collectors/node.d.plugin/Makefile.am +--- orig/collectors/node.d.plugin/Makefile.am 2018-11-02 08:56:21.000000000 -0500 ++++ new/collectors/node.d.plugin/Makefile.am 2018-11-16 11:16:42.000000000 -0500 +@@ -23,7 +23,6 @@ + + usernodeconfigdir=$(configdir)/node.d + dist_usernodeconfig_DATA = \ +- $(top_srcdir)/installer/.keep \ + $(NULL) + + nodeconfigdir=$(libconfigdir)/node.d +diff -ruN orig/collectors/python.d.plugin/Makefile.am new/collectors/python.d.plugin/Makefile.am +--- orig/collectors/python.d.plugin/Makefile.am 2018-11-02 08:56:21.000000000 -0500 ++++ new/collectors/python.d.plugin/Makefile.am 2018-11-16 10:56:06.000000000 -0500 +@@ -29,7 +29,6 @@ + + userpythonconfigdir=$(configdir)/python.d + dist_userpythonconfig_DATA = \ +- $(top_srcdir)/installer/.keep \ + $(NULL) + + pythonconfigdir=$(libconfigdir)/python.d +diff -ruN orig/collectors/statsd.plugin/Makefile.am new/collectors/statsd.plugin/Makefile.am +--- orig/collectors/statsd.plugin/Makefile.am 2018-11-02 08:56:21.000000000 -0500 ++++ new/collectors/statsd.plugin/Makefile.am 2018-11-16 10:53:04.000000000 -0500 +@@ -15,6 +15,5 @@ + + userstatsdconfigdir=$(configdir)/statsd.d + dist_userstatsdconfig_DATA = \ +- $(top_srcdir)/installer/.keep \ + $(NULL) + +diff -ruN orig/health/Makefile.am new/health/Makefile.am +--- orig/health/Makefile.am 2018-11-02 08:56:21.000000000 -0500 ++++ new/health/Makefile.am 2018-11-16 10:56:30.000000000 -0500 +@@ -16,7 +16,6 @@ + + userhealthconfigdir=$(configdir)/health.d + dist_userhealthconfig_DATA = \ +- $(top_srcdir)/installer/.keep \ + $(NULL) + + healthconfigdir=$(libconfigdir)/health.d +diff -ruN orig/system/Makefile.am new/system/Makefile.am +--- orig/system/Makefile.am 2018-11-02 08:56:21.000000000 -0500 ++++ new/system/Makefile.am 2018-11-16 10:29:21.000000000 -0500 +@@ -17,10 +17,6 @@ + include $(top_srcdir)/build/subst.inc + SUFFIXES = .in + +-dist_config_SCRIPTS = \ +- edit-config \ +- $(NULL) +- + nodist_noinst_DATA = \ + netdata-openrc \ + netdata.logrotate \ From 348b7b8be9eff6e16642e659f24c743520b68bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 12 Oct 2018 09:57:45 +0100 Subject: [PATCH 3/3] nixos/netdata: own plugins must the looked up first Otherwise netdata will not find python modules. To make sure netdata still pick up our setuid version of apps.plugin we rename the original executable. --- nixos/modules/services/monitoring/netdata.nix | 4 ++-- pkgs/tools/system/netdata/default.nix | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/monitoring/netdata.nix b/nixos/modules/services/monitoring/netdata.nix index edcaa10d969..7f21beeb133 100644 --- a/nixos/modules/services/monitoring/netdata.nix +++ b/nixos/modules/services/monitoring/netdata.nix @@ -12,7 +12,7 @@ let localConfig = { global = { - "plugins directory" = "${wrappedPlugins}/libexec/netdata/plugins.d ${pkgs.netdata}/libexec/netdata/plugins.d"; + "plugins directory" = "${pkgs.netdata}/libexec/netdata/plugins.d ${wrappedPlugins}/libexec/netdata/plugins.d"; }; web = { "web files owner" = "root"; @@ -96,7 +96,7 @@ in { }; security.wrappers."apps.plugin" = { - source = "${pkgs.netdata}/libexec/netdata/plugins.d/apps.plugin"; + source = "${pkgs.netdata}/libexec/netdata/plugins.d/apps.plugin.org"; capabilities = "cap_dac_read_search,cap_sys_ptrace+ep"; owner = cfg.user; group = cfg.group; diff --git a/pkgs/tools/system/netdata/default.nix b/pkgs/tools/system/netdata/default.nix index 03249cce82b..97a250f79d8 100644 --- a/pkgs/tools/system/netdata/default.nix +++ b/pkgs/tools/system/netdata/default.nix @@ -17,6 +17,12 @@ stdenv.mkDerivation rec{ ./no-files-in-etc-and-var.patch ]; + postInstall = stdenv.lib.optionalString (!stdenv.isDarwin) '' + # rename this plugin so netdata will look for setuid wrapper + mv $out/libexec/netdata/plugins.d/apps.plugin \ + $out/libexec/netdata/plugins.d/apps.plugin.org + ''; + configureFlags = [ "--localstatedir=/var" "--sysconfdir=/etc"