diff options
Diffstat (limited to '')
-rw-r--r-- | netdata.spec | 534 | ||||
-rw-r--r-- | netdata.spec.in | 193 |
2 files changed, 118 insertions, 609 deletions
diff --git a/netdata.spec b/netdata.spec deleted file mode 100644 index 2c7419cd6..000000000 --- a/netdata.spec +++ /dev/null @@ -1,534 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -%global contentdir %{_datadir}/netdata -%global version v1.19.0 - -#TODO: Temporary fix for the build-id error during go.d plugin set up -%global _missing_build_ids_terminate_build 0 - -# This is temporary and should eventually be resolved. This bypasses -# the default rhel __os_install_post which throws a python compile -# error. -%global __os_install_post %{nil} - -# Mitigate the cross-distro mayhem by strictly defining the libexec destination -%define _prefix /usr -%define _sysconfdir /etc -%define _localstatedir /var -%define _libexecdir /usr/libexec -%define _libdir /usr/lib - -# -# Conditional build: -%bcond_without systemd # systemd -%bcond_with netns # build with netns support (cgroup-network) - -%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1140 -%else -%undefine with_systemd -%undefine with_netns -%endif - -%if %{with systemd} -%if 0%{?suse_version} -%global netdata_initd_buildrequires \ -BuildRequires: systemd-rpm-macros \ -%{nil} -%global netdata_initd_requires \ -%{?systemd_requires} \ -%{nil} -%global netdata_init_post %service_add_post netdata.service \ -/sbin/service netdata restart > /dev/null 2>&1 \ -%{nil} -%global netdata_init_preun %service_del_preun netdata.service \ -/sbin/service netdata stop > /dev/null 2>&1 \ -%{nil} -%global netdata_init_postun %service_del_postun netdata.service -%else -%global netdata_initd_buildrequires \ -BuildRequires: systemd -%global netdata_initd_requires \ -Requires(preun): systemd-units \ -Requires(postun): systemd-units \ -Requires(post): systemd-units \ -%{nil} -%global netdata_init_post %systemd_post netdata.service \ -/usr/bin/systemctl enable netdata.service \ -/usr/bin/systemctl daemon-reload \ -/usr/bin/systemctl restart netdata.service \ -%{nil} -%global netdata_init_preun %systemd_preun netdata.service -%global netdata_init_postun %systemd_postun_with_restart netdata.service -%endif -%else -%global netdata_initd_buildrequires %{nil} -%global netdata_initd_requires \ -Requires(post): chkconfig \ -%{nil} -%global netdata_init_post \ -/sbin/chkconfig --add netdata \ -/sbin/service netdata restart > /dev/null 2>&1 \ -%{nil} -%global netdata_init_preun %{nil} \ -if [ $1 = 0 ]; then \ - /sbin/service netdata stop > /dev/null 2>&1 \ - /sbin/chkconfig --del netdata \ -fi \ -%{nil} -%global netdata_init_postun %{nil} \ -if [ $1 != 0 ]; then \ - /sbin/service netdata condrestart 2>&1 > /dev/null \ -fi \ -%{nil} -%endif - -Summary: Real-time performance monitoring, done right! -Name: netdata -Version: %{version} -Release: 1%{?dist} -License: GPLv3+ -Group: Applications/System -Source0: https://github.com/netdata/%{name}/releases/download/%{version}/%{name}-%{version}.tar.gz -URL: http://my-netdata.io - -# ##################################################################### -# Core build/install/runtime dependencies -# ##################################################################### - -# Build dependencies -# -BuildRequires: gcc -BuildRequires: gcc-c++ -BuildRequires: make -BuildRequires: git -BuildRequires: autoconf -%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1140 -BuildRequires: autoconf-archive -BuildRequires: autogen -%endif -BuildRequires: automake -BuildRequires: pkgconfig -BuildRequires: curl -BuildRequires: findutils -BuildRequires: zlib-devel -BuildRequires: libuuid-devel -BuildRequires: libuv-devel >= 1 -BuildRequires: openssl-devel -%if 0%{?suse_version} -BuildRequires: judy-devel -BuildRequires: liblz4-devel -BuildRequires: netcat-openbsd -BuildRequires: json-glib-devel -%else -BuildRequires: Judy-devel -BuildRequires: lz4-devel -BuildRequires: nc -BuildRequires: json-c-devel -%endif - -# Core build requirements for service install -%{netdata_initd_buildrequires} - -# Runtime dependencies -# -Requires: python -Requires: zlib -%if 0%{?suse_version} -# for libuv, Requires version >= 1 -Requires: libuv1 -Requires: libJudy1 -Requires: json-glib -Requires: libuuid1 -%else -# for libuv, Requires version >= 1 -Requires: libuv >= 1 -Requires: Judy -Requires: json-c -Requires: libuuid -%endif -Requires: openssl -Requires: lz4 - -# Core requirements for the install to succeed -Requires(pre): /usr/sbin/groupadd -Requires(pre): /usr/sbin/useradd -%if 0%{?suse_version} >= 1140 -Requires(post): libcap1 -%else -Requires(post): libcap -%endif - -%{netdata_initd_requires} - -# ##################################################################### -# Functionality-dependent package dependencies -# ##################################################################### -# Note: Some or all of the Packages may be found in the EPEL repo, -# rather than the standard ones - -# nfacct plugin dependencies -BuildRequires: libmnl-devel -%if 0%{?fedora} || 0%{?suse_version} >= 1140 -BuildRequires: libnetfilter_acct-devel -%endif - -%if 0%{?suse_version} -Requires: libmnl0 -%else -Requires: libmnl -%endif - -%if 0%{?fedora} -Requires: libnetfilter_acct -%else -%if 0%{?suse_version} >= 1140 -Requires: libnetfilter_acct1 -%endif -%endif -# end nfacct plugin dependencies - -# freeipmi plugin dependencies -BuildRequires: freeipmi-devel -Requires: freeipmi -# end - freeipmi plugin dependencies - -# CUPS plugin dependencies -%if 0%{?centos_ver} != 6 && 0%{?centos_ver} != 7 -BuildRequires: cups-devel >= 1.7 -%endif -# end - cups plugin dependencies - -# Prometheus remote write dependencies -BuildRequires: snappy-devel -BuildRequires: protobuf-devel -%if 0%{?suse_version} -BuildRequires: libprotobuf-c-devel -%else -BuildRequires: protobuf-c-devel -%endif - -%if 0%{?suse_version} -Requires: libsnappy1 -Requires: protobuf-c -Requires: libprotobuf15 -%else -Requires: snappy -Requires: protobuf-c -Requires: protobuf -%endif -# end - prometheus remote write dependencies - -# ##################################################################### -# End of dependency management configuration -# ##################################################################### - -%description - netdata is the fastest way to visualize metrics. It is a resource -efficient, highly optimized system for collecting and visualizing any -type of realtime timeseries data, from CPU usage, disk activity, SQL -queries, API calls, web site visitors, etc. - netdata tries to visualize the truth of now, in its greatest detail, -so that you can get insights of what is happening now and what just -happened, on your systems and applications. - -%prep -%setup -q -n %{name}-%{version} - -%build -# Conf step -autoreconf -ivf -%configure \ - --prefix="%{_prefix}" \ - --sysconfdir="%{_sysconfdir}" \ - --localstatedir="%{_localstatedir}" \ - --libexecdir="%{_libexecdir}" \ - --libdir="%{_libdir}" \ - --with-zlib \ - --with-math \ - --with-user=netdata \ - -# Build step -%{__make} %{?_smp_mflags} - -%install - -# ########################################################### -# Clear the directory, if already exists and install -rm -rf "${RPM_BUILD_ROOT}" -%{__make} %{?_smp_mflags} DESTDIR="${RPM_BUILD_ROOT}" install - -find "${RPM_BUILD_ROOT}%{_localstatedir}" -name .keep -delete -print - -install -m 644 -p system/netdata.conf "${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}" - -# ########################################################### -# logrotate settings -install -m 755 -d "${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d" -install -m 644 -p system/netdata.logrotate "${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name}" - -# ########################################################### -# Install freeipmi -install -m 4750 -p freeipmi.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/freeipmi.plugin" - -# ########################################################### -# Install apps.plugin -install -m 4750 -p apps.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/apps.plugin" - -# ########################################################### -# Install perf.plugin -install -m 4750 -p perf.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/perf.plugin" - -# ########################################################### -# Install cups.plugin -%if 0%{?centos_ver} != 6 && 0%{?centos_ver} != 7 -install -m 0750 -p cups.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/cups.plugin" -%endif - -# ########################################################### -# Install slabinfo.plugin -install -m 4750 -p slabinfo.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/slabinfo.plugin" - -# ########################################################### -# Install registry directory -install -m 755 -d "${RPM_BUILD_ROOT}%{_localstatedir}/lib/%{name}/registry" - -# ########################################################### -# Install netdata service -%if %{with systemd} -install -m 755 -d "${RPM_BUILD_ROOT}%{_unitdir}" -install -m 644 -p system/netdata.service "${RPM_BUILD_ROOT}%{_unitdir}/netdata.service" -%else -# install SYSV init stuff -install -d "${RPM_BUILD_ROOT}/etc/rc.d/init.d" -install -m 755 system/netdata-init-d \ - "${RPM_BUILD_ROOT}/etc/rc.d/init.d/netdata" -%endif - -# ############################################################ -# Package Go within netdata (TBD: Package it separately) -safe_sha256sum() { - # Within the contexct of the installer, we only use -c option that is common between the two commands - # We will have to reconsider if we start non-common options - if command -v sha256sum >/dev/null 2>&1; then - sha256sum $@ - elif command -v shasum >/dev/null 2>&1; then - shasum -a 256 $@ - else - fatal "I could not find a suitable checksum binary to use" - fi -} - -download_go() { - url="${1}" - dest="${2}" - - if command -v curl >/dev/null 2>&1; then - curl -sSL --connect-timeout 10 --retry 3 "${url}" > "${dest}" - elif command -v wget >/dev/null 2>&1; then - wget -T 15 -O - "${url}" > "${dest}" - else - echo >&2 - echo >&2 "Downloading go.d plugin from '${url}' failed because of missing mandatory packages." - echo >&2 "Either add packages or disable it by issuing '--disable-go' in the installer" - echo >&2 - exit 1 - fi -} - -install_go() { - # When updating this value, ensure correct checksums in packaging/go.d.checksums - GO_PACKAGE_VERSION="$(cat packaging/go.d.version)" - ARCH_MAP=( - 'i386::386' - 'i686::386' - 'x86_64::amd64' - 'aarch64::arm64' - 'armv64::arm64' - 'armv6l::arm' - 'armv7l::arm' - 'armv5tel::arm' - ) - - if [ -z "${NETDATA_DISABLE_GO+x}" ]; then - echo >&2 "Install go.d.plugin" - ARCH=$(uname -m) - OS=$(uname -s | tr '[:upper:]' '[:lower:]') - - for index in "${ARCH_MAP[@]}" ; do - KEY="${index%%::*}" - VALUE="${index##*::}" - if [ "$KEY" = "$ARCH" ]; then - ARCH="${VALUE}" - break - fi - done - tmp=$(mktemp -d /tmp/netdata-go-XXXXXX) - GO_PACKAGE_BASENAME="go.d.plugin-${GO_PACKAGE_VERSION}.${OS}-${ARCH}.tar.gz" - download_go "https://github.com/netdata/go.d.plugin/releases/download/${GO_PACKAGE_VERSION}/${GO_PACKAGE_BASENAME}" "${tmp}/${GO_PACKAGE_BASENAME}" - download_go "https://github.com/netdata/go.d.plugin/releases/download/${GO_PACKAGE_VERSION}/config.tar.gz" "${tmp}/config.tar.gz" - - if [ ! -f "${tmp}/${GO_PACKAGE_BASENAME}" ] || [ ! -f "${tmp}/config.tar.gz" ] || [ ! -s "${tmp}/config.tar.gz" ] || [ ! -s "${tmp}/${GO_PACKAGE_BASENAME}" ]; then - echo >&2 "Either check the error or consider disabling it by issuing '--disable-go' in the installer" - echo >&2 - return 1 - fi - - grep "${GO_PACKAGE_BASENAME}\$" "packaging/go.d.checksums" > "${tmp}/sha256sums.txt" 2>/dev/null - grep "config.tar.gz" "packaging/go.d.checksums" >> "${tmp}/sha256sums.txt" 2>/dev/null - - # Checksum validation - if ! (cd "${tmp}" && safe_sha256sum -c "sha256sums.txt"); then - - echo >&2 "go.d plugin checksum validation failure." - echo >&2 "Either check the error or consider disabling it by issuing '--disable-go' in the installer" - echo >&2 - - echo "go.d.plugin package files checksum validation failed." - exit 1 - fi - - # Install files - tar -xf "${tmp}/config.tar.gz" -C "${RPM_BUILD_ROOT}%{_libdir}/%{name}/conf.d/" - tar xf "${tmp}/${GO_PACKAGE_BASENAME}" - mv "${GO_PACKAGE_BASENAME/\.tar\.gz/}" "go.d.plugin" - rm -rf "${tmp}" - fi - return 0 -} -install_go -install -m 0640 -p go.d.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/go.d.plugin" - -%pre - -# User/Group creations, as needed -getent group netdata >/dev/null || groupadd -r netdata -getent group docker >/dev/null || groupadd -r docker -getent passwd netdata >/dev/null || \ - useradd -r -g netdata -G docker -s /sbin/nologin \ - -d %{contentdir} -c "netdata" netdata - -%post -%{netdata_init_post} - -%preun -%{netdata_init_preun} - -%postun -%{netdata_init_postun} - -%clean -rm -rf "${RPM_BUILD_ROOT}" - -%files -%doc README.md -%{_sysconfdir}/%{name} -%config(noreplace) %{_sysconfdir}/%{name}/netdata.conf - -%defattr(-,root,netdata) -%dir %{_libdir}/%{name} - -%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} - -%{_libdir}/%{name} - -%defattr(0755,netdata,netdata,0755) -%{_libexecdir}/%{name} -%{_sbindir}/%{name} - -%defattr(4750,root,netdata,0750) - -%dir %{_libexecdir}/%{name}/python.d -%dir %{_libexecdir}/%{name}/charts.d -%dir %{_libexecdir}/%{name}/plugins.d -%dir %{_libexecdir}/%{name}/node.d - -%caps(cap_dac_read_search,cap_sys_ptrace=ep) %attr(0550,root,netdata) %{_libexecdir}/%{name}/plugins.d/apps.plugin - -%if %{with netns} -# cgroup-network detects the network interfaces of CGROUPs -# it must be able to use setns() and run cgroup-network-helper.sh as root -# the helper script reads /proc/PID/fdinfo/* files, runs virsh, etc. -%caps(cap_setuid=ep) %attr(4550,root,netdata) %{_libexecdir}/%{name}/plugins.d/cgroup-network -%attr(0550,root,root) %{_libexecdir}/%{name}/plugins.d/cgroup-network-helper.sh -%endif - -# perf plugin -%caps(cap_setuid=ep) %attr(4750,root,netdata) %{_libexecdir}/%{name}/plugins.d/perf.plugin - -# perf plugin -%caps(cap_setuid=ep) %attr(4550,root,netdata) %{_libexecdir}/%{name}/plugins.d/slabinfo.plugin - -# freeipmi files -%caps(cap_setuid=ep) %attr(4550,root,netdata) %{_libexecdir}/%{name}/plugins.d/freeipmi.plugin -%dir %{_datadir}/%{name} - -%defattr(0750,netdata,netdata,0755) -%{_libdir}/%{name}/conf.d/ - -%if %{with systemd} -%{_unitdir}/netdata.service -%else -%{_sysconfdir}/rc.d/init.d/netdata -%endif - -# Enforce 0644 for files and 0755 for directories -# for the netdata web directory -%defattr(0644,root,netdata,0755) -%{_datadir}/%{name}/web - -# Enforce 0660 for files and 0770 for directories -# for the netdata lib, cache and log dirs -%defattr(0660,root,netdata,0770) -%attr(0770,netdata,netdata) %dir %{_localstatedir}/cache/%{name} -%attr(0755,netdata,root) %dir %{_localstatedir}/log/%{name} -%attr(0770,netdata,netdata) %dir %{_localstatedir}/lib/%{name} -%attr(0770,netdata,netdata) %dir %{_localstatedir}/lib/%{name}/registry - -# CUPS belongs to a different sub package -%if 0%{?centos_ver} != 6 && 0%{?centos_ver} != 7 -%exclude %{_libexecdir}/%{name}/plugins.d/cups.plugin - -%package plugin-cups -Summary: The Common Unix Printing System plugin for netdata -Group: Applications/System -Requires: cups >= 1.7 -Requires: netdata = %{version} - -%description plugin-cups - This is the Common Unix Printing System plugin for the netdata daemon. -Use this plugin to enable metrics collection from cupsd, the daemon running when CUPS is enabled on the system - -%files plugin-cups -%attr(0750,root,netdata) %{_libexecdir}/%{name}/plugins.d/cups.plugin -%endif - -%changelog -* Mon Nov 04 2019 Konstantinos Natsakis <konstantinos.natsakis@gmail.com> 0.0.0-10 -- Fix /etc/netdata permissions -* Mon Sep 23 2019 Konstantinos Natsakis <konstantinos.natsakis@gmail.com> 0.0.0-9 -- Do not build CUPS plugin subpackage on CentOS 6 and CentOS 7 -* Tue Aug 20 2019 Pavlos Emm. Katsoulakis <paul@netdat.acloud> - 0.0.0-8 -- Split CUPS functionality on separate package -* Fri Jun 28 2019 Pavlos Emm. Katsoulakis <paul@netdata.cloud> - 0.0.0-7 -- Raise the path overrides to the spec file level, not just the configure. -- Adjust tighter permissions on some folders, based on what we did on our installer -- Introduce go.d plugin download and install, to include it on the package (Temporarily, to become separate package on next iteration) -* Tue Jun 25 2019 Pavlos Emm. Katsoulakis <paul@netdata.cloud> - 0.0.0-6 -- Adjust dependency list: Some packages are missing on some distros, adopt to build successfully -* Mon Jun 24 2019 Pavlos Emm. Katsoulakis <paul@netdata.cloud> - 0.0.0-5 -Another pass on cleaning up pre/post installation steps -- Sync permission and ownership on files and directories -* Sun Jun 16 2019 Pavlos Emm. Katsoulakis <paul@netdata.cloud> - 0.0.0-4 -First draft refactor on package dependencies section -- Remove freeipmi/nfacct plugin flags. We auto-detect all plugins by decision -- Start refactor of package dependencies -- Add missing dependencies, with respect to distro peculiarities -- Adjust existing dependencies, so that distro-specific package names is applied -* Wed Jan 02 2019 Pawel Krupa <pkrupa@redhat.com> - 0.0.0-3 -- Temporary set version statically -- Fix changelog ordering -- Comment-out node.d configuration directory -* Wed Jan 02 2019 Pawel Krupa <pkrupa@redhat.com> - 0.0.0-2 -- Fix permissions for log files -* Sun Nov 15 2015 Alon Bar-Lev <alonbl@redhat.com> - 0.0.0-1 -- Initial add. - diff --git a/netdata.spec.in b/netdata.spec.in index 405e8f50e..ea2519603 100644 --- a/netdata.spec.in +++ b/netdata.spec.in @@ -5,6 +5,17 @@ #TODO: Temporary fix for the build-id error during go.d plugin set up %global _missing_build_ids_terminate_build 0 +# XXX: We are using automatic `Requires:` generation for libraries +# whenever possible, DO NOT LIST LIBRARY DEPENDENCIES UNLESS THE RESULTANT +# PACKAGE IS BROKEN WITHOUT THEM. +AutoReqProv: yes + +%if "@HAVE_LIBBPF@" == "1" +%global have_bpf 1 +%else +%global have_bpf 0 +%endif + # This is temporary and should eventually be resolved. This bypasses # the default rhel __os_install_post which throws a python compile # error. @@ -17,6 +28,9 @@ %define _libexecdir /usr/libexec %define _libdir /usr/lib +# Redefine centos_ver to standardize on a single macro +%{?rhel:%global centos_ver %rhel} + # # Conditional build: %bcond_without systemd # systemd @@ -90,6 +104,10 @@ Group: Applications/System Source0: https://github.com/netdata/%{name}/releases/download/%{version}/%{name}-%{version}.tar.gz URL: http://my-netdata.io +# Remove conflicting EPEL packages +Obsoletes: %{name}-conf +Obsoletes: %{name}-data + # ##################################################################### # Core build/install/runtime dependencies # ##################################################################### @@ -99,13 +117,14 @@ URL: http://my-netdata.io BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: make -BuildRequires: git +BuildRequires: git-core BuildRequires: autoconf %if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1140 BuildRequires: autoconf-archive BuildRequires: autogen %endif BuildRequires: automake +BuildRequires: cmake BuildRequires: pkgconfig BuildRequires: curl BuildRequires: findutils @@ -113,16 +132,22 @@ BuildRequires: zlib-devel BuildRequires: libuuid-devel BuildRequires: libuv-devel >= 1 BuildRequires: openssl-devel +%if 0%{?centos_ver} >= 8 || 0%{?fedora} +BuildRequires: libwebsockets-devel >= 3.2 +%endif %if 0%{?suse_version} BuildRequires: judy-devel BuildRequires: liblz4-devel -BuildRequires: netcat-openbsd -BuildRequires: json-glib-devel +BuildRequires: libjson-c-devel %else +%if 0%{?fedora} BuildRequires: Judy-devel BuildRequires: lz4-devel -BuildRequires: nc BuildRequires: json-c-devel +%else +BuildRequires: lz4-devel +BuildRequires: json-c-devel +%endif %endif # Core build requirements for service install @@ -130,32 +155,19 @@ BuildRequires: json-c-devel # Runtime dependencies # -Requires: python -Requires: zlib -%if 0%{?suse_version} -# for libuv, Requires version >= 1 -Requires: libuv1 -Requires: libJudy1 -Requires: json-glib -Requires: libuuid1 +%if 0%{?centos_ver} == 7 || 0%{?centos_ver} == 6 +Requires: python +%else +%if 0%{?centos_ver} == 8 +Requires: python38 %else -# for libuv, Requires version >= 1 -Requires: libuv >= 1 -Requires: Judy -Requires: json-c -Requires: libuuid +Requires: python3 +%endif %endif -Requires: openssl -Requires: lz4 # Core requirements for the install to succeed Requires(pre): /usr/sbin/groupadd Requires(pre): /usr/sbin/useradd -%if 0%{?suse_version} >= 1140 -Requires(post): libcap1 -%else -Requires(post): libcap -%endif %{netdata_initd_requires} @@ -171,24 +183,10 @@ BuildRequires: libmnl-devel BuildRequires: libnetfilter_acct-devel %endif -%if 0%{?suse_version} -Requires: libmnl0 -%else -Requires: libmnl -%endif - -%if 0%{?fedora} -Requires: libnetfilter_acct -%else -%if 0%{?suse_version} >= 1140 -Requires: libnetfilter_acct1 -%endif -%endif # end nfacct plugin dependencies # freeipmi plugin dependencies BuildRequires: freeipmi-devel -Requires: freeipmi # end - freeipmi plugin dependencies # CUPS plugin dependencies @@ -205,16 +203,6 @@ BuildRequires: libprotobuf-c-devel %else BuildRequires: protobuf-c-devel %endif - -%if 0%{?suse_version} -Requires: libsnappy1 -Requires: protobuf-c -Requires: libprotobuf15 -%else -Requires: snappy -Requires: protobuf-c -Requires: protobuf -%endif # end - prometheus remote write dependencies # ##################################################################### @@ -232,19 +220,36 @@ happened, on your systems and applications. %prep %setup -q -n %{name}-%{version} +export CFLAGS="${CFLAGS} -fPIC" && ${RPM_BUILD_DIR}/%{name}-%{version}/packaging/bundle-mosquitto.sh ${RPM_BUILD_DIR}/%{name}-%{version} +%if 0%{?centos_ver} >= 8 || 0%{?fedora} +export CFLAGS="${CFLAGS} -fPIC" && ${RPM_BUILD_DIR}/%{name}-%{version}/packaging/bundle-lws.sh ${RPM_BUILD_DIR}/%{name}-%{version} +%endif +# Only bundle libJudy if this isn't Fedora or SUSE +%if 0%{!?fedora:1} && 0%{!?suse_version:1} +export CFLAGS="${CFLAGS} -fPIC" && ${RPM_BUILD_DIR}/%{name}-%{version}/packaging/bundle-judy.sh ${RPM_BUILD_DIR}/%{name}-%{version} +%endif +%if 0%{?have_bpf} +export CFLAGS="${CFLAGS} -fPIC" && ${RPM_BUILD_DIR}/%{name}-%{version}/packaging/bundle-libbpf.sh ${RPM_BUILD_DIR}/%{name}-%{version} +%endif %build # Conf step autoreconf -ivf %configure \ + %if 0%{!?fedora:1} && 0%{!?suse_version:1} + --with-libJudy=externaldeps/libJudy \ + %endif + %if 0%{?centos_ver} >= 8 || 0%{?fedora} + --with-bundled-lws=externaldeps/libwebsockets \ + %endif --prefix="%{_prefix}" \ --sysconfdir="%{_sysconfdir}" \ --localstatedir="%{_localstatedir}" \ --libexecdir="%{_libexecdir}" \ - --libdir="%{_libdir}" \ + --libdir="%{_libdir}" \ --with-zlib \ --with-math \ - --with-user=netdata \ + --with-user=netdata # Build step %{__make} %{?_smp_mflags} @@ -256,8 +261,6 @@ autoreconf -ivf rm -rf "${RPM_BUILD_ROOT}" %{__make} %{?_smp_mflags} DESTDIR="${RPM_BUILD_ROOT}" install -find "${RPM_BUILD_ROOT}%{_localstatedir}" -name .keep -delete -print - install -m 644 -p system/netdata.conf "${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}" # ########################################################### @@ -278,6 +281,12 @@ install -m 4750 -p apps.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins. install -m 4750 -p perf.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/perf.plugin" # ########################################################### +# Install ebpf.plugin +%if 0%{?have_bpf} +install -m 4750 -p ebpf.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/ebpf.plugin" +%endif + +# ########################################################### # Install cups.plugin %if 0%{?centos_ver} != 6 && 0%{?centos_ver} != 7 install -m 0750 -p cups.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/cups.plugin" @@ -288,6 +297,11 @@ install -m 0750 -p cups.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins. install -m 4750 -p slabinfo.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/slabinfo.plugin" # ########################################################### +# Install cache and log directories +install -m 755 -d "${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}" +install -m 755 -d "${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}" + +# ########################################################### # Install registry directory install -m 755 -d "${RPM_BUILD_ROOT}%{_localstatedir}/lib/%{name}/registry" @@ -397,6 +411,11 @@ install_go() { install_go install -m 0640 -p go.d.plugin "${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d/go.d.plugin" +${RPM_BUILD_DIR}/%{name}-%{version}/packaging/bundle-dashboard.sh ${RPM_BUILD_DIR}/%{name}-%{version} ${RPM_BUILD_ROOT}%{_datadir}/%{name}/web +%if 0%{?have_bpf} +${RPM_BUILD_DIR}/%{name}-%{version}/packaging/bundle-ebpf.sh ${RPM_BUILD_DIR}/%{name}-%{version} ${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/plugins.d +%endif + %pre # User/Group creations, as needed @@ -422,53 +441,51 @@ rm -rf "${RPM_BUILD_ROOT}" %doc README.md %{_sysconfdir}/%{name} %config(noreplace) %{_sysconfdir}/%{name}/netdata.conf - -%defattr(-,root,netdata) -%dir %{_libdir}/%{name} - %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} - +%dir %{_libdir}/%{name} +%dir %{_datadir}/%{name} %{_libdir}/%{name} - -%defattr(0755,netdata,netdata,0755) +%{_libdir}/%{name}/conf.d/ %{_libexecdir}/%{name} %{_sbindir}/%{name} +%{_sbindir}/netdatacli +%{_sbindir}/netdata-claim.sh + +%if %{with systemd} +%{_unitdir}/netdata.service +%else +%{_sysconfdir}/rc.d/init.d/netdata +%endif -%defattr(4750,root,netdata,0750) +%defattr(0750,root,netdata,0750) %dir %{_libexecdir}/%{name}/python.d %dir %{_libexecdir}/%{name}/charts.d %dir %{_libexecdir}/%{name}/plugins.d %dir %{_libexecdir}/%{name}/node.d -%caps(cap_dac_read_search,cap_sys_ptrace=ep) %attr(0550,root,netdata) %{_libexecdir}/%{name}/plugins.d/apps.plugin +%{_libexecdir}/%{name}/python.d +%{_libexecdir}/%{name}/plugins.d +%{_libexecdir}/%{name}/node.d + +%caps(cap_dac_read_search,cap_sys_ptrace=ep) %attr(0750,root,netdata) %{_libexecdir}/%{name}/plugins.d/apps.plugin %if %{with netns} # cgroup-network detects the network interfaces of CGROUPs # it must be able to use setns() and run cgroup-network-helper.sh as root # the helper script reads /proc/PID/fdinfo/* files, runs virsh, etc. -%caps(cap_setuid=ep) %attr(4550,root,netdata) %{_libexecdir}/%{name}/plugins.d/cgroup-network -%attr(0550,root,root) %{_libexecdir}/%{name}/plugins.d/cgroup-network-helper.sh +%caps(cap_setuid=ep) %attr(4750,root,netdata) %{_libexecdir}/%{name}/plugins.d/cgroup-network +%attr(0750,root,netdata) %{_libexecdir}/%{name}/plugins.d/cgroup-network-helper.sh %endif # perf plugin %caps(cap_setuid=ep) %attr(4750,root,netdata) %{_libexecdir}/%{name}/plugins.d/perf.plugin # perf plugin -%caps(cap_setuid=ep) %attr(4550,root,netdata) %{_libexecdir}/%{name}/plugins.d/slabinfo.plugin +%caps(cap_setuid=ep) %attr(4750,root,netdata) %{_libexecdir}/%{name}/plugins.d/slabinfo.plugin # freeipmi files -%caps(cap_setuid=ep) %attr(4550,root,netdata) %{_libexecdir}/%{name}/plugins.d/freeipmi.plugin -%dir %{_datadir}/%{name} - -%defattr(0750,netdata,netdata,0755) -%{_libdir}/%{name}/conf.d/ - -%if %{with systemd} -%{_unitdir}/netdata.service -%else -%{_sysconfdir}/rc.d/init.d/netdata -%endif +%caps(cap_setuid=ep) %attr(4750,root,netdata) %{_libexecdir}/%{name}/plugins.d/freeipmi.plugin # Enforce 0644 for files and 0755 for directories # for the netdata web directory @@ -483,6 +500,9 @@ rm -rf "${RPM_BUILD_ROOT}" %attr(0770,netdata,netdata) %dir %{_localstatedir}/lib/%{name} %attr(0770,netdata,netdata) %dir %{_localstatedir}/lib/%{name}/registry +# Free IPMI belongs to a different sub-package +%exclude %{_libexecdir}/%{name}/plugins.d/freeipmi.plugin + # CUPS belongs to a different sub package %if 0%{?centos_ver} != 6 && 0%{?centos_ver} != 7 %exclude %{_libexecdir}/%{name}/plugins.d/cups.plugin @@ -501,7 +521,30 @@ Use this plugin to enable metrics collection from cupsd, the daemon running when %attr(0750,root,netdata) %{_libexecdir}/%{name}/plugins.d/cups.plugin %endif +%package plugin-freeipmi +Summary: FreeIPMI - The Intelligent Platform Management System +Group: Applications/System +Requires: freeipmi +Requires: netdata = %{version} + +%description plugin-freeipmi + The IPMI specification defines a set of interfaces for platform management. +It is implemented by a number vendors for system management. The features of IPMI that most users will be interested in +are sensor monitoring, system event monitoring, power control, and serial-over-LAN (SOL). + +%files plugin-freeipmi +%attr(4750,root,netdata) %{_libexecdir}/%{name}/plugins.d/freeipmi.plugin + %changelog +* Wed Sep 16 2020 Austin Hemmelgarn <austin@netdata.cloud> 0.0.0-14 +- Convert to using 'AutoReq: yes' for library dependencies. +* Thu Feb 13 2020 Austin Hemmelgarn <austin@netdata.cloud> 0.0.0-13 +- Add handling for custom libmosquitto fork +* Wed Jan 01 2020 Austin Hemmelgarn <austin@netdata.cloud> 0.0.0-12 +- Add explicit installation of log and cache directories +- Clean up build dependencies. +* Thu Dec 19 2019 Austin Hemmelgarn <austin@netdata.cloud> 0.0.0-11 +- Fix remaining ownership and permissions issues. * Mon Nov 04 2019 Konstantinos Natsakis <konstantinos.natsakis@gmail.com> 0.0.0-10 - Fix /etc/netdata permissions * Mon Sep 23 2019 Konstantinos Natsakis <konstantinos.natsakis@gmail.com> 0.0.0-9 |