[Buildroot] [PATCH v5 1/2] package/netdata: new package
Carlos Santos
unixmania at gmail.com
Sat Mar 14 12:13:54 UTC 2020
On Thu, Mar 12, 2020 at 1:01 PM Marcin Niestroj
<m.niestroj at grinn-global.com> wrote:
>
> Always provide --disable-dbengine configuration option, because we do
> not support libjudy dependency that is required otherwise.
>
> Signed-off-by: Marcin Niestroj <m.niestroj at grinn-global.com>
> ---
> changes v4 -> v5:
> - use 1.20.0 instead of 1.19.0 version
> - libuv is hard requirement now, so it was added to dependencies
> - zlib is hard requirement as well, because it is needed to properly
> compile project (missing uLong typedef otherwise)
> - patch solving race condition during installation has been dropped,
> because it is already part of 1.20.0
>
> changes v3 -> v4:
> - use 1.19.0 instead of 1.18.1 version
> - drop musl fix, which is now part of 1.19.0 netdata version
> - use patch from upstream netdata (which will be part of next release) that
> removes use of .keep files
> - rebase on Builroot master
>
> changes v2 -> v3:
> - add patch that removes installation of .keep files for /var/cache/netdata and
> /var/log/netdata directories; this solves a race condition when installing
> .keep file to the same directory (/tmp/netdata with default skeleton) from
> multiple threads
> - add S60netdata sysv-init script, which creates needed directories
> (/var/cache/netdata and /var/log/netdata) (suggested by Matt)
>
> changes v1 -> v2:
> - squash DEVELOPERS update (suggested by Arnout),
> - reduce number of required dependencies and support them as optional:
> - json-c: there are few custom JSON handling function if json-c library is
> not provided,
> - openssl: enable or disable https support based on its availability (and
> solve openssl not being in netdata.mk file - suggested by Matt),
> - add optional dependencies on cups, nfacct and zlib,
> - enable or disable -flto based on BR2_GCC_ENABLE_LTO
> - drop libuv and lz4 dependencies, because it is not required with
> --disable-dbengine option,
> - add comment about NETDATA_AUTORECONF (suggested by Matt),
> - apply upstreamed patch to fix musl build (musl build was not failing with v1
> patch but did with v2).
>
> DEVELOPERS | 1 +
> package/Config.in | 1 +
> package/netdata/Config.in | 22 +++++++++++++++
> package/netdata/S60netdata | 41 +++++++++++++++++++++++++++
> package/netdata/netdata.hash | 3 ++
> package/netdata/netdata.mk | 55 ++++++++++++++++++++++++++++++++++++
> 6 files changed, 123 insertions(+)
> create mode 100644 package/netdata/Config.in
> create mode 100644 package/netdata/S60netdata
> create mode 100644 package/netdata/netdata.hash
> create mode 100644 package/netdata/netdata.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 10768a19ee..3252d02e93 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -1550,6 +1550,7 @@ F: package/lua-flu/
> F: package/lua-stdlib/
> F: package/luaossl/
> F: package/murata-cyw-fw/
> +F: package/netdata/
> F: package/rs485conf/
> F: package/turbolua/
>
> diff --git a/package/Config.in b/package/Config.in
> index 146fc1bbc3..17ba22a8ff 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1932,6 +1932,7 @@ menu "Miscellaneous"
> source "package/linux-syscall-support/Config.in"
> source "package/mcrypt/Config.in"
> source "package/mobile-broadband-provider-info/Config.in"
> + source "package/netdata/Config.in"
> source "package/proj/Config.in"
> source "package/qemu/Config.in"
> source "package/qpdf/Config.in"
> diff --git a/package/netdata/Config.in b/package/netdata/Config.in
> new file mode 100644
> index 0000000000..88f88cb7ed
> --- /dev/null
> +++ b/package/netdata/Config.in
> @@ -0,0 +1,22 @@
> +config BR2_PACKAGE_NETDATA
> + bool "netdata"
> + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
> + depends on BR2_USE_MMU # fork()
> + depends on !BR2_STATIC_LIBS # libuv
> + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv
> + select BR2_PACKAGE_LIBUV
> + select BR2_PACKAGE_UTIL_LINUX
> + select BR2_PACKAGE_UTIL_LINUX_LIBUUID
> + select BR2_PACKAGE_ZLIB
> + help
> + Netdata is distributed, real-time, performance and health
> + monitoring for systems and applications. It is a highly
> + optimized monitoring agent you install on all your systems and
> + containers.
> +
> + https://github.com/netdata/netdata
> +
> +comment "netdata needs a toolchain w/ NPTL, dynamic library"
> + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS
> + depends on BR2_USE_MMU
> + depends on BR2_TOOLCHAIN_HAS_SYNC_4
> diff --git a/package/netdata/S60netdata b/package/netdata/S60netdata
> new file mode 100644
> index 0000000000..20ce8a22e9
> --- /dev/null
> +++ b/package/netdata/S60netdata
> @@ -0,0 +1,41 @@
> +#!/bin/sh
> +#
> +# netdata Starts netdata.
> +#
> +
> +# Create needed directories.
> +[ -d /var/cache/netdata ] || mkdir -p /var/cache/netdata
> +[ -d /var/lib/netdata ] || mkdir -p /var/lib/netdata
> +[ -d /var/log/netdata ] || mkdir -p /var/log/netdata
> +
> +start() {
> + printf "Starting netdata: "
> + /usr/sbin/netdata -u root
> + echo "OK"
> +}
> +stop() {
> + printf "Stopping netdata: "
> + killall netdata
> + echo "OK"
> +}
> +restart() {
> + stop
> + start
> +}
> +
> +case "$1" in
> + start)
> + start
> + ;;
> + stop)
> + stop
> + ;;
> + restart|reload)
> + restart
> + ;;
> + *)
> + echo "Usage: $0 {start|stop|restart}"
> + exit 1
> +esac
> +
> +exit $?
> diff --git a/package/netdata/netdata.hash b/package/netdata/netdata.hash
> new file mode 100644
> index 0000000000..6c79e97017
> --- /dev/null
> +++ b/package/netdata/netdata.hash
> @@ -0,0 +1,3 @@
> +# Locally calculated
> +sha256 c739e0fa8d6d7f433c0c7c8016b763e8f70519d67f0b5e7eca9ee5318f210d90 netdata-1.20.0.tar.gz
> +sha256 0e5fd9d833efe9b79f784d1903281554af82d1b4261af67d35455728e5572aa6 LICENSE
> diff --git a/package/netdata/netdata.mk b/package/netdata/netdata.mk
> new file mode 100644
> index 0000000000..5ba94c7eda
> --- /dev/null
> +++ b/package/netdata/netdata.mk
> @@ -0,0 +1,55 @@
> +################################################################################
> +#
> +# netdata
> +#
> +################################################################################
> +
> +NETDATA_VERSION = 1.20.0
> +NETDATA_SITE = $(call github,netdata,netdata,v$(NETDATA_VERSION))
> +NETDATA_LICENSE = GPL-3.0
> +NETDATA_LICENSE_FILES = LICENSE
> +# netdata's source code is released without a generated configure script
> +NETDATA_AUTORECONF = YES
> +NETDATA_CONF_OPTS = --disable-dbengine
> +NETDATA_DEPENDENCIES = libuv util-linux zlib
> +
> +ifeq ($(BR2_GCC_ENABLE_LTO),y)
> +NETDATA_CONF_OPTS += --enable-lto
> +else
> +NETDATA_CONF_OPTS += --disable-lto
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CUPS),y)
> +NETDATA_CONF_OPTS += --enable-plugin-cups
> +NETDATA_DEPENDENCIES += cups
> +else
> +NETDATA_CONF_OPTS += --disable-plugin-cups
> +endif
> +
> +ifeq ($(BR2_PACKAGE_JSON_C),y)
> +NETDATA_CONF_OPTS += --enable-jsonc
> +NETDATA_DEPENDENCIES += json-c
> +else
> +NETDATA_CONF_OPTS += --disable-jsonc
> +endif
> +
> +ifeq ($(BR2_PACKAGE_NFACCT),y)
> +NETDATA_CONF_OPTS += --enable-plugin-nfacct
> +NETDATA_DEPENDENCIES += nfacct
> +else
> +NETDATA_CONF_OPTS += --disable-plugin-nfacct
> +endif
> +
> +ifeq ($(BR2_PACKAGE_OPENSSL),y)
> +NETDATA_CONF_OPTS += --enable-https
> +NETDATA_DEPENDENCIES += openssl
> +else
> +NETDATA_CONF_OPTS += --disable-https
> +endif
> +
> +define NETDATA_INSTALL_INIT_SYSV
> + $(INSTALL) -D -m 755 package/netdata/S60netdata \
> + $(TARGET_DIR)/etc/init.d/S60netdata
> +endef
> +
> +$(eval $(autotools-package))
> --
> 2.25.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
We use start-stop-daemon in the init scripts. Please refer to
package/sysklogd/S01syslogd as a template.
Since netdata always damonizes but does not create a pid file, you can
use pidof, as made in package/irqbalance/S13irqbalance (which by the
way was not converted to the current template yet).
Finally, I saw that netdata provides a systemd unit file in
contrib/debian/netdata.service. It would be good to check if it works
and add NETDATA_INSTALL_INIT_SYSTEMD to netdata.mk. Notice that this
is just a suggestion, since it can be done it in a later patch.
--
Carlos Santos <unixmania at gmail.com>
More information about the buildroot
mailing list