File node_exporter.spec of Package node_exporter
%define realname node_exporter
%define realver 1.9.1
%define srcext tar.gz
%define promu_ver 0.17.0
%if %{defined suse_version}
%if ! %{defined _fillupdir}
%define _fillupdir /var/adm/fillup-templates
%endif
%define sysconffile %{_fillupdir}/sysconfig.node_exporter
%else
%define sysconffile %{_sysconfdir}/sysconfig/node_exporter
%endif
# Common info
Name: %{realname}
Version: %{realver}
Release: wiz%{?extraver:0.}1%{?dist}
License: Apache-2.0
Group: System/Monitoring
URL: https://github.com/prometheus/node_exporter
Summary: Exporter for machine metrics
# Install-time parameters
Requires: systemd
%if "%{expand:%_vendor}" == "suse"
Requires: %{fillup_prereq}
%endif
# Build-time parameters
BuildRequires: go >= 1.10
BuildRequires: systemd-devel
BuildRoot: %{_tmppath}/%{name}-root
Source0: https://codeload.github.com/prometheus/node_exporter/%{srcext}/refs/tags/v%{realver}#/%{realname}-%{realver}%{?extraver}.%{srcext}
Source1: https://codeload.github.com/prometheus/promu/%{srcext}/refs/tags/v%{promu_ver}#/promu-%{promu_ver}.%{srcext}
# go mod vendor -v && tar -Jcvf ../promu-vendor.tar.xz vendor && rm -rf vendor/
Source2: promu-vendor.tar.xz
# go mod vendor -v && tar -Jcvf ../node-vendor.tar.xz vendor && rm -rf vendor/
Source3: node-vendor.tar.xz
# Configs
Source12: node_exporter.sysconfig
Source13: node_exporter.service
%description
Prometheus exporter for hardware and OS metrics exposed by *NIX kernels, written in Go with pluggable metric collectors.
# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{realver}%{?extraver} -a1 -a3
# Add flags to skip debug symbols
%{__sed} -ri \
-e '/^\s*flags:/ s|$| -gcflags=all=-dwarf=false -buildmode=pie -mod=vendor -v|' \
-e '/^\s*ldflags:/ a\ -s\n -w' \
.promu.yml
# Build step (compile/build binaries, documentation, etc)
%build
_CFLAGS='%{optflags}'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,-z,now -Wl,-z,relro'
export GOPATH=$(pwd -P)/gomodules
export GOCACHE=$(pwd -P)/.gocache
export GOTRACEBACK=crash
export CGO_ENABLED=1
export CGO_CFLAGS="$_CFLAGS"
export CGO_LDFLAGS="$_LDFLAGS"
cd promu-%{promu_ver}
tar -Jxf %{S:2}
go build -v -mod=vendor -o ../bin/promu
cd ..
%{__make} %{?_smp_mflags} build \
PROMU=$(pwd -P)/bin/promu
# Install built stuff
%install
# Install binaries
%{__install} -D -m0755 node_exporter %{buildroot}%{_bindir}/node_exporter
# Install sysconfig file
%{__install} -D -m0644 %{S:12} %{buildroot}%{sysconffile}
# Systemd unit file
%{__install} -D -m0644 %{S:13} %{buildroot}%{_unitdir}/node_exporter.service
# Cleanup
%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
# Files list
%files
%defattr(-,root,root)
%license LICENSE
%doc CHANGELOG.md MAINTAINERS.md NOTICE README.md
%doc docs
%{_bindir}/*
%config(noreplace) %{sysconffile}
%{_unitdir}/node_exporter.service
%if "%{expand:%_vendor}" == "suse"
%pre
%{service_add_pre node_exporter.service}
%post
%{fillup_only}
%{service_add_post node_exporter.service}
%preun
%{service_del_preun node_exporter.service}
%{stop_on_removal node_exporter.service}
%postun
%{service_del_postun node_exporter.service}
%{restart_on_update node_exporter.service}
%endif
%changelog