File netdata.spec of Package netdata

#
# spec file for package netdata
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%define netdata_user    netdata
%define netdata_group   netdata
%define godplugin_version 0.45.0
Name:           netdata
Version:        1.37.1
Release:        0
Summary:        A system for distributed real-time performance and health monitoring
# netdata is GPL-3.0+, other licenses refer to included third-party software (see REDISTRIBUTED.md)
License:        Apache-2.0 AND BSD-2-Clause AND GPL-3.0-or-later AND MIT AND BSD-3-Clause AND LGPL-2.1-or-later AND OFL-1.1 AND CC-BY-4.0 AND WTFPL
Group:          System/Monitoring
URL:            http://my-netdata.io/
Source0:        https://github.com/netdata/%{name}/releases/download/v%{version}/%{name}-v%{version}.tar.gz
Source1:        https://github.com/netdata/go.d.plugin/archive/v%{godplugin_version}.tar.gz#/go.d.plugin-v%{godplugin_version}.tar.gz
Source2:        vendor.tar.gz
Source3:        netdata-rpmlintrc
Patch0:         netdata-logrotate-su.patch
BuildRequires:  cups-devel
BuildRequires:  dos2unix
BuildRequires:  fdupes
BuildRequires:  git-core
BuildRequires:  judy-devel
BuildRequires:  pkgconfig
BuildRequires:  snappy-devel
#BuildRequires:  pkgconfig(grpc)
BuildRequires:  pkgconfig(json)
BuildRequires:  pkgconfig(libcap)
BuildRequires:  pkgconfig(libcurl)
BuildRequires:  pkgconfig(libelf)
BuildRequires:  pkgconfig(liblz4)
BuildRequires:  pkgconfig(libmnl)
#BuildRequires:  pkgconfig(libmosquitto)
BuildRequires:  pkgconfig(libnetfilter_acct)
BuildRequires:  pkgconfig(libuv)
BuildRequires:  pkgconfig(libwebsockets)
BuildRequires:  pkgconfig(openssl)
BuildRequires:  pkgconfig(protobuf)
BuildRequires:  pkgconfig(uuid)
BuildRequires:  pkgconfig(yajl)
BuildRequires:  pkgconfig(zlib)
Requires(pre):  shadow
Recommends:     PyYAML
Recommends:     curl
Recommends:     iproute-tc
Recommends:     lm_sensors
Recommends:     nmap-ncat
Recommends:     openssl(cli)
Suggests:       logrotate
Suggests:       nodejs
# suse_version is set to 1500 even for 15.2
%if 0%{?sle_version} >= 150200 || 0%{?suse_version} > 1500
BuildRequires:  go >= 1.19
BuildRequires:  python3
%else
BuildRequires:  python2
%endif
%ifnarch ppc64 ppc64le armv7l s390x
BuildRequires:  pkgconfig(xenstat)
%endif
%if 0%{?sle_version} >= 150200 || 0%{?suse_version} > 1500
Recommends:     python3
Recommends:     python3-PyMySQL
Recommends:     python3-psycopg2
%else
Recommends:     python
Recommends:     python2-PyMySQL
Recommends:     python2-psycopg2
%endif
%ifarch i586 x86_64
BuildRequires:  pkgconfig(libipmimonitoring)
%endif

%description
netdata is a system for distributed real-time performance and health monitoring.
It provides insights, in real-time, of everything happening on the system it
runs on (including applications such as web and database servers),
using interactive web dashboards.

%prep
%setup -q -n %{name}-v%{version}
%patch0
sed -i 's,%{_bindir}/env bash,/bin/bash,' claim/%{name}-claim.sh.in

%if 0%{?sle_version} >= 150200 || 0%{?suse_version} > 1500
sed -i 's,^pybinary=.*,pybinary=%{_bindir}/python3,' collectors/python.d.plugin/python.d.plugin.in

tar xf %{SOURCE1}
cd go.d.plugin-%{godplugin_version}
tar xf %{SOURCE2}
%endif

%build
export GOFLAGS=-mod=vendor
%configure \
    --docdir="%{_docdir}/%{name}-%{version}" \
    --enable-plugin-nfacct \
%ifarch i586 x86_64
    --enable-plugin-freeipmi \
%endif
    --enable-plugin-cups \
    --with-zlib \
    --with-math \
    --with-user=%{netdata_user} \
    %{?conf}
