Blob Blame History Raw
# 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