golang-github-prometheus-al.../golang-github-prometheus-al...

180 lines
6.8 KiB
RPMSpec

# Generated by go2rpm 1.5.0
%bcond_with check
%global shortname prometheus-alertmanager
# https://github.com/prometheus/alertmanager
%global goipath github.com/prometheus/alertmanager
Version: 0.23.0
%gometa
%global common_description %{expand:
The Alertmanager handles alerts sent by client applications such as the
Prometheus server. It takes care of deduplicating, grouping, and routing them to
the correct receiver integrations such as email, PagerDuty, or OpsGenie. It also
takes care of silencing and inhibition of alerts.}
%global golicenses COPYRIGHT.txt LICENSE NOTICE
%global godocs doc examples MAINTAINERS.md README.md CHANGELOG.md SECURITY.md
Name: %{goname}
Release: %autorelease
Summary: Prometheus Alertmanager
# Upstream license specification: Apache-2.0
License: ASL 2.0
URL: %{gourl}
Source0: %{gosource}
Source1: %{shortname}.service
Source2: %{shortname}.sysusers
Source3: %{shortname}.conf
Source4: %{shortname}.yml
Source5: README.templates
Source6: %{shortname}.logrotate
# Replace defaults paths for config files
Patch0: defaults-paths.patch
BuildRequires: systemd-rpm-macros
BuildRequires: golang(github.com/alecthomas/units)
BuildRequires: golang(github.com/cenkalti/backoff/v4)
BuildRequires: golang(github.com/cespare/xxhash)
BuildRequires: golang(github.com/go-kit/kit/log)
BuildRequires: golang(github.com/go-kit/kit/log/level)
BuildRequires: golang(github.com/go-openapi/errors)
BuildRequires: golang(github.com/go-openapi/loads)
BuildRequires: golang(github.com/go-openapi/runtime)
BuildRequires: golang(github.com/go-openapi/runtime/client)
BuildRequires: golang(github.com/go-openapi/runtime/flagext)
BuildRequires: golang(github.com/go-openapi/runtime/middleware)
BuildRequires: golang(github.com/go-openapi/runtime/security)
BuildRequires: golang(github.com/go-openapi/spec)
BuildRequires: golang(github.com/go-openapi/strfmt)
BuildRequires: golang(github.com/go-openapi/swag)
BuildRequires: golang(github.com/go-openapi/validate)
BuildRequires: golang(github.com/gofrs/uuid)
BuildRequires: golang(github.com/gogo/protobuf/gogoproto)
BuildRequires: golang(github.com/gogo/protobuf/proto)
BuildRequires: golang(github.com/gogo/protobuf/types)
BuildRequires: golang(github.com/hashicorp/go-sockaddr)
BuildRequires: golang(github.com/hashicorp/memberlist)
BuildRequires: golang(github.com/jessevdk/go-flags)
BuildRequires: golang(github.com/matttproud/golang_protobuf_extensions/pbutil)
BuildRequires: golang(github.com/oklog/run)
BuildRequires: golang(github.com/oklog/ulid)
BuildRequires: golang(github.com/pkg/errors)
BuildRequires: golang(github.com/prometheus/client_golang/api)
BuildRequires: golang(github.com/prometheus/client_golang/prometheus)
BuildRequires: golang(github.com/prometheus/client_golang/prometheus/promhttp)
BuildRequires: golang(github.com/prometheus/common/config)
BuildRequires: golang(github.com/prometheus/common/model)
BuildRequires: golang(github.com/prometheus/common/promlog)
BuildRequires: golang(github.com/prometheus/common/promlog/flag)
BuildRequires: golang(github.com/prometheus/common/route)
BuildRequires: golang(github.com/prometheus/common/version)
BuildRequires: golang(github.com/prometheus/exporter-toolkit/web)
BuildRequires: golang(github.com/prometheus/exporter-toolkit/web/kingpinflag)
BuildRequires: golang(github.com/rs/cors)
BuildRequires: golang(github.com/shurcooL/vfsgen)
BuildRequires: golang(github.com/stretchr/testify/require)
BuildRequires: golang(github.com/xlab/treeprint)
BuildRequires: golang(golang.org/x/net/netutil)
BuildRequires: golang(gopkg.in/alecthomas/kingpin.v2)
BuildRequires: golang(gopkg.in/yaml.v2)
%if %{with check}
# Tests
BuildRequires: golang(github.com/kylelemons/godebug/pretty)
%endif
Requires(pre): shadow-utils
%description
%{common_description}
%gopkg
%prep
%goprep
%patch0 -p1
%build
LDFLAGS="-X github.com/prometheus/common/version.Version=%{version} \
-X github.com/prometheus/common/version.Revision=%{release} \
-X github.com/prometheus/common/version.Branch=tarball \
-X github.com/prometheus/common/version.BuildDate=$(date -u -d@$SOURCE_DATE_EPOCH +%%Y%%m%%d)"
for cmd in cmd/* ; do
%gobuild -o %{gobuilddir}/bin/$(basename $cmd) %{goipath}/$cmd
done
%install
%gopkginstall
install -m 0755 -vd %{buildroot}%{_bindir}
install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
mv %{buildroot}%{_bindir}/alertmanager %{buildroot}%{_bindir}/%{shortname}
pushd %{buildroot}%{_bindir}
ln -s %{shortname} alertmanager
popd
install -Dpm0644 %{S:4} %{buildroot}%{_sysconfdir}/prometheus/alertmanager.yml
install -Dpm0644 %{S:5} %{buildroot}%{_sysconfdir}/prometheus/alertmanager_templates/README.templates
mkdir -vp %{buildroot}%{_sharedstatedir}/prometheus/alertmanager
install -Dpm0644 %{S:1} %{buildroot}%{_unitdir}/%{shortname}.service
install -Dpm0644 %{S:2} %{buildroot}%{_sysusersdir}/%{shortname}.conf
install -Dpm0644 %{S:3} %{buildroot}%{_sysconfdir}/default/%{shortname}
install -Dpm0644 %{S:6} %{buildroot}%{_sysconfdir}/logrotate.d/%{shortname}
install -Dpm0644 template/default.tmpl %{buildroot}/%{_datadir}/prometheus/alertmanager/template/default.tmpl
# Build man pages.
mkdir -vp %{buildroot}/%{_mandir}/man1/
%{buildroot}%{_bindir}/%{shortname} --help-man > \
%{buildroot}/%{_mandir}/man1/%{shortname}.1
%{buildroot}%{_bindir}/amtool --help-man > \
%{buildroot}/%{_mandir}/man1/amtool.1
sed -i '/^ /d; /^.SH "NAME"/,+1c.SH "NAME"\nprometheus-alertmanager \\- The Prometheus alert manager' \
%{buildroot}/%{_mandir}/man1/%{shortname}.1
sed -i '/^ /d; /^.SH "NAME"/,+1c.SH "NAME"\namtool \\- Tooling for the Prometheus alert manager' \
%{buildroot}/%{_mandir}/man1/amtool.1
# Fix executable path in amtool examples
sed -i 's/\.\/amtool/amtool/' %{buildroot}/%{_mandir}/man1/amtool.1
%pre
%sysusers_create_compat %{SOURCE2}
%post
%systemd_post %{shortname}.service
%preun
%systemd_preun %{shortname}.service
%postun
%systemd_postun_with_restart %{shortname}.service
%if %{with check}
%check
%gocheck
%endif
%files
%license COPYRIGHT.txt LICENSE NOTICE
%doc doc examples MAINTAINERS.md README.md CHANGELOG.md SECURITY.md
%{_bindir}/*
%{_datadir}/prometheus
%{_mandir}/man1/%{shortname}.1*
%{_mandir}/man1/amtool.1*
%dir %{_sysconfdir}/prometheus
%config(noreplace) %{_sysconfdir}/prometheus/alertmanager.yml
%config(noreplace) %{_sysconfdir}/logrotate.d/%{shortname}
%{_sysconfdir}/prometheus/alertmanager_templates
%config(noreplace) %{_sysconfdir}/default/%{shortname}
%dir %attr(0755,prometheus,prometheus) %{_sharedstatedir}/prometheus
%dir %attr(0755,prometheus,prometheus) %{_sharedstatedir}/prometheus/alertmanager
%{_sysusersdir}/%{shortname}.conf
%{_unitdir}/%{shortname}.service
%gopkgfiles
%changelog
%autochangelog