# Generated by go2rpm
%ifnarch s390x
%bcond_without check
%endif
%global builddate $(date +"%%Y%%m%%d-%%T")
%global commit_version "e4487274853c587717006eeda8804e597d120340"
# https://github.com/prometheus/prometheus
%global goipath github.com/prometheus/prometheus
Version: 2.24.1
%gometa
%global common_description %{expand:
The Prometheus monitoring system and time series database.}
%global golicenses LICENSE NOTICE
%global godocs docs CHANGELOG.md MAINTAINERS.md CODE_OF_CONDUCT.md\\\
CONTRIBUTING.md README.md RELEASE.md\\\
documentation
Name: %{goname}
Release: %autorelease
Summary: Prometheus monitoring system and time series database
# Upstream license specification: Apache-2.0
License: ASL 2.0
URL: %{gourl}
Source0: %{gosource}
# unzip Source0
# run 'make assets' in it
# rm -rf web/ui/react-app
# tar czvf web-ui-2.24.1.tar.gz web/ui
Source10: web-ui-%{version}.tar.gz
Source1: prometheus.service
Source2: prometheus
Source3: prometheus.yml
Source4: prometheus.conf
Source5: prometheus.logrotate
# Debian patch for default settings
Patch0: 02-Default_settings.patch
BuildRequires: systemd-rpm-macros
BuildRequires: golang(github.com/alecthomas/units)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws/credentials)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws/credentials/stscreds)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws/ec2metadata)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws/session)
BuildRequires: golang(github.com/aws/aws-sdk-go/service/ec2)
BuildRequires: golang(github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-10-01/compute)
BuildRequires: golang(github.com/Azure/azure-sdk-for-go/services/network/mgmt/2018-10-01/network)
BuildRequires: golang(github.com/Azure/go-autorest/autorest)
BuildRequires: golang(github.com/Azure/go-autorest/autorest/adal)
BuildRequires: golang(github.com/Azure/go-autorest/autorest/azure)
BuildRequires: golang(github.com/cespare/xxhash/v2)
BuildRequires: golang(github.com/digitalocean/godo)
BuildRequires: golang(github.com/docker/docker/api/types)
BuildRequires: golang(github.com/docker/docker/api/types/filters)
BuildRequires: golang(github.com/docker/docker/api/types/swarm)
BuildRequires: golang(github.com/docker/docker/client)
BuildRequires: golang(github.com/edsrzf/mmap-go)
BuildRequires: golang(github.com/go-kit/kit/log)
BuildRequires: golang(github.com/go-kit/kit/log/level)
BuildRequires: golang(github.com/go-logfmt/logfmt)
BuildRequires: golang(github.com/go-openapi/strfmt)
BuildRequires: golang(github.com/gogo/protobuf/gogoproto)
BuildRequires: golang(github.com/gogo/protobuf/proto)
BuildRequires: golang(github.com/golang/snappy)
BuildRequires: golang(github.com/google/pprof/profile)
BuildRequires: golang(github.com/gophercloud/gophercloud)
BuildRequires: golang(github.com/gophercloud/gophercloud/openstack)
BuildRequires: golang(github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/floatingips)
BuildRequires: golang(github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/hypervisors)
BuildRequires: golang(github.com/gophercloud/gophercloud/openstack/compute/v2/servers)
BuildRequires: golang(github.com/gophercloud/gophercloud/pagination)
BuildRequires: golang(github.com/hashicorp/consul/api)
BuildRequires: golang(github.com/hetznercloud/hcloud-go/hcloud)
# BuildRequires: golang(github.com/influxdata/influxdb/client/v2)
BuildRequires: golang(github.com/json-iterator/go)
BuildRequires: golang(github.com/miekg/dns)
BuildRequires: golang(github.com/mwitkow/go-conntrack)
BuildRequires: golang(github.com/oklog/run)
BuildRequires: golang(github.com/oklog/ulid)
BuildRequires: golang(github.com/opentracing-contrib/go-stdlib/nethttp)
BuildRequires: golang(github.com/opentracing/opentracing-go)
BuildRequires: golang(github.com/opentracing/opentracing-go/ext)
BuildRequires: golang(github.com/pkg/errors)
BuildRequires: golang(github.com/prometheus/alertmanager/api/v2/models)
BuildRequires: golang(github.com/prometheus/client_golang/api)
BuildRequires: golang(github.com/prometheus/client_golang/api/prometheus/v1)
BuildRequires: golang(github.com/prometheus/client_golang/prometheus)
BuildRequires: golang(github.com/prometheus/client_golang/prometheus/promauto)
BuildRequires: golang(github.com/prometheus/client_golang/prometheus/promhttp)
BuildRequires: golang(github.com/prometheus/client_golang/prometheus/testutil/promlint)
BuildRequires: golang(github.com/prometheus/client_model/go)
BuildRequires: golang(github.com/prometheus/common/config)
BuildRequires: golang(github.com/prometheus/common/expfmt)
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/server)
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/samuel/go-zookeeper/zk)
BuildRequires: golang(github.com/shurcooL/httpfs/filter)
BuildRequires: golang(github.com/shurcooL/httpfs/union)
BuildRequires: golang(github.com/shurcooL/vfsgen)
BuildRequires: golang(github.com/simonpasquier/klog-gokit)
BuildRequires: golang(github.com/simonpasquier/klog-gokit/v2)
BuildRequires: golang(github.com/stretchr/testify/require)
BuildRequires: golang(github.com/uber/jaeger-client-go)
BuildRequires: golang(github.com/uber/jaeger-client-go/config)
BuildRequires: golang(github.com/uber/jaeger-lib/metrics/prometheus)
BuildRequires: golang(go.uber.org/atomic)
BuildRequires: golang(go.uber.org/goleak)
BuildRequires: golang(golang.org/x/net/netutil)
BuildRequires: golang(golang.org/x/oauth2/google)
BuildRequires: golang(golang.org/x/sync/errgroup)
BuildRequires: golang(golang.org/x/sys/unix)
BuildRequires: golang(golang.org/x/time/rate)
BuildRequires: golang(google.golang.org/api/compute/v1)
BuildRequires: golang(google.golang.org/api/option)
BuildRequires: golang(gopkg.in/alecthomas/kingpin.v2)
BuildRequires: golang(gopkg.in/fsnotify/fsnotify.v1)
BuildRequires: golang(gopkg.in/yaml.v2)
BuildRequires: golang(gopkg.in/yaml.v3)
BuildRequires: golang(k8s.io/api/core/v1)
BuildRequires: golang(k8s.io/api/discovery/v1beta1)
BuildRequires: golang(k8s.io/api/networking/v1beta1)
BuildRequires: golang(k8s.io/apimachinery/pkg/apis/meta/v1)
BuildRequires: golang(k8s.io/apimachinery/pkg/fields)
BuildRequires: golang(k8s.io/apimachinery/pkg/labels)
BuildRequires: golang(k8s.io/apimachinery/pkg/runtime)
BuildRequires: golang(k8s.io/apimachinery/pkg/watch)
BuildRequires: golang(k8s.io/client-go/kubernetes)
BuildRequires: golang(k8s.io/client-go/rest)
BuildRequires: golang(k8s.io/client-go/tools/cache)
BuildRequires: golang(k8s.io/client-go/tools/metrics)
BuildRequires: golang(k8s.io/client-go/util/workqueue)
%if %{with check}
# Tests
BuildRequires: golang(github.com/prometheus/client_golang/prometheus/testutil)
BuildRequires: golang(k8s.io/apimachinery/pkg/types)
BuildRequires: golang(k8s.io/client-go/kubernetes/fake)
%endif
Requires(pre): /usr/bin/systemd-sysusers
%description
%{common_description}
%gopkg
%prep
%goprep
%autosetup -N -T -D -a 10 -n prometheus-%{version}
sed -i "s|klog \"k8s.io/klog\"|klog \"github.com/simonpasquier/klog-gokit\"|" $(find . -iname "*.go" -type f)
sed -i "s|klogv2 \"k8s.io/klog/v2\"|klogv2 \"github.com/simonpasquier/klog-gokit/v2\"|" $(find . -iname "*.go" -type f)
%patch0 -p1
%build
export LDFLAGS="-X github.com/prometheus/common/version.Version=%{version} \
-X github.com/prometheus/common/version.Revision=%{commit_version} \
-X github.com/prometheus/common/version.Branch=master \
-X github.com/prometheus/common/version.BuildUser=mockbuild \
-X github.com/prometheus/common/version.BuildDate=%{builddate} "
export BUILDTAGS="netgo builtinassets"
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}/
# Unit file
install -m 0755 -vd %{buildroot}%{_unitdir}
install -m 0644 -vp %{SOURCE1} %{buildroot}%{_unitdir}/
install -m 0755 -vd %{buildroot}%{_sysconfdir}
install -m 0755 -vd %{buildroot}%{_sysconfdir}/prometheus
install -m 0644 -vp %{SOURCE3} %{buildroot}%{_sysconfdir}/prometheus/
install -m 0755 -vd %{buildroot}%{_sysconfdir}/sysconfig
install -m 0644 -vp %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/
install -m 0755 -vd %{buildroot}%{_sysconfdir}/logrotate.d
install -m 0644 -vp %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/prometheus
install -m 0755 -vd %{buildroot}%{_sysusersdir}
install -m 0644 -vp %{SOURCE4} %{buildroot}%{_sysusersdir}/
mkdir -p %{buildroot}%{_sysconfdir}/prometheus/consoles
mkdir -p %{buildroot}%{_sysconfdir}/prometheus/console_libraries
mkdir -p %{buildroot}%{_sharedstatedir}/prometheus
%pre
%sysusers_create_package prometheus %{SOURCE4}
%post
%systemd_post prometheus.service
%preun
%systemd_preun prometheus.service
%postun
%systemd_postun_with_restart prometheus.service
%if %{with check}
%check
# scrape: needs network
# tsdb: https://github.com/prometheus/prometheus/issues/8393
%gocheck -t cmd -d scrape -d discovery/kubernetes -d web -d tsdb -d tsdb/chunks
%endif
%files
%license LICENSE NOTICE
%doc docs CHANGELOG.md MAINTAINERS.md CODE_OF_CONDUCT.md CONTRIBUTING.md
%doc README.md RELEASE.md documentation
%dir %{_sysconfdir}/prometheus/
%dir %{_sysconfdir}/prometheus/consoles
%dir %{_sysconfdir}/prometheus/console_libraries
%config(noreplace) %{_sysconfdir}/sysconfig/prometheus
%config(noreplace) %{_sysconfdir}/prometheus/prometheus.yml
%config(noreplace) %{_sysconfdir}/logrotate.d/prometheus
%{_bindir}/*
%{_unitdir}/prometheus.service
%{_sysusersdir}/prometheus.conf
%attr(0755,prometheus,prometheus) %{_sharedstatedir}/prometheus
%gopkgfiles
%changelog
%autochangelog