Accepting request 753312 from home:witekbedyk:branches:server:monitoring
- Revert the spec file and make script - Remove PhantomJS dependency OBS-URL: https://build.opensuse.org/request/show/753312 OBS-URL: https://build.opensuse.org/package/show/server:monitoring/grafana?expand=0&rev=28
This commit is contained in:
parent
a647090d27
commit
89794e01f3
@ -1,13 +0,0 @@
|
||||
diff --git a/pkg/api/login_oauth.go b/pkg/api/login_oauth.go
|
||||
index a46c97238..76fc8480c 100644
|
||||
--- a/pkg/api/login_oauth.go
|
||||
+++ b/pkg/api/login_oauth.go
|
||||
@@ -125,7 +125,7 @@ func (hs *HTTPServer) OAuthLogin(ctx *m.ReqContext) {
|
||||
oauthCtx := context.WithValue(context.Background(), oauth2.HTTPClient, oauthClient)
|
||||
|
||||
// get token from provider
|
||||
- token, err := connect.Exchange(oauthCtx, code)
|
||||
+ token, err := connect.Exchange(oauthCtx, code, oauth2.AccessTypeOnline)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "login.OAuthLogin(NewTransportWithCode)", err)
|
||||
return
|
@ -1,208 +0,0 @@
|
||||
diff --git a/pkg/cmd/grafana-server/server.go b/pkg/cmd/grafana-server/server.go
|
||||
index 85d6db43e..6de99b58b 100644
|
||||
--- a/pkg/cmd/grafana-server/server.go
|
||||
+++ b/pkg/cmd/grafana-server/server.go
|
||||
@@ -23,7 +23,6 @@ import (
|
||||
_ "github.com/grafana/grafana/pkg/infra/metrics"
|
||||
_ "github.com/grafana/grafana/pkg/infra/remotecache"
|
||||
_ "github.com/grafana/grafana/pkg/infra/serverlock"
|
||||
- _ "github.com/grafana/grafana/pkg/infra/tracing"
|
||||
_ "github.com/grafana/grafana/pkg/infra/usagestats"
|
||||
"github.com/grafana/grafana/pkg/login"
|
||||
"github.com/grafana/grafana/pkg/login/social"
|
||||
diff --git a/pkg/infra/tracing/tracing.go b/pkg/infra/tracing/tracing.go
|
||||
deleted file mode 100644
|
||||
index d1511a533..000000000
|
||||
--- a/pkg/infra/tracing/tracing.go
|
||||
+++ /dev/null
|
||||
@@ -1,148 +0,0 @@
|
||||
-package tracing
|
||||
-
|
||||
-import (
|
||||
- "context"
|
||||
- "fmt"
|
||||
- "io"
|
||||
- "strings"
|
||||
-
|
||||
- "github.com/grafana/grafana/pkg/infra/log"
|
||||
- "github.com/grafana/grafana/pkg/registry"
|
||||
- "github.com/grafana/grafana/pkg/setting"
|
||||
-
|
||||
- opentracing "github.com/opentracing/opentracing-go"
|
||||
- jaegercfg "github.com/uber/jaeger-client-go/config"
|
||||
- "github.com/uber/jaeger-client-go/zipkin"
|
||||
-)
|
||||
-
|
||||
-func init() {
|
||||
- registry.RegisterService(&TracingService{})
|
||||
-}
|
||||
-
|
||||
-type TracingService struct {
|
||||
- enabled bool
|
||||
- address string
|
||||
- customTags map[string]string
|
||||
- samplerType string
|
||||
- samplerParam float64
|
||||
- log log.Logger
|
||||
- closer io.Closer
|
||||
- zipkinPropagation bool
|
||||
- disableSharedZipkinSpans bool
|
||||
-
|
||||
- Cfg *setting.Cfg `inject:""`
|
||||
-}
|
||||
-
|
||||
-func (ts *TracingService) Init() error {
|
||||
- ts.log = log.New("tracing")
|
||||
- ts.parseSettings()
|
||||
-
|
||||
- if ts.enabled {
|
||||
- ts.initGlobalTracer()
|
||||
- }
|
||||
-
|
||||
- return nil
|
||||
-}
|
||||
-
|
||||
-func (ts *TracingService) parseSettings() {
|
||||
- var section, err = ts.Cfg.Raw.GetSection("tracing.jaeger")
|
||||
- if err != nil {
|
||||
- return
|
||||
- }
|
||||
-
|
||||
- ts.address = section.Key("address").MustString("")
|
||||
- if ts.address != "" {
|
||||
- ts.enabled = true
|
||||
- }
|
||||
-
|
||||
- ts.customTags = splitTagSettings(section.Key("always_included_tag").MustString(""))
|
||||
- ts.samplerType = section.Key("sampler_type").MustString("")
|
||||
- ts.samplerParam = section.Key("sampler_param").MustFloat64(1)
|
||||
- ts.zipkinPropagation = section.Key("zipkin_propagation").MustBool(false)
|
||||
- ts.disableSharedZipkinSpans = section.Key("disable_shared_zipkin_spans").MustBool(false)
|
||||
-}
|
||||
-
|
||||
-func (ts *TracingService) initGlobalTracer() error {
|
||||
- cfg := jaegercfg.Configuration{
|
||||
- ServiceName: "grafana",
|
||||
- Disabled: !ts.enabled,
|
||||
- Sampler: &jaegercfg.SamplerConfig{
|
||||
- Type: ts.samplerType,
|
||||
- Param: ts.samplerParam,
|
||||
- },
|
||||
- Reporter: &jaegercfg.ReporterConfig{
|
||||
- LogSpans: false,
|
||||
- LocalAgentHostPort: ts.address,
|
||||
- },
|
||||
- }
|
||||
-
|
||||
- jLogger := &jaegerLogWrapper{logger: log.New("jaeger")}
|
||||
-
|
||||
- options := []jaegercfg.Option{}
|
||||
- options = append(options, jaegercfg.Logger(jLogger))
|
||||
-
|
||||
- for tag, value := range ts.customTags {
|
||||
- options = append(options, jaegercfg.Tag(tag, value))
|
||||
- }
|
||||
-
|
||||
- if ts.zipkinPropagation {
|
||||
- zipkinPropagator := zipkin.NewZipkinB3HTTPHeaderPropagator()
|
||||
- options = append(options,
|
||||
- jaegercfg.Injector(opentracing.HTTPHeaders, zipkinPropagator),
|
||||
- jaegercfg.Extractor(opentracing.HTTPHeaders, zipkinPropagator),
|
||||
- )
|
||||
-
|
||||
- if !ts.disableSharedZipkinSpans {
|
||||
- options = append(options, jaegercfg.ZipkinSharedRPCSpan(true))
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- tracer, closer, err := cfg.NewTracer(options...)
|
||||
- if err != nil {
|
||||
- return err
|
||||
- }
|
||||
-
|
||||
- opentracing.InitGlobalTracer(tracer)
|
||||
-
|
||||
- ts.closer = closer
|
||||
-
|
||||
- return nil
|
||||
-}
|
||||
-
|
||||
-func (ts *TracingService) Run(ctx context.Context) error {
|
||||
- <-ctx.Done()
|
||||
-
|
||||
- if ts.closer != nil {
|
||||
- ts.log.Info("Closing tracing")
|
||||
- ts.closer.Close()
|
||||
- }
|
||||
-
|
||||
- return nil
|
||||
-}
|
||||
-
|
||||
-func splitTagSettings(input string) map[string]string {
|
||||
- res := map[string]string{}
|
||||
-
|
||||
- tags := strings.Split(input, ",")
|
||||
- for _, v := range tags {
|
||||
- kv := strings.Split(v, ":")
|
||||
- if len(kv) > 1 {
|
||||
- res[kv[0]] = kv[1]
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return res
|
||||
-}
|
||||
-
|
||||
-type jaegerLogWrapper struct {
|
||||
- logger log.Logger
|
||||
-}
|
||||
-
|
||||
-func (jlw *jaegerLogWrapper) Error(msg string) {
|
||||
- jlw.logger.Error(msg)
|
||||
-}
|
||||
-
|
||||
-func (jlw *jaegerLogWrapper) Infof(format string, args ...interface{}) {
|
||||
- msg := fmt.Sprintf(format, args...)
|
||||
- jlw.logger.Info(msg)
|
||||
-}
|
||||
diff --git a/pkg/infra/tracing/tracing_test.go b/pkg/infra/tracing/tracing_test.go
|
||||
deleted file mode 100644
|
||||
index 27e4de777..000000000
|
||||
--- a/pkg/infra/tracing/tracing_test.go
|
||||
+++ /dev/null
|
||||
@@ -1,36 +0,0 @@
|
||||
-package tracing
|
||||
-
|
||||
-import "testing"
|
||||
-
|
||||
-func TestGroupSplit(t *testing.T) {
|
||||
- tests := []struct {
|
||||
- input string
|
||||
- expected map[string]string
|
||||
- }{
|
||||
- {
|
||||
- input: "tag1:value1,tag2:value2",
|
||||
- expected: map[string]string{
|
||||
- "tag1": "value1",
|
||||
- "tag2": "value2",
|
||||
- },
|
||||
- },
|
||||
- {
|
||||
- input: "",
|
||||
- expected: map[string]string{},
|
||||
- },
|
||||
- {
|
||||
- input: "tag1",
|
||||
- expected: map[string]string{},
|
||||
- },
|
||||
- }
|
||||
-
|
||||
- for _, test := range tests {
|
||||
- tags := splitTagSettings(test.input)
|
||||
- for k, v := range test.expected {
|
||||
- value, exists := tags[k]
|
||||
- if !exists || value != v {
|
||||
- t.Errorf("tags does not match %v ", test)
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-}
|
1037
003-new-files.patch
1037
003-new-files.patch
File diff suppressed because it is too large
Load Diff
@ -1,24 +0,0 @@
|
||||
Index: grafana-6.4.3/conf/defaults.ini
|
||||
===================================================================
|
||||
--- grafana-6.4.3.orig/conf/defaults.ini
|
||||
+++ grafana-6.4.3/conf/defaults.ini
|
||||
@@ -12,16 +12,16 @@ instance_name = ${HOSTNAME}
|
||||
#################################### Paths ###############################
|
||||
[paths]
|
||||
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
|
||||
-data = data
|
||||
+data = /var/lib/grafana
|
||||
|
||||
# Temporary files in `data` directory older than given duration will be removed
|
||||
temp_data_lifetime = 24h
|
||||
|
||||
# Directory where grafana can store logs
|
||||
-logs = data/log
|
||||
+logs = /var/log/grafana
|
||||
|
||||
# Directory where grafana will automatically scan and look for plugins
|
||||
-plugins = data/plugins
|
||||
+plugins = /var/lib/grafana/plugins
|
||||
|
||||
# folder that contains provisioning config files that grafana will apply on startup and while running.
|
||||
provisioning = conf/provisioning
|
39
Makefile
Normal file
39
Makefile
Normal file
@ -0,0 +1,39 @@
|
||||
NAME = grafana
|
||||
SPEC = $(NAME).spec
|
||||
|
||||
default: verify-deps clean tar
|
||||
|
||||
verify-deps:
|
||||
@which yarn >/dev/null 2>&1 || ( echo "yarn not found; run \`sudo npm install -g yarn\`" && false )
|
||||
@which grunt >/dev/null 2>&1 || ( echo "grunt not found; run \`sudo npm install -g grunt-cli\`" && false )
|
||||
|
||||
clean:
|
||||
rm -f $(NAME)-*.tar $(NAME)-*.tar.xz
|
||||
|
||||
tar:
|
||||
osc service disabledrun
|
||||
@version=$$( awk '/^Version:/ {print $$2}' $(SPEC) ) && \
|
||||
echo "Package version is $$version" && \
|
||||
basename=$(NAME)-$$version && \
|
||||
tar=$$basename.tar && \
|
||||
tmpdir=$$(mktemp -d -p .) && \
|
||||
cd $$tmpdir && \
|
||||
tar -xf ../$$tar && \
|
||||
cd $$basename && \
|
||||
# exclude the phantomjs-prebuilt binary module from the webpack \
|
||||
sed -i '/phantomjs-prebuilt/d' package.json && \
|
||||
# nuke grunt task for copying phantomjs \
|
||||
rm -f scripts/grunt/options/phantomjs.js && \
|
||||
sed -i '/phantomjs/d' scripts/grunt/*.js && \
|
||||
yarn install --pure-lockfile && \
|
||||
grunt release && \
|
||||
cp -pr tmp/public . && \
|
||||
cp -pr tmp/tools . && \
|
||||
cd .. && \
|
||||
echo "Updating $$basename/tools $$basename/public in tarball..." && \
|
||||
tar -rf ../$$tar $$basename/tools $$basename/public && \
|
||||
# remove go.mod and go.sum as we build exclusively using vendor deps \
|
||||
tar -f ../$$tar --delete $$basename/go.mod $$basename/go.sum && \
|
||||
cd .. && \
|
||||
xz $$tar && \
|
||||
rm -rf $$tmpdir
|
27
README
Normal file
27
README
Normal file
@ -0,0 +1,27 @@
|
||||
|
||||
The tarball is generated via the OBS source service, but Grafana
|
||||
needs to ship the compiled frontend assets as well, which have to
|
||||
be built by running yarn and grunt inside the source tree (see
|
||||
https://github.com/grafana/grafana#building-frontend-assets).
|
||||
This can't be done at build time on OBS, because it involves
|
||||
downloading and installing packages from the internet, so instead
|
||||
we have a Makefile which does the following:
|
||||
|
||||
- Runs `osc service disabledrun` to get the latest source tarball
|
||||
- Unpacks the tarball to a temporary directory
|
||||
- Runs `yarn install --pure-lockfile && grunt release`
|
||||
- Adds the generated "vendor" and "public" content to the tarball,
|
||||
then compresses it with xz.
|
||||
- The tarball can then be used by OBS to build an RPM.
|
||||
|
||||
In order for this to work you need to have npm >= 6, < 12, yarn and
|
||||
grunt installed. To get set up, run:
|
||||
|
||||
# zypper in npm10
|
||||
# npm install -g yarn
|
||||
# npm install -g grunt-cli
|
||||
|
||||
Then, to package a new release of Grafana, run `make` then `osc ci`
|
||||
and you should be good.
|
||||
|
||||
Please direct any questions to Tim Serong <tserong@suse.com>
|
13
_service
Normal file
13
_service
Normal file
@ -0,0 +1,13 @@
|
||||
<services>
|
||||
<service name="tar_scm" mode="disabled">
|
||||
<param name="url">https://github.com/grafana/grafana</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="exclude">.git</param>
|
||||
<param name="versionformat">6.4.3</param>
|
||||
<param name="revision">v6.4.3</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
</service>
|
||||
<service name="set_version" mode="disabled">
|
||||
<param name="basename">grafana</param>
|
||||
</service>
|
||||
</services>
|
6
_servicedata
Normal file
6
_servicedata
Normal file
@ -0,0 +1,6 @@
|
||||
<servicedata>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://github.com/grafana/grafana</param>
|
||||
<param name="changesrevision">3a2bfb7e3809a193125f0dbb8109e95cbf52db3e</param>
|
||||
</service>
|
||||
</servicedata>
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2ed2bbaae731c0d168800ed41af2bd18e3df50abb6c9852347d4488a5cc8d63b
|
||||
size 13805699
|
3
grafana-6.4.3.tar.xz
Normal file
3
grafana-6.4.3.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5cb6e8bf9f1080022dc169fa29afbb5876acbc5adba2c4420a8dbf1ef9a2aa4c
|
||||
size 18172892
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 03 15:09:41 UTC 2019 - witold.bedyk@suse.com
|
||||
|
||||
- Revert the spec file and make script
|
||||
- Remove PhantomJS dependency
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 16 19:29:48 UTC 2019 - ecsos@opensuse.org
|
||||
|
||||
|
659
grafana.spec
659
grafana.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package grafana
|
||||
#
|
||||
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2019 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -16,501 +16,87 @@
|
||||
#
|
||||
|
||||
|
||||
# Unbundle grafana vendor sources and instead use BuildRequires
|
||||
# only on platforms that have enough golang devel support.
|
||||
%global unbundle_vendor_sources 0
|
||||
%define GRAFANA_USER %{name}
|
||||
%define GRAFANA_GROUP %{name}
|
||||
%define GRAFANA_HOME %{_datadir}/%{name}
|
||||
|
||||
# omit golang debugsource, see BZ995136 and related
|
||||
%global _debugsource_template %{nil}
|
||||
%global GRAFANA_USER %{name}
|
||||
%global GRAFANA_GROUP %{name}
|
||||
%global GRAFANA_HOME %{_datadir}/%{name}
|
||||
#Compat macro for new _fillupdir macro introduced in Nov 2017
|
||||
%if ! %{defined _fillupdir}
|
||||
%define _fillupdir /var/adm/fillup-templates
|
||||
%endif
|
||||
|
||||
Name: grafana
|
||||
Version: 6.4.3
|
||||
Release: 1%{?dist}
|
||||
Summary: Metrics dashboard and graph editor
|
||||
Release: 0
|
||||
Summary: Dashboards and editors for Graphite, InfluxDB, OpenTSDB
|
||||
License: Apache-2.0
|
||||
Group: System/Monitoring
|
||||
URL: https://grafana.org
|
||||
# Source0 contains the tagged upstream sources
|
||||
Source0: https://github.com/grafana/grafana/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||
# Source1 contains the front-end javascript modules bundled into a webpack
|
||||
Source1: grafana_webpack-%{version}.tar.gz
|
||||
# Source2 is the script to create the above webpack from grafana sources
|
||||
Source2: make_grafana_webpack.sh
|
||||
# rpmlintrc
|
||||
Source99: %{name}-rpmlintrc
|
||||
# Patches for upstream
|
||||
Patch1: 001-login-oauth-use-oauth2-exchange.patch
|
||||
Patch2: 002-remove-jaeger-tracing.patch
|
||||
Patch3: 003-new-files.patch
|
||||
Patch4: 004-distro-defaults-ini.patch
|
||||
#
|
||||
Requires(pre): shadow
|
||||
Requires(post): %insserv_prereq
|
||||
URL: http://grafana.org/
|
||||
Source: %{name}-%{version}.tar.xz
|
||||
Source1: %{name}-rpmlintrc
|
||||
# Instructions on the build process
|
||||
Source2: README
|
||||
# Makefile to automate build process
|
||||
Source3: Makefile
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: gettext-tools
|
||||
BuildRequires: config(krb5)
|
||||
BuildRequires: go >= 1.12.9
|
||||
BuildRequires: go >= 1.11
|
||||
BuildRequires: golang-packaging
|
||||
# Without cloudwatch you can not add data sources
|
||||
Requires: grafana-cloudwatch = %{version}-%{release}
|
||||
|
||||
BuildRequires: shadow
|
||||
Requires(post): %insserv_prereq
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
%{?systemd_requires}
|
||||
|
||||
Recommends: grafana-elasticsearch = %{version}-%{release}
|
||||
Recommends: grafana-azure-monitor = %{version}-%{release}
|
||||
Recommends: grafana-graphite = %{version}-%{release}
|
||||
Recommends: grafana-influxdb = %{version}-%{release}
|
||||
Recommends: grafana-loki = %{version}-%{release}
|
||||
Recommends: grafana-mssql = %{version}-%{release}
|
||||
Recommends: grafana-mysql = %{version}-%{release}
|
||||
Recommends: grafana-opentsdb = %{version}-%{release}
|
||||
Recommends: grafana-postgres = %{version}-%{release}
|
||||
Recommends: grafana-prometheus = %{version}-%{release}
|
||||
Recommends: grafana-stackdriver = %{version}-%{release}
|
||||
|
||||
%if 0%{?unbundle_vendor_sources}
|
||||
# golang build deps. These allow us to unbundle vendor golang source.
|
||||
BuildRequires: golang(github.com/BurntSushi/toml)
|
||||
BuildRequires: golang(github.com/aws/aws-sdk-go)
|
||||
BuildRequires: golang(github.com/benbjohnson/clock)
|
||||
BuildRequires: golang(github.com/beorn7/perks/quantile)
|
||||
BuildRequires: golang(github.com/bmizerany/assert)
|
||||
BuildRequires: golang(github.com/bradfitz/gomemcache/memcache)
|
||||
BuildRequires: golang(github.com/codahale/hdrhistogram)
|
||||
BuildRequires: golang(github.com/codegangsta/cli)
|
||||
BuildRequires: golang(github.com/davecgh/go-spew/spew)
|
||||
BuildRequires: golang(github.com/denisenkom/go-mssqldb)
|
||||
BuildRequires: golang(github.com/facebookgo/inject)
|
||||
BuildRequires: golang(github.com/facebookgo/structtag)
|
||||
BuildRequires: golang(github.com/fatih/color)
|
||||
BuildRequires: golang(github.com/go-ini/ini)
|
||||
BuildRequires: golang(github.com/go-macaron/binding)
|
||||
BuildRequires: golang(github.com/go-macaron/gzip)
|
||||
BuildRequires: golang(github.com/go-macaron/inject)
|
||||
BuildRequires: golang(github.com/go-macaron/session)
|
||||
BuildRequires: golang(github.com/go-sql-driver/mysql)
|
||||
BuildRequires: golang(github.com/go-stack/stack)
|
||||
BuildRequires: golang(github.com/go-xorm/builder)
|
||||
BuildRequires: golang(github.com/go-xorm/core)
|
||||
BuildRequires: golang(github.com/go-xorm/xorm)
|
||||
BuildRequires: golang(github.com/gobwas/glob)
|
||||
BuildRequires: golang(github.com/gobwas/glob/compiler)
|
||||
BuildRequires: golang(github.com/gobwas/glob/match)
|
||||
BuildRequires: golang(github.com/gobwas/glob/syntax)
|
||||
BuildRequires: golang(github.com/gobwas/glob/syntax/ast)
|
||||
BuildRequires: golang(github.com/gobwas/glob/syntax/lexer)
|
||||
BuildRequires: golang(github.com/gobwas/glob/util/runes)
|
||||
BuildRequires: golang(github.com/gobwas/glob/util/strings)
|
||||
BuildRequires: golang(github.com/gopherjs/gopherjs/js)
|
||||
BuildRequires: golang(github.com/gorilla/websocket)
|
||||
BuildRequires: golang(github.com/gosimple/slug)
|
||||
BuildRequires: golang(github.com/hashicorp/go-hclog)
|
||||
BuildRequires: golang(golang.org/x/sys/unix)
|
||||
BuildRequires: golang(google.golang.org/appengine)
|
||||
BuildRequires: golang(google.golang.org/genproto/googleapis/rpc/status)
|
||||
BuildRequires: golang(google.golang.org/grpc)
|
||||
# need grpc_broker in go-plugin >= 1.0.0-1
|
||||
BuildRequires: golang-github-prometheus-common-devel
|
||||
BuildRequires: golang(cloud.google.com/go/compute/metadata)
|
||||
BuildRequires: golang(github.com/Unknwon/com)
|
||||
BuildRequires: golang(github.com/VividCortex/mysqlerr)
|
||||
BuildRequires: golang(github.com/go-bufio/bufio)
|
||||
BuildRequires: golang(github.com/go-ini/ini)
|
||||
BuildRequires: golang(github.com/go-macaron/macaron)
|
||||
BuildRequires: golang(github.com/go-redis/redis)
|
||||
BuildRequires: golang(github.com/go-yaml/yaml)
|
||||
BuildRequires: golang(github.com/golang/protobuf/proto)
|
||||
BuildRequires: golang(github.com/golang/protobuf/ptypes)
|
||||
BuildRequires: golang(github.com/golang/protobuf/ptypes)
|
||||
BuildRequires: golang(github.com/golang/protobuf/ptypes/any)
|
||||
BuildRequires: golang(github.com/golang/protobuf/ptypes/duration)
|
||||
BuildRequires: golang(github.com/golang/protobuf/ptypes/timestamp)
|
||||
BuildRequires: golang(github.com/hashicorp/go-plugin)
|
||||
BuildRequires: golang(github.com/hashicorp/go-version)
|
||||
BuildRequires: golang(github.com/hashicorp/yamux)
|
||||
BuildRequires: golang(github.com/inconshreveable/log15)
|
||||
BuildRequires: golang(github.com/jmespath/go-jmespath)
|
||||
BuildRequires: golang(github.com/jonboulle/clockwork)
|
||||
BuildRequires: golang(github.com/jtolds/gls)
|
||||
BuildRequires: golang(github.com/klauspost/compress/flate)
|
||||
BuildRequires: golang(github.com/klauspost/compress/gzip)
|
||||
BuildRequires: golang(github.com/klauspost/compress/snappy)
|
||||
BuildRequires: golang(github.com/klauspost/cpuid)
|
||||
BuildRequires: golang(github.com/klauspost/crc32)
|
||||
BuildRequires: golang(github.com/kr/pretty)
|
||||
BuildRequires: golang(github.com/kr/text)
|
||||
BuildRequires: golang(github.com/lib/pq)
|
||||
BuildRequires: golang(github.com/mattn/go-colorable)
|
||||
BuildRequires: golang(github.com/mattn/go-isatty)
|
||||
BuildRequires: golang(github.com/mattn/go-sqlite3)
|
||||
BuildRequires: golang(github.com/matttproud/golang_protobuf_extensions/pbutil)
|
||||
BuildRequires: golang(github.com/mitchellh/go-testing-interface)
|
||||
BuildRequires: golang(github.com/oklog/run)
|
||||
BuildRequires: golang(github.com/opentracing/opentracing-go)
|
||||
BuildRequires: golang(github.com/patrickmn/go-cache)
|
||||
BuildRequires: golang(github.com/pkg/errors)
|
||||
BuildRequires: golang(github.com/prometheus/client_golang/api)
|
||||
BuildRequires: golang(github.com/prometheus/client_golang/api/prometheus/v1)
|
||||
BuildRequires: golang(github.com/prometheus/client_model/go)
|
||||
BuildRequires: golang(github.com/prometheus/common/expfmt)
|
||||
BuildRequires: golang(github.com/prometheus/common/expfmt)
|
||||
BuildRequires: golang(github.com/prometheus/common/model)
|
||||
BuildRequires: golang(github.com/prometheus/procfs)
|
||||
BuildRequires: golang(github.com/prometheus/procfs)
|
||||
BuildRequires: golang(github.com/prometheus/procfs/internal/util)
|
||||
BuildRequires: golang(github.com/prometheus/procfs/internal/util)
|
||||
BuildRequires: golang(github.com/prometheus/procfs/nfs)
|
||||
BuildRequires: golang(github.com/prometheus/procfs/xfs)
|
||||
BuildRequires: golang(github.com/rainycape/unidecode)
|
||||
BuildRequires: golang(github.com/sergi/go-diff/diffmatchpatch)
|
||||
BuildRequires: golang(github.com/smartystreets/assertions)
|
||||
BuildRequires: golang(github.com/smartystreets/goconvey/convey)
|
||||
BuildRequires: golang(github.com/smartystreets/goconvey/convey/gotest)
|
||||
BuildRequires: golang(github.com/smartystreets/goconvey/convey/reporting)
|
||||
BuildRequires: golang(github.com/teris-io/shortid)
|
||||
BuildRequires: golang(github.com/yudai/gojsondiff)
|
||||
BuildRequires: golang(github.com/yudai/golcs)
|
||||
BuildRequires: golang(golang.org/x/crypto/ed25519)
|
||||
BuildRequires: golang(golang.org/x/crypto/md4)
|
||||
BuildRequires: golang(golang.org/x/crypto/pbkdf2)
|
||||
BuildRequires: golang(golang.org/x/net/context)
|
||||
BuildRequires: golang(golang.org/x/net/context/ctxhttp)
|
||||
BuildRequires: golang(golang.org/x/net/http/httpguts)
|
||||
BuildRequires: golang(golang.org/x/net/http2)
|
||||
BuildRequires: golang(golang.org/x/net/http2/hpack)
|
||||
BuildRequires: golang(golang.org/x/net/idna)
|
||||
BuildRequires: golang(golang.org/x/net/internal/timeseries)
|
||||
BuildRequires: golang(golang.org/x/net/trace)
|
||||
BuildRequires: golang(golang.org/x/oauth2)
|
||||
BuildRequires: golang(golang.org/x/oauth2/google)
|
||||
BuildRequires: golang(golang.org/x/oauth2/internal)
|
||||
BuildRequires: golang(golang.org/x/oauth2/jws)
|
||||
BuildRequires: golang(golang.org/x/oauth2/jwt)
|
||||
BuildRequires: golang(golang.org/x/sync/errgroup)
|
||||
BuildRequires: golang(golang.org/x/text/collate)
|
||||
BuildRequires: golang(golang.org/x/text/collate/build)
|
||||
BuildRequires: golang(golang.org/x/text/internal/colltab)
|
||||
BuildRequires: golang(golang.org/x/text/internal/gen)
|
||||
BuildRequires: golang(golang.org/x/text/internal/tag)
|
||||
BuildRequires: golang(golang.org/x/text/internal/triegen)
|
||||
BuildRequires: golang(golang.org/x/text/internal/ucd)
|
||||
BuildRequires: golang(gopkg.in/alexcesaro/quotedprintable.v3)
|
||||
BuildRequires: golang(gopkg.in/asn1-ber.v1)
|
||||
BuildRequires: golang(gopkg.in/ldap.v3)
|
||||
BuildRequires: golang(gopkg.in/mail.v2)
|
||||
BuildRequires: golang(gopkg.in/square/go-jose.v2)
|
||||
BuildRequires: golang(gopkg.in/square/go-jose.v2/cipher)
|
||||
BuildRequires: golang(gopkg.in/square/go-jose.v2/json)
|
||||
%endif
|
||||
|
||||
# Declare all nodejs modules bundled in the webpack - this is for security
|
||||
# purposes so if nodejs-foo ever needs an update, affected packages can be
|
||||
# easily identified. This is generated from package-lock.json once the webpack
|
||||
# has been built with make_webpack.sh.
|
||||
Provides: bundled(nodejs-abbrev) = 1.1.1
|
||||
Provides: bundled(nodejs-ansi-regex) = 2.1.1
|
||||
Provides: bundled(nodejs-ansi-styles) = 2.2.1
|
||||
Provides: bundled(nodejs-argparse) = 1.0.10
|
||||
Provides: bundled(nodejs-array-find-index) = 1.0.2
|
||||
Provides: bundled(nodejs-async) = 1.5.2
|
||||
Provides: bundled(nodejs-balanced-match) = 1.0.0
|
||||
Provides: bundled(nodejs-brace-expansion) = 1.1.11
|
||||
Provides: bundled(nodejs-builtin-modules) = 1.1.1
|
||||
Provides: bundled(nodejs-camelcase) = 2.1.1
|
||||
Provides: bundled(nodejs-camelcase-keys) = 2.1.0
|
||||
Provides: bundled(nodejs-chalk) = 1.1.3
|
||||
Provides: bundled(nodejs-coffee-script) = 1.10.0
|
||||
Provides: bundled(nodejs-colors) = 1.1.2
|
||||
Provides: bundled(nodejs-concat-map) = 0.0.1
|
||||
Provides: bundled(nodejs-currently-unhandled) = 0.4.1
|
||||
Provides: bundled(nodejs-dateformat) = 1.0.12
|
||||
Provides: bundled(nodejs-decamelize) = 1.2.0
|
||||
Provides: bundled(nodejs-error-ex) = 1.3.2
|
||||
Provides: bundled(nodejs-escape-string-regexp) = 1.0.5
|
||||
Provides: bundled(nodejs-esprima) = 2.7.3
|
||||
Provides: bundled(nodejs-eventemitter2) = 0.4.14
|
||||
Provides: bundled(nodejs-exit) = 0.1.2
|
||||
Provides: bundled(nodejs-find-up) = 1.1.2
|
||||
Provides: bundled(nodejs-findup-sync) = 0.3.0
|
||||
Provides: bundled(nodejs-fs.realpath) = 1.0.0
|
||||
Provides: bundled(nodejs-get-stdin) = 4.0.1
|
||||
Provides: bundled(nodejs-getobject) = 0.1.0
|
||||
Provides: bundled(nodejs-glob) = 7.0.6
|
||||
Provides: bundled(nodejs-graceful-fs) = 4.1.15
|
||||
Provides: bundled(nodejs-grunt) = 1.0.1
|
||||
Provides: bundled(nodejs-grunt-cli) = 1.2.0
|
||||
Provides: bundled(nodejs-grunt-known-options) = 1.1.1
|
||||
Provides: bundled(nodejs-grunt-legacy-log) = 1.0.2
|
||||
Provides: bundled(nodejs-grunt-legacy-log-utils) = 1.0.0
|
||||
Provides: bundled(nodejs-grunt-legacy-util) = 1.0.0
|
||||
Provides: bundled(nodejs-has-ansi) = 2.0.0
|
||||
Provides: bundled(nodejs-hooker) = 0.2.3
|
||||
Provides: bundled(nodejs-hosted-git-info) = 2.7.1
|
||||
Provides: bundled(nodejs-iconv-lite) = 0.4.24
|
||||
Provides: bundled(nodejs-indent-string) = 2.1.0
|
||||
Provides: bundled(nodejs-inflight) = 1.0.6
|
||||
Provides: bundled(nodejs-inherits) = 2.0.3
|
||||
Provides: bundled(nodejs-is-arrayish) = 0.2.1
|
||||
Provides: bundled(nodejs-is-builtin-module) = 1.0.0
|
||||
Provides: bundled(nodejs-is-finite) = 1.0.2
|
||||
Provides: bundled(nodejs-is-utf8) = 0.2.1
|
||||
Provides: bundled(nodejs-isexe) = 2.0.0
|
||||
Provides: bundled(nodejs-js-yaml) = 3.5.5
|
||||
Provides: bundled(nodejs-load-json-file) = 1.1.0
|
||||
Provides: bundled(nodejs-lodash) = 4.17.11
|
||||
Provides: bundled(nodejs-loud-rejection) = 1.6.0
|
||||
Provides: bundled(nodejs-map-obj) = 1.0.1
|
||||
Provides: bundled(nodejs-meow) = 3.7.0
|
||||
Provides: bundled(nodejs-minimatch) = 3.0.4
|
||||
Provides: bundled(nodejs-minimist) = 1.2.0
|
||||
Provides: bundled(nodejs-nopt) = 3.0.6
|
||||
Provides: bundled(nodejs-normalize-package-data) = 2.4.2
|
||||
Provides: bundled(nodejs-number-is-nan) = 1.0.1
|
||||
Provides: bundled(nodejs-object-assign) = 4.1.1
|
||||
Provides: bundled(nodejs-once) = 1.4.0
|
||||
Provides: bundled(nodejs-parse-json) = 2.2.0
|
||||
Provides: bundled(nodejs-path-exists) = 2.1.0
|
||||
Provides: bundled(nodejs-path-is-absolute) = 1.0.1
|
||||
Provides: bundled(nodejs-path-type) = 1.1.0
|
||||
Provides: bundled(nodejs-pify) = 2.3.0
|
||||
Provides: bundled(nodejs-pinkie) = 2.0.4
|
||||
Provides: bundled(nodejs-pinkie-promise) = 2.0.1
|
||||
Provides: bundled(nodejs-read-pkg) = 1.1.0
|
||||
Provides: bundled(nodejs-read-pkg-up) = 1.0.1
|
||||
Provides: bundled(nodejs-redent) = 1.0.0
|
||||
Provides: bundled(nodejs-repeating) = 2.0.1
|
||||
Provides: bundled(nodejs-resolve) = 1.1.7
|
||||
Provides: bundled(nodejs-rimraf) = 2.2.8
|
||||
Provides: bundled(nodejs-safer-buffer) = 2.1.2
|
||||
Provides: bundled(nodejs-semver) = 5.6.0
|
||||
Provides: bundled(nodejs-signal-exit) = 3.0.2
|
||||
Provides: bundled(nodejs-spdx-correct) = 3.1.0
|
||||
Provides: bundled(nodejs-spdx-exceptions) = 2.2.0
|
||||
Provides: bundled(nodejs-spdx-expression-parse) = 3.0.0
|
||||
Provides: bundled(nodejs-spdx-license-ids) = 3.0.3
|
||||
Provides: bundled(nodejs-sprintf-js) = 1.0.3
|
||||
Provides: bundled(nodejs-strip-ansi) = 3.0.1
|
||||
Provides: bundled(nodejs-strip-bom) = 2.0.0
|
||||
Provides: bundled(nodejs-strip-indent) = 1.0.1
|
||||
Provides: bundled(nodejs-supports-color) = 2.0.0
|
||||
Provides: bundled(nodejs-trim-newlines) = 1.0.0
|
||||
Provides: bundled(nodejs-underscore.string) = 3.2.3
|
||||
Provides: bundled(nodejs-validate-npm-package-license) = 3.0.4
|
||||
Provides: bundled(nodejs-which) = 1.2.14
|
||||
Provides: bundled(nodejs-wrappy) = 1.0.2
|
||||
Provides: bundled(nodejs-yarn) = 1.13.0
|
||||
|
||||
%description
|
||||
Grafana is an open source, feature rich metrics dashboard and graph editor for
|
||||
Graphite, InfluxDB & OpenTSDB.
|
||||
|
||||
|
||||
%package cloudwatch
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana cloudwatch datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description cloudwatch
|
||||
The Grafana cloudwatch datasource.
|
||||
|
||||
%package elasticsearch
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana elasticsearch datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description elasticsearch
|
||||
The Grafana elasticsearch datasource.
|
||||
|
||||
%package azure-monitor
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana azure-monitor datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description azure-monitor
|
||||
The Grafana azure-monitor datasource.
|
||||
|
||||
%package graphite
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana graphite datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description graphite
|
||||
The Grafana graphite datasource.
|
||||
|
||||
%package influxdb
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana influxdb datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description influxdb
|
||||
The Grafana influxdb datasource.
|
||||
|
||||
%package loki
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana loki datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description loki
|
||||
The Grafana loki datasource.
|
||||
|
||||
%package mssql
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana mssql datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description mssql
|
||||
The Grafana mssql datasource.
|
||||
|
||||
%package mysql
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana mysql datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description mysql
|
||||
The Grafana mysql datasource.
|
||||
|
||||
%package opentsdb
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana opentsdb datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description opentsdb
|
||||
The Grafana opentsdb datasource.
|
||||
|
||||
%package postgres
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana postgres datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description postgres
|
||||
The Grafana postgres datasource.
|
||||
|
||||
%package prometheus
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana prometheus datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description prometheus
|
||||
The Grafana prometheus datasource.
|
||||
|
||||
%package stackdriver
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Grafana stackdriver datasource
|
||||
Group: System/Monitoring
|
||||
|
||||
%description stackdriver
|
||||
The Grafana stackdriver datasource.
|
||||
A graph and dashboard builder for visualizing time series metrics.
|
||||
|
||||
Grafana provides ways to create, explore, and share
|
||||
dashboards and data with teams.
|
||||
|
||||
%prep
|
||||
%setup -q -T -D -b 0
|
||||
%setup -q -T -D -b 1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
|
||||
# Set up build subdirs and links
|
||||
mkdir -p %{_builddir}/src/github.com/grafana
|
||||
ln -sf %{_builddir}/%{name}-%{version} \
|
||||
%{_builddir}/src/github.com/grafana/grafana
|
||||
|
||||
# remove some (apparent) development files, for rpmlint
|
||||
rm -f public/sass/.sass-lint.yml public/test/.jshintrc
|
||||
|
||||
%if 0%{?unbundle_vendor_sources}
|
||||
# Unbundle all grafana vendor sources, as per BuildRequires above.
|
||||
# An exception is grafana-plugin-model, which is part of grafana.
|
||||
# Another exception is xerrors, which is a transition package
|
||||
# for the new Go 1.13 error values, see https://github.com/golang/xerrors
|
||||
cp --parents -a vendor/github.com/grafana vendor/golang.org/x/xerrors \
|
||||
vendor/github.com/robfig vendor/github.com/crewjam/saml \
|
||||
vendor/github.com/ua-parser/uap-go/uaparser \
|
||||
vendor/github.com/beevik/etree \
|
||||
vendor/github.com/russellhaering/goxmldsig \
|
||||
%{_builddir}
|
||||
rm -r vendor # remove all vendor sources
|
||||
mv %{_builddir}/vendor vendor # put back what we're keeping
|
||||
%endif
|
||||
%setup -q -n grafana-%{version}
|
||||
|
||||
%build
|
||||
%goprep github.com/grafana/grafana
|
||||
export GOPATH=%{_builddir}:%{_builddir}/contrib
|
||||
###go install $BUILDFLAGS -ldflags '-X main.version=%%{version}' $IMPORTPATH/pkg/cmd/...
|
||||
cd %{_builddir}/src/github.com/grafana/grafana
|
||||
go run build.go setup
|
||||
go run build.go build
|
||||
# Manual build in order to inject ldflags so grafana correctly displays
|
||||
# the version in the footer of each page. Note that we're only injecting
|
||||
# main.version, not main.commit or main.buildstamp as is done in the upstream
|
||||
# build.go, because we don't have access to the git commit history here.
|
||||
# (The %%gobuild macro can't take quoted strings; they get split up when
|
||||
# expanded to $extra_flags in process_build() in /usr/lib/rpm/golang.sh.)
|
||||
export IMPORTPATH="github.com/grafana/grafana"
|
||||
export BUILDFLAGS="-v -p 4 -x -buildmode=pie"
|
||||
export GOPATH=%{_builddir}/go:%{_builddir}/contrib
|
||||
export GOBIN=%{_builddir}/go/bin
|
||||
go install $BUILDFLAGS -ldflags '-X main.version=%{version}' $IMPORTPATH/pkg/cmd/...
|
||||
|
||||
%install
|
||||
%goinstall
|
||||
|
||||
# Fix up arch bin directories
|
||||
[ ! -d bin/x86_64 ] && ln -sf linux-amd64 bin/x86_64
|
||||
[ ! -d bin/i386 ] && ln -sf linux-386 bin/i386
|
||||
[ ! -d bin/ppc64le ] && ln -sf linux-ppc64le bin/ppc64le
|
||||
[ ! -d bin/s390x ] && ln -sf linux-s390x bin/s390x
|
||||
[ ! -d bin/arm ] && ln -sf linux-arm bin/arm
|
||||
[ ! -d bin/arm64 ] && ln -sf linux-arm64 bin/aarch64
|
||||
[ ! -d bin/aarch64 ] && ln -sf linux-aarch64 bin/aarch64
|
||||
# we're missing %%gosrc and %%gofilelist... (although that *might* be ok...)
|
||||
|
||||
# dirs
|
||||
install -d -m0755 %{buildroot}%{_sbindir}
|
||||
install -d -m0755 %{buildroot}%{_datadir}/%{name}
|
||||
install -d -m0755 %{buildroot}%{_datadir}/%{name}/bin
|
||||
install -d -m0755 %{buildroot}%{_datadir}/%{name}/tools
|
||||
install -d -m0755 %{buildroot}%{_datadir}/%{name}/vendor
|
||||
install -Dm644 {packaging/rpm/systemd/,%{buildroot}%{_unitdir}/}%{name}-server.service
|
||||
install -dm755 %{buildroot}%{_sbindir}
|
||||
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}-server
|
||||
mv %{buildroot}/%{_bindir}/grafana-* %{buildroot}/%{_sbindir}
|
||||
|
||||
install -Dm644 packaging/rpm/sysconfig/%{name}-server \
|
||||
%{buildroot}%{_fillupdir}/sysconfig.%{name}-server
|
||||
|
||||
install -d -m0750 %{buildroot}%{_localstatedir}/lib/%{name}
|
||||
install -d -m0750 %{buildroot}%{_localstatedir}/log/%{name}
|
||||
install -d -m0750 %{buildroot}%{_sharedstatedir}/%{name}
|
||||
install -d -m0755 %{buildroot}%{_sharedstatedir}/%{name}/plugins
|
||||
install -d -m0755 %{buildroot}%{_sharedstatedir}/%{name}/dashboards
|
||||
install -d -m0755 %{buildroot}/%{_localstatedir}/lib/%{name}/plugins
|
||||
install -d -m0755 %{buildroot}/%{_localstatedir}/lib/%{name}/dashboards
|
||||
install -d -m0755 %{buildroot}%{_sysconfdir}/%{name}/provisioning/dashboards
|
||||
install -d -m0755 %{buildroot}%{_sysconfdir}/%{name}/provisioning/datasources
|
||||
install -d -m0755 %{buildroot}%{_sysconfdir}/%{name}/provisioning/notifiers
|
||||
|
||||
# wrappers
|
||||
sed -i -e 's|\/usr\/bin\/env bash|\/bin\/bash|g' packaging/wrappers/grafana-cli
|
||||
install -p -m 755 packaging/wrappers/grafana-cli %{buildroot}%{_sbindir}/%{name}-cli
|
||||
|
||||
# binaries
|
||||
install -p -m 755 bin/%{_arch}/%{name}-server %{buildroot}%{_sbindir}
|
||||
install -p -m 755 bin/%{_arch}/%{name}-cli %{buildroot}%{_datadir}/%{name}/bin
|
||||
|
||||
# man pages
|
||||
install -d -m0755 %{buildroot}%{_mandir}/man1
|
||||
install -p -m0644 docs/man/man1/* %{buildroot}%{_mandir}/man1
|
||||
|
||||
# configs defaults
|
||||
install -Dm640 conf/sample.ini %{buildroot}%{_sysconfdir}/%{name}/%{name}.ini
|
||||
install -Dm640 {conf/,%{buildroot}%{_sysconfdir}/%{name}/}ldap.toml
|
||||
cp -a conf/provisioning %{buildroot}%{_sysconfdir}/%{name}
|
||||
|
||||
# sysconfig
|
||||
install -Dm644 packaging/rpm/sysconfig/%{name}-server %{buildroot}%{_fillupdir}/sysconfig.%{name}-server
|
||||
|
||||
# rest
|
||||
cp -a conf public %{buildroot}%{_datadir}/%{name}
|
||||
|
||||
# systemd
|
||||
install -Dm644 {packaging/rpm/systemd/,%{buildroot}%{_unitdir}/}%{name}-server.service
|
||||
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}-server
|
||||
|
||||
# daemon run pid file config for using tmpfs
|
||||
install -d %{buildroot}%{_tmpfilesdir}
|
||||
echo "d %{_rundir}/%{name} 0755 %{GRAFANA_USER} %{GRAFANA_GROUP} -" > %{buildroot}%{_tmpfilesdir}/%{name}.conf
|
||||
|
||||
%if %{with phantomjs}
|
||||
# phantomjs is used for rendering PNG images of graphs. The frontend asset
|
||||
# build process downloadsa prebuilt x86_64 binary, which ends up in
|
||||
# vendor/phantomjs/phantomjs. This is ugly but works for x86_64. It naturally
|
||||
# will not work for other architectures, so instead we remove the phantomjs
|
||||
# binary and install a symlink to the systemwide /usr/bin/phantomjs.
|
||||
cp -pr tools/phantomjs %{buildroot}%{_datadir}/%{name}/tools/
|
||||
rm -f %{buildroot}%{_datadir}/%{name}/tools/phantomjs/phantomjs
|
||||
ln -s %{_bindir}/phantomjs %{buildroot}%{_datadir}/%{name}/tools/phantomjs/phantomjs
|
||||
%endif
|
||||
install -Dm644 {conf/,%{buildroot}%{_datadir}/%{name}/conf/}defaults.ini
|
||||
install -m644 {conf/,%{buildroot}%{_datadir}/%{name}/conf/}sample.ini
|
||||
install -Dm644 {conf/provisioning/dashboards/,%{buildroot}%{_datadir}/%{name}/conf/provisioning/dashboards/}sample.yaml
|
||||
install -Dm644 {conf/provisioning/datasources/,%{buildroot}%{_datadir}/%{name}/conf/provisioning/datasources/}sample.yaml
|
||||
cp -pr public %{buildroot}%{_datadir}/%{name}/
|
||||
install -d -m755 %{buildroot}%{_datadir}/%{name}/vendor
|
||||
install -d -m755 %{buildroot}%{_datadir}/%{name}/tools
|
||||
|
||||
# Do *not* use %%fudpes -s -- this will result in grafana failing to load
|
||||
# all the plugins (something in the plugin scanner can't cope with files
|
||||
@ -518,28 +104,19 @@ ln -s %{_bindir}/phantomjs %{buildroot}%{_datadir}/%{name}/tools/phantomjs/phant
|
||||
%fdupes %{buildroot}/%{_datadir}
|
||||
|
||||
%check
|
||||
cd %{_builddir}/src/github.com/grafana/grafana
|
||||
###export GOPATH=%%{_builddir}:%%{gopath}
|
||||
export GOPATH=%{_builddir}
|
||||
# remove tests currently failing
|
||||
rm -f pkg/services/provisioning/dashboards/file_reader_linux_test.go
|
||||
rm -f pkg/services/provisioning/dashboards/file_reader_test.go
|
||||
rm -f pkg/services/sqlstore/alert_test.go
|
||||
rm -f pkg/services/sqlstore/apikey_test.go
|
||||
rm -f pkg/setting/setting_test.go
|
||||
go test ./pkg/...
|
||||
#gotest github.com/grafana/grafana/pkg...
|
||||
|
||||
%pre
|
||||
%service_add_pre %{name}-server.service
|
||||
echo Creating user %{GRAFANA_USER} and group %{GRAFANA_GROUP} if not present
|
||||
|
||||
echo "Creating user %{GRAFANA_USER} and group %{GRAFANA_GROUP} if not present"
|
||||
getent group %{GRAFANA_GROUP} > /dev/null || groupadd -r %{GRAFANA_GROUP}
|
||||
getent passwd %{GRAFANA_USER} > /dev/null || useradd -r -g %{GRAFANA_GROUP} -d %{GRAFANA_HOME} -s /sbin/nologin -c "%{GRAFANA_USER} user" %{GRAFANA_USER}
|
||||
exit 0
|
||||
getent passwd %{GRAFANA_GROUP} > /dev/null || useradd -r -g %{GRAFANA_GROUP} \
|
||||
-d %{GRAFANA_HOME} -s /sbin/nologin -c "%{GRAFANA_USER} user" %{GRAFANA_GROUP}
|
||||
|
||||
%post
|
||||
%{fillup_only -n %{name}-server}
|
||||
%service_add_post %{name}-server.service
|
||||
%fillup_only -n %{name}-server
|
||||
%tmpfiles_create %{_tmpfilesdir}/%{name}.conf
|
||||
|
||||
%preun
|
||||
%service_del_preun %{name}-server.service
|
||||
@ -548,101 +125,27 @@ exit 0
|
||||
%service_del_postun %{name}-server.service
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc CHANGELOG.md CODE_OF_CONDUCT.md CONTRIBUTING.md NOTICE.md
|
||||
%doc PLUGIN_DEV.md README.md ROADMAP.md UPGRADING_DEPENDENCIES.md
|
||||
# binaries
|
||||
%{_sbindir}/%{name}-server
|
||||
%{_sbindir}/%{name}-cli
|
||||
# config files
|
||||
%attr(0755, root, root) %dir %{_sysconfdir}/%{name}
|
||||
%attr(0755, root, root) %dir %{_sysconfdir}/%{name}/provisioning
|
||||
%attr(0755, root, root) %dir %{_sysconfdir}/%{name}/provisioning/dashboards
|
||||
%attr(0755, root, root) %dir %{_sysconfdir}/%{name}/provisioning/datasources
|
||||
%attr(0755, root, root) %dir %{_sysconfdir}/%{name}/provisioning/notifiers
|
||||
%attr(0640, root, %{GRAFANA_GROUP}) %config(noreplace) %{_sysconfdir}/%{name}/grafana.ini
|
||||
%attr(0640, root, %{GRAFANA_GROUP}) %config(noreplace) %{_sysconfdir}/%{name}/ldap.toml
|
||||
%attr(0640, root, %{GRAFANA_GROUP}) %config(noreplace) %{_sysconfdir}/%{name}/provisioning/dashboards/sample.yaml
|
||||
%attr(0640, root, %{GRAFANA_GROUP}) %config(noreplace) %{_sysconfdir}/%{name}/provisioning/datasources/sample.yaml
|
||||
%attr(0640, root, %{GRAFANA_GROUP}) %config(noreplace) %{_sysconfdir}/%{name}/provisioning/notifiers/sample.yaml
|
||||
# config database directory and plugins (actual db files are created by grafana-server)
|
||||
%attr(0755, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name}
|
||||
%attr(0755, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name}/plugins
|
||||
%attr(0755, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name}/dashboards
|
||||
# log directory - grafana.log is created by grafana-server, and it does it's own log rotation
|
||||
%attr(0750, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_localstatedir}/log/%{name}
|
||||
# built-in datasources that are sub-packaged
|
||||
%global dsdir %{_datadir}/%{name}/public/app/plugins/datasource
|
||||
%exclude %{dsdir}/cloudwatch
|
||||
%exclude %{dsdir}/elasticsearch
|
||||
%exclude %{dsdir}/graphite
|
||||
%exclude %{dsdir}/grafana-azure-monitor-datasource
|
||||
%exclude %{dsdir}/influxdb
|
||||
%exclude %{dsdir}/loki
|
||||
%exclude %{dsdir}/mssql
|
||||
%exclude %{dsdir}/mysql
|
||||
%exclude %{dsdir}/opentsdb
|
||||
%exclude %{dsdir}/postgres
|
||||
%exclude %{dsdir}/prometheus
|
||||
%exclude %{dsdir}/stackdriver
|
||||
# shared directory and all files therein, except some datasources
|
||||
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_datadir}/%{name}
|
||||
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_datadir}/%{name}/bin
|
||||
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_datadir}/%{name}/public
|
||||
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_datadir}/%{name}/conf
|
||||
%attr(0644, root, %{GRAFANA_GROUP}) %config %{_datadir}/%{name}/conf/*.{ini,toml}
|
||||
%attr(0644, root, %{GRAFANA_GROUP}) %config %{_datadir}/%{name}/conf/provisioning/dashboards/sample.yaml
|
||||
%attr(0644, root, %{GRAFANA_GROUP}) %config %{_datadir}/%{name}/conf/provisioning/datasources/sample.yaml
|
||||
%attr(0644, root, %{GRAFANA_GROUP}) %config %{_datadir}/%{name}/conf/provisioning/notifiers/sample.yaml
|
||||
%{_datadir}/%{name}
|
||||
# systemd service file
|
||||
%{_unitdir}/grafana-server.service
|
||||
%defattr(-,root,root)
|
||||
%license LICENSE*
|
||||
%doc CHANGELOG*
|
||||
%{_sbindir}/%{name}*
|
||||
%{_sbindir}/rc%{name}-server
|
||||
# man pages for grafana binaries
|
||||
%{_mandir}/man1/%{name}-server.1*
|
||||
%{_mandir}/man1/%{name}-cli.1*
|
||||
# other
|
||||
%{_unitdir}/%{name}-server.service
|
||||
%{_fillupdir}/sysconfig.%{name}-server
|
||||
%{_tmpfilesdir}/%{name}.conf
|
||||
%ghost %dir %{_rundir}/%{name}
|
||||
|
||||
#
|
||||
# datasources split out into subpackages
|
||||
#
|
||||
%files cloudwatch
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/cloudwatch
|
||||
|
||||
%files elasticsearch
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/elasticsearch
|
||||
|
||||
%files azure-monitor
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/grafana-azure-monitor-datasource
|
||||
|
||||
%files graphite
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/graphite
|
||||
|
||||
%files influxdb
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/influxdb
|
||||
|
||||
%files loki
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/loki
|
||||
|
||||
%files mssql
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/mssql
|
||||
|
||||
%files mysql
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/mysql
|
||||
|
||||
%files opentsdb
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/opentsdb
|
||||
|
||||
%files postgres
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/postgres
|
||||
|
||||
%files prometheus
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/prometheus
|
||||
|
||||
%files stackdriver
|
||||
%{_datadir}/%{name}/public/app/plugins/datasource/stackdriver
|
||||
%attr(0755,root,root) %dir %{_sysconfdir}/%{name}
|
||||
%attr(0755,root,root) %dir %{_sysconfdir}/%{name}/provisioning
|
||||
%attr(0755,root,root) %dir %{_sysconfdir}/%{name}/provisioning/dashboards
|
||||
%attr(0755,root,%{GRAFANA_GROUP}) %dir %{_datadir}/%{name}/conf
|
||||
%attr(0640,root,%{GRAFANA_GROUP}) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.ini
|
||||
%attr(0640,root,%{GRAFANA_GROUP}) %config(noreplace) %{_sysconfdir}/%{name}/ldap.toml
|
||||
%attr(0755,%{GRAFANA_USER},%{GRAFANA_GROUP}) %dir %{_localstatedir}/lib/%{name}
|
||||
%attr(0755,%{GRAFANA_USER},%{GRAFANA_GROUP}) %dir %{_localstatedir}/lib/%{name}/plugins
|
||||
%attr(0755,%{GRAFANA_USER},%{GRAFANA_GROUP}) %dir %{_localstatedir}/lib/%{name}/dashboards
|
||||
%attr(0750,%{GRAFANA_USER},%{GRAFANA_GROUP}) %dir %{_localstatedir}/log/%{name}
|
||||
%doc %{_datadir}/%{name}/conf/sample.ini
|
||||
%doc %{_datadir}/%{name}/conf/provisioning/dashboards/sample.yaml
|
||||
%doc %{_datadir}/%{name}/conf/provisioning/datasources/sample.yaml
|
||||
%config %{_datadir}/%{name}/conf/defaults.ini
|
||||
%{_datadir}/%{name}
|
||||
|
||||
%changelog
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:45269de4b895b9406b393c7961863dc9b508ba1c9b3b0f37ccd0a4d544c34002
|
||||
size 7022676
|
@ -1,61 +0,0 @@
|
||||
#! /bin/bash
|
||||
#
|
||||
# Copyright (c) 2019 Red Hat.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation; either version 2 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
|
||||
[ $# -ne 1 ] && echo "Usage: $0 version" && exit 1
|
||||
|
||||
# grafana version (must be tagged on github.com/grafana/grafana as "v$VER")
|
||||
VER=$1
|
||||
BUILDDIR=`mktemp -d buildXXXXXX`
|
||||
|
||||
[ ! -f /usr/bin/npm ] && echo Error, please install \"npm\" package && exit 1
|
||||
|
||||
# get src tree and set cwd
|
||||
echo Fetching pristine upstream git tagged branch for grafana version v$VER ...
|
||||
git clone https://github.com/grafana/grafana grafana-$VER
|
||||
cd grafana-$VER
|
||||
git checkout -b v$VER v$VER
|
||||
|
||||
# exclude the phantomjs-prebuilt binary module from the webpack
|
||||
sed -i '/phantomjs-prebuilt/d' package.json
|
||||
|
||||
# nuke grunt task for copying phantomjs
|
||||
rm -f scripts/grunt/options/phantomjs.js
|
||||
sed -i '/phantomjs/d' scripts/grunt/*.js
|
||||
|
||||
# populate node_modules using package.json
|
||||
echo Running yarn to populate local node_modules ....
|
||||
npm install yarn
|
||||
node_modules/yarn/bin/yarn --non-interactive --no-progress --ignore-engines install --pure-lockfile > yarn.out 2>&1
|
||||
node_modules/yarn/bin/yarn --non-interactive -W add webpack-cli
|
||||
|
||||
# build the webpack
|
||||
echo;echo Building production webpack ....
|
||||
node_modules/webpack/bin/webpack.js --display errors-only --mode production --config scripts/webpack/webpack.prod.js
|
||||
|
||||
cd ..
|
||||
|
||||
# webpack tarball. Includes public/views because index.html references the webpack
|
||||
tar czf grafana_webpack-$VER.tar.gz grafana-$VER/public/build grafana-$VER/public/views
|
||||
|
||||
# source tarball (if needed)
|
||||
if [ ! -f grafana-$VER.tar.gz ]; then
|
||||
wget --quiet -O grafana-$VER.tar.gz https://github.com/grafana/grafana/archive/v$VER/grafana-$VER.tar.gz
|
||||
fi
|
||||
|
||||
# done
|
||||
echo Both grafana-$VER.tar.gz and grafana_webpack-$VER.tar.gz
|
||||
echo should now be copied to your \$HOME/rpmbuild/SOURCES
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user