%make_build

%if 0%{?sle_version} >= 150200 || 0%{?suse_version} > 1500
cd go.d.plugin-%{godplugin_version}
go vet ./...

go build -ldflags='-s -w' \
%ifnarch ppc64
    -buildmode=pie \
%endif
    -o bin/go.d.plugin github.com/netdata/go.d.plugin/cmd/godplugin
%endif

%install
%make_install
find %{buildroot} -name .keep -delete
install -D -m 0644 system/%{name}.service %{buildroot}%{_unitdir}/%{name}.service
install -D -m 0644 system/%{name}.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
install -D -m 0644 system/%{name}.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf

ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}

sed -i 's,^#!%{_bindir}/env bash,#!/bin/bash,;s,^#!%{_bindir}/env sh,#!/bin/sh,' \
    %{buildroot}%{_libexecdir}/%{name}/plugins.d/* \
    %{buildroot}%{_sysconfdir}/%{name}/edit-config

# Respect FHS
mv %{buildroot}%{_sysconfdir}/%{name}/edit-config %{buildroot}%{_libexecdir}/%{name}
sed -i 's|%{_prefix}/lib|%{_libdir}|' %{buildroot}%{_libexecdir}/%{name}/edit-config

# This should be opt-in, not opt-out.
# Disable statistics by default.
touch %{buildroot}%{_sysconfdir}/%{name}/.opt-out-from-anonymous-statistics

%if 0%{?sle_version} >= 150200 || 0%{?suse_version} > 1500
pushd go.d.plugin-%{godplugin_version}

install -d -m 0755 %{buildroot}/%{_libdir}/%{name}/conf.d
cp -a config/* %{buildroot}/%{_libdir}/%{name}/conf.d

install -m0755 -p bin/go.d.plugin %{buildroot}%{_libexecdir}/%{name}/plugins.d/go.d.plugin
popd
%endif

install -m 755 -d %{buildroot}%{_localstatedir}/cache/%{name}
install -m 755 -d %{buildroot}%{_localstatedir}/log/%{name}
install -m 755 -d %{buildroot}%{_localstatedir}/lib/%{name}/registry

%fdupes %{buildroot}%{_libdir} %{buildroot}%{_libexecdir} %{buildroot}%{_datadir}

%pre
getent group %{netdata_group} >/dev/null || \
    %{_sbindir}/groupadd -r %{netdata_group}
getent passwd %{netdata_user} >/dev/null || \
    %{_sbindir}/useradd -r -g %{netdata_group} -s /bin/false \
    -c "netdata daemon user" -d %{_localstatedir}/lib/empty %{netdata_user}
%{_sbindir}/usermod -g %{netdata_group} %{netdata_user} >/dev/null
%service_add_pre %{name}.service

%post
%service_add_post %{name}.service

%preun
%service_del_preun %{name}.service

%postun
%service_del_postun %{name}.service

%files
%doc README.md CHANGELOG.md
%license LICENSE REDISTRIBUTED.md

%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}

%{_libexecdir}/%{name}
%{_libdir}/%{name}

%{_sbindir}/%{name}
%{_sbindir}/%{name}-claim.sh
%{_sbindir}/%{name}cli
%{_sbindir}/rc%{name}
%{_unitdir}/%{name}.service

%attr(-,root,%{netdata_group}) %dir %{_datadir}/%{name}
%attr(-,root,%{netdata_group}) %{_datadir}/%{name}/web

%attr(0750,%{netdata_user},root) %dir %{_localstatedir}/cache/%{name}
%attr(0750,%{netdata_user},root) %dir %{_localstatedir}/log/%{name}
%attr(0750,%{netdata_user},root) %dir %{_localstatedir}/lib/%{name}

# Do not allow users to read netdata config dir and files as they can
# contain passwords!
%defattr(0640,root,%{netdata_group},0750)

%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/health.d
%dir %{_sysconfdir}/%{name}/python.d
%dir %{_sysconfdir}/%{name}/statsd.d

%config(noreplace) %{_sysconfdir}/%{name}/.opt-out-from-anonymous-statistics
%config(noreplace) %{_sysconfdir}/%{name}/*.conf
# used for statistics
%config %{_sysconfdir}/%{name}/.install-type

%attr(0750,root,%{netdata_group}) %{_libexecdir}/%{name}/edit-config

%changelog
openSUSE Build Service is sponsored by