# Generated by go2rpm 1.6.0
%ifnarch s390x
%bcond_without check
%endif
%global shortname prometheus
# https://github.com/prometheus/prometheus
%global goipath github.com/prometheus/prometheus
Version: 2.32.1
%gometa
%global common_description %{expand:
The Prometheus monitoring system and time series database.}
%global golicenses LICENSE NOTICE
%global godocs docs CODE_OF_CONDUCT.md CONTRIBUTING.md\\\
MAINTAINERS.md SECURITY.md CHANGELOG.md README.md\\\
RELEASE.md
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.32.1.tar.gz web/ui
Source20: web-ui-%{version}.tar.gz
Source1: %{shortname}.service
Source2: %{shortname}.sysusers
Source3: %{shortname}.yml
Source4: %{shortname}.conf
Source5: %{shortname}.logrotate
Source6: README.consoles
# Debian patch for default settings
Patch0: defaults-paths.patch
BuildRequires: systemd-rpm-macros
BuildRequires: golang(github.com/aws/aws-sdk-go/aws)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws/awserr)
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/aws/aws-sdk-go/service/lightsail)
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/dennwc/varint)
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/envoyproxy/go-control-plane/envoy/config/core/v3)
BuildRequires: golang(github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3)
BuildRequires: golang(github.com/envoyproxy/protoc-gen-validate/validate)
BuildRequires: golang(github.com/fsnotify/fsnotify)
BuildRequires: golang(github.com/go-kit/log)
BuildRequires: golang(github.com/go-kit/log/level)
BuildRequires: golang(github.com/go-logfmt/logfmt)
BuildRequires: golang(github.com/go-openapi/strfmt)
BuildRequires: golang(github.com/go-zookeeper/zk)
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/kolo/xmlrpc)
BuildRequires: golang(github.com/linode/linodego)
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)
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/sigv4)
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/scaleway/scaleway-sdk-go/api/baremetal/v1)
BuildRequires: golang(github.com/scaleway/scaleway-sdk-go/api/instance/v1)
BuildRequires: golang(github.com/scaleway/scaleway-sdk-go/scw)
BuildRequires: golang(github.com/shurcooL/httpfs/filter)
BuildRequires: golang(github.com/shurcooL/httpfs/union)
BuildRequires: golang(github.com/shurcooL/vfsgen)
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(google.golang.org/genproto/googleapis/api/annotations)
BuildRequires: golang(google.golang.org/protobuf/encoding/protojson)
BuildRequires: golang(google.golang.org/protobuf/proto)
BuildRequires: golang(google.golang.org/protobuf/reflect/protoreflect)
BuildRequires: golang(google.golang.org/protobuf/reflect/protoregistry)
BuildRequires: golang(google.golang.org/protobuf/runtime/protoimpl)
BuildRequires: golang(google.golang.org/protobuf/types/known/anypb)
BuildRequires: golang(gopkg.in/alecthomas/kingpin.v2)
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/v1)
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/util/version)
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/clientcmd)
BuildRequires: golang(k8s.io/client-go/tools/metrics)
BuildRequires: golang(k8s.io/client-go/util/workqueue)
BuildRequires: golang(github.com/simonpasquier/klog-gokit)
BuildRequires: golang(github.com/simonpasquier/klog-gokit/v2)
%if %{with check}
# Tests
BuildRequires: golang(k8s.io/apimachinery/pkg/types)
BuildRequires: golang(k8s.io/apimachinery/pkg/version)
BuildRequires: golang(k8s.io/client-go/discovery/fake)
BuildRequires: golang(k8s.io/client-go/kubernetes/fake)
%endif
Requires(pre): shadow-utils
%description
%{common_description}
%gopkg
%prep
%goprep
%autosetup -N -T -D -a 20 -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)
%patch -P0 -p1
%build
export BUILDTAGS="netgo builtinassets"
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}/
install -Dpm0644 %{S:2} %{buildroot}%{_sysusersdir}/%{shortname}.conf
install -Dpm0644 %{S:1} %{buildroot}%{_unitdir}/%{shortname}.service
install -Dpm0644 %{S:4} %{buildroot}%{_sysconfdir}/default/%{shortname}
install -Dpm0644 %{S:3} %{buildroot}%{_sysconfdir}/prometheus/prometheus.yml
install -Dpm0644 %{S:5} %{buildroot}%{_sysconfdir}/logrotate.d/prometheus
mkdir -vp %{buildroot}%{_sysconfdir}/prometheus/consoles
install -Dpm0644 %{S:6} %{buildroot}%{_sysconfdir}/prometheus/consoles/README.consoles
mkdir -vp %{buildroot}%{_sysconfdir}/prometheus/console_libraries
install -Dpm0644 %{S:6} %{buildroot}%{_sysconfdir}/prometheus/console_libraries/README.consoles
mkdir -vp %{buildroot}%{_sharedstatedir}/prometheus
# Build man pages.
mkdir -vp %{buildroot}/%{_mandir}/man1/
%{buildroot}%{_bindir}/%{shortname} --help-man > \
%{buildroot}/%{_mandir}/man1/%{shortname}.1
%{buildroot}%{_bindir}/promtool --help-man > \
%{buildroot}/%{_mandir}/man1/promtool.1
sed -i '/^ /d; /^.SH "NAME"/,+1c.SH "NAME"\nprometheus \\- The Prometheus monitoring server' \
%{buildroot}/%{_mandir}/man1/%{shortname}.1
sed -i '/^ /d; /^.SH "NAME"/,+1c.SH "NAME"\npromtool \\- Tooling for the Prometheus monitoring system' \
%{buildroot}/%{_mandir}/man1/promtool.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
# scrape: needs network
%gocheck -t cmd -d scrape -d template -d promql -t discovery -d web -d config
%endif
%files
%license LICENSE NOTICE
%doc docs CODE_OF_CONDUCT.md CONTRIBUTING.md MAINTAINERS.md SECURITY.md
%doc CHANGELOG.md README.md RELEASE.md
%{_bindir}/*
%dir %{_sysconfdir}/prometheus/
%dir %{_sysconfdir}/prometheus/consoles
%dir %{_sysconfdir}/prometheus/console_libraries
%config(noreplace) %{_sysconfdir}/prometheus/prometheus.yml
%config(noreplace) %{_sysconfdir}/default/%{shortname}
%config(noreplace) %{_sysconfdir}/logrotate.d/prometheus
%{_sysconfdir}/prometheus/consoles/README.consoles
%{_sysconfdir}/prometheus/console_libraries/README.consoles
%{_mandir}/man1/%{shortname}.1*
%{_mandir}/man1/promtool.1*
%{_unitdir}/prometheus.service
%{_sysusersdir}/prometheus.conf
%dir %attr(0755,prometheus,prometheus) %{_sharedstatedir}/prometheus
%gopkgfiles
%changelog
%autochangelog