From a647090d278c9ec733c0bc3676ce6935a2e6fb9c7cff5a565d5de6c506b82b3c Mon Sep 17 00:00:00 2001 From: Lars Vogdt Date: Sun, 27 Oct 2019 13:49:03 +0000 Subject: [PATCH 1/2] Accepting request 740994 from home:ecsos:monitoring Update to 6.4.3. Rebase grafana.spec. See grafana.changes. OBS-URL: https://build.opensuse.org/request/show/740994 OBS-URL: https://build.opensuse.org/package/show/server:monitoring/grafana?expand=0&rev=27 --- 001-login-oauth-use-oauth2-exchange.patch | 13 + 002-remove-jaeger-tracing.patch | 208 +++++ 003-new-files.patch | 1037 +++++++++++++++++++++ 004-distro-defaults-ini.patch | 24 + Makefile.no_phantomjs | 39 - Makefile.phantomjs | 33 - README | 27 - _service | 13 - _servicedata | 6 - grafana-6.3.5.tar.xz | 3 - grafana-6.4.3.tar.gz | 3 + grafana.changes | 159 ++++ grafana.spec | 664 +++++++++++-- grafana_webpack-6.4.3.tar.gz | 3 + make_grafana_webpack.sh | 61 ++ 15 files changed, 2077 insertions(+), 216 deletions(-) create mode 100644 001-login-oauth-use-oauth2-exchange.patch create mode 100644 002-remove-jaeger-tracing.patch create mode 100644 003-new-files.patch create mode 100644 004-distro-defaults-ini.patch delete mode 100644 Makefile.no_phantomjs delete mode 100644 Makefile.phantomjs delete mode 100644 README delete mode 100644 _service delete mode 100644 _servicedata delete mode 100644 grafana-6.3.5.tar.xz create mode 100644 grafana-6.4.3.tar.gz create mode 100644 grafana_webpack-6.4.3.tar.gz create mode 100644 make_grafana_webpack.sh diff --git a/001-login-oauth-use-oauth2-exchange.patch b/001-login-oauth-use-oauth2-exchange.patch new file mode 100644 index 0000000..43664b4 --- /dev/null +++ b/001-login-oauth-use-oauth2-exchange.patch @@ -0,0 +1,13 @@ +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 diff --git a/002-remove-jaeger-tracing.patch b/002-remove-jaeger-tracing.patch new file mode 100644 index 0000000..4972c8d --- /dev/null +++ b/002-remove-jaeger-tracing.patch @@ -0,0 +1,208 @@ +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) +- } +- } +- } +-} diff --git a/003-new-files.patch b/003-new-files.patch new file mode 100644 index 0000000..27458f2 --- /dev/null +++ b/003-new-files.patch @@ -0,0 +1,1037 @@ +Index: grafana-6.4.3/docs/man/man1/grafana-cli.1 +=================================================================== +--- /dev/null ++++ grafana-6.4.3/docs/man/man1/grafana-cli.1 +@@ -0,0 +1,51 @@ ++.TH GRAFANA "1" "February 2019" "Grafana cli version 5.4.3" "User Commands" ++.SH NAME ++grafana-cli \- command line administration for the Grafana metrics dashboard and graph editor ++.SH DESCRIPTION ++.SS "NAME:" ++.IP ++grafana-cli ++.SS "USAGE:" ++.IP ++\fBgrafana\-cli\fP [\fIglobal options\fP] \fIcommand\fP [\fIcommand options\fP] [\fIarguments\fP...] ++.SS "COMMANDS:" ++.TP ++plugins ++Manage plugins for grafana ++.TP ++admin ++Grafana admin commands ++.TP ++help, h ++Shows a list of commands or help for one command ++.SS "GLOBAL OPTIONS:" ++.TP ++\fB\-\-pluginsDir\fR value ++path to the grafana plugin directory (default: "/var/lib/grafana/plugins") [$GF_PLUGIN_DIR] ++.TP ++\fB\-\-repo\fR value ++url to the plugin repository (default: "https://grafana.com/api/plugins") [$GF_PLUGIN_REPO] ++.TP ++\fB\-\-pluginUrl\fR value ++Full url to the plugin zip file instead of downloading the plugin from grafana.com/api [$GF_PLUGIN_URL] ++.TP ++\fB\-\-insecure\fR ++Skip TLS verification (insecure) ++.TP ++\fB\-\-debug\fR, \fB\-d\fR ++enable debug logging ++.TP ++\fB\-\-help\fR, \fB\-h\fR ++show help ++.TP ++\fB\-\-version\fR, \fB\-v\fR ++print the version ++.SH "SEE ALSO" ++Additional documentation for ++.B grafana-cli ++is available on-line at ++.BR http://docs.grafana.org/administration/cli/ . ++The full documentation for ++.B Grafana ++is available on-line at ++.BR http://docs.grafana.org/ . +Index: grafana-6.4.3/docs/man/man1/grafana-server.1 +=================================================================== +--- /dev/null ++++ grafana-6.4.3/docs/man/man1/grafana-server.1 +@@ -0,0 +1,156 @@ ++.TH VERSION "1" "February 2019" "Version 5.4.3" "User Commands" ++.SH NAME ++grafana-server \- back-end server for the Grafana metrics dashboard and graph editor ++.SH DESCRIPTION ++.B grafana-server ++is the back-end server for the Grafana metrics dashboard and graph editor. ++The ++.B grafana-server ++program should not normally be run from the command line, ++except when testing or for development purposes. ++Rather it should be managed by ++.BR systemd . ++After installing Grafana, the systemd service should be enabled and started as follows: ++.P ++.in 1i ++.B systemctl daemon-reload ++.br ++.B systemctl enable grafana-server.service ++.br ++.B systemctl start grafana-server.service ++.in ++.P ++.SH OPTIONS ++The ++.B gafana-server ++configuration is specified in ++.BR /etc/grafana/grafana.ini ++and is well documented with comments. ++The command-line options listed below override options of ++the same (or similar) name in the configuration file and also provide ++additional options for testing Grafana. ++.P ++.HP ++\fB\-config\fR string ++.IP ++path to config file ++.HP ++\fB\-homepath\fR string ++.IP ++path to grafana install/home path, defaults to working directory ++.HP ++\fB\-packaging\fR string ++.IP ++describes the way Grafana was installed (default "unknown") ++.HP ++\fB\-pidfile\fR string ++.IP ++path to pid file ++.HP ++\fB\-profile\fR ++.IP ++Turn on pprof profiling ++.HP ++\fB\-profile\-port\fR int ++.IP ++Define custom port for profiling (default 6060) ++.HP ++\fB\-test\fR.bench regexp ++.IP ++run only benchmarks matching regexp ++.HP ++\fB\-test\fR.benchmem ++.IP ++print memory allocations for benchmarks ++.HP ++\fB\-test\fR.benchtime d ++.IP ++run each benchmark for duration d (default 1s) ++.HP ++\fB\-test\fR.blockprofile file ++.IP ++write a goroutine blocking profile to file ++.HP ++\fB\-test\fR.blockprofilerate rate ++.IP ++set blocking profile rate (see runtime.SetBlockProfileRate) (default 1) ++.HP ++\fB\-test\fR.count n ++.IP ++run tests and benchmarks n times (default 1) ++.HP ++\fB\-test\fR.coverprofile file ++.IP ++write a coverage profile to file ++.HP ++\fB\-test\fR.cpu list ++.IP ++comma\-separated list of cpu counts to run each test with ++.HP ++\fB\-test\fR.cpuprofile file ++.IP ++write a cpu profile to file ++.HP ++\fB\-test\fR.failfast ++.IP ++do not start new tests after the first test failure ++.HP ++\fB\-test\fR.list regexp ++.IP ++list tests, examples, and benchmarks matching regexp then exit ++.HP ++\fB\-test\fR.memprofile file ++.IP ++write a memory profile to file ++.HP ++\fB\-test\fR.memprofilerate rate ++.IP ++set memory profiling rate (see runtime.MemProfileRate) ++.HP ++\fB\-test\fR.mutexprofile string ++.IP ++write a mutex contention profile to the named file after execution ++.HP ++\fB\-test\fR.mutexprofilefraction int ++.IP ++if >= 0, calls runtime.SetMutexProfileFraction() (default 1) ++.HP ++\fB\-test\fR.outputdir dir ++.IP ++write profiles to dir ++.HP ++\fB\-test\fR.parallel n ++.IP ++run at most n tests in parallel (default 8) ++.HP ++\fB\-test\fR.run regexp ++.IP ++run only tests and examples matching regexp ++.HP ++\fB\-test\fR.short ++.IP ++run smaller test suite to save time ++.HP ++\fB\-test\fR.testlogfile file ++.IP ++write test action log to file (for use only by cmd/go) ++.HP ++\fB\-test\fR.timeout d ++.IP ++panic test binary after duration d (default 0, timeout disabled) ++.HP ++\fB\-test\fR.trace file ++.IP ++write an execution trace to file ++.HP ++\fB\-test\fR.v ++.IP ++verbose: print additional output ++.TP ++\fB\-v\fR ++prints current version and exits ++.SH "SEE ALSO" ++The full documentation for ++.B Grafana ++is available on-line at ++.BR http://docs.grafana.org/ . +Index: grafana-6.4.3/packaging/rpm/spec/README +=================================================================== +--- /dev/null ++++ grafana-6.4.3/packaging/rpm/spec/README +@@ -0,0 +1,7 @@ ++The make_webpack.sh script in this directory can be used to create ++a webpack tarball of all the nodejs dependencies needed to build a ++particular tagged version of grafana, along with the grafana tarball ++itself. After running the script, the two tarballs should be copied ++to your rpmbuild SOURCES. You can then run a native rpm spec build ++using grafana.spec. ++ +Index: grafana-6.4.3/packaging/rpm/spec/grafana.spec +=================================================================== +--- /dev/null ++++ grafana-6.4.3/packaging/rpm/spec/grafana.spec +@@ -0,0 +1,737 @@ ++%global grafana_arches %{lua: go_arches = {} ++ for arch in rpm.expand("%{go_arches}"):gmatch("%S+") do ++ go_arches[arch] = 1 ++ end ++ for arch in rpm.expand("%{nodejs_arches}"):gmatch("%S+") do ++ if go_arches[arch] then ++ print(arch .. " ") ++ end ++end} ++ ++# Unbundle grafana vendor sources and instead use BuildRequires ++# only on platforms that have enough golang devel support. ++%if 0%{?rhel} == 0 ++%global unbundle_vendor_sources 1 ++%endif ++ ++ ++Name: grafana ++Version: 6.3.4 ++Release: 1%{?dist} ++Summary: Metrics dashboard and graph editor ++License: ASL 2.0 ++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 ++ ++# Patches for upstream ++Patch1: 001-login-oauth-use-oauth2-exchange.patch ++Patch2: 002-remove-jaeger-tracing.patch ++Patch3: 003-new-files.patch ++Patch4: 004-fix-uaparser-32bit.patch ++ ++# Intersection of go_arches and nodejs_arches ++ExclusiveArch: %{grafana_arches} ++ ++# omit golang debugsource, see BZ995136 and related ++%global _debugsource_template %{nil} ++ ++%global GRAFANA_USER %{name} ++%global GRAFANA_GROUP %{name} ++%global GRAFANA_HOME %{_datadir}/%{name} ++ ++# grafana-server service daemon uses systemd ++%{?systemd_requires} ++Requires(pre): shadow-utils ++ ++BuildRequires: git, systemd, golang, go-srpm-macros ++ ++Recommends: grafana-cloudwatch = %{version}-%{release} ++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/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/BurntSushi/toml) ++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(google.golang.org/appengine) ++BuildRequires: golang(golang.org/x/sys/unix) ++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(google.golang.org/genproto/googleapis/rpc/status) ++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/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(google.golang.org/grpc) ++BuildRequires: golang(github.com/hashicorp/go-hclog) ++# need grpc_broker in go-plugin >= 1.0.0-1 ++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/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-prometheus-common-devel ++BuildRequires: golang(github.com/prometheus/common/expfmt) ++BuildRequires: golang(github.com/prometheus/common/model) ++BuildRequires: golang(github.com/prometheus/common/expfmt) ++BuildRequires: golang(github.com/prometheus/procfs) ++BuildRequires: golang(github.com/prometheus/procfs/internal/util) ++BuildRequires: golang(github.com/prometheus/procfs) ++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/Unknwon/com) ++BuildRequires: golang(github.com/VividCortex/mysqlerr) ++BuildRequires: golang(github.com/yudai/gojsondiff) ++BuildRequires: golang(github.com/yudai/golcs) ++BuildRequires: golang(golang.org/x/crypto/pbkdf2) ++BuildRequires: golang(golang.org/x/crypto/ed25519) ++BuildRequires: golang(golang.org/x/crypto/md4) ++BuildRequires: golang(golang.org/x/net/context) ++BuildRequires: golang(golang.org/x/net/context/ctxhttp) ++BuildRequires: golang(golang.org/x/net/http2) ++BuildRequires: golang(golang.org/x/net/http2/hpack) ++BuildRequires: golang(golang.org/x/net/http/httpguts) ++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/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(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(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/duration) ++BuildRequires: golang(github.com/golang/protobuf/ptypes/any) ++BuildRequires: golang(github.com/golang/protobuf/ptypes/timestamp) ++BuildRequires: golang(cloud.google.com/go/compute/metadata) ++BuildRequires: golang(gopkg.in/alexcesaro/quotedprintable.v3) ++BuildRequires: golang(gopkg.in/asn1-ber.v1) ++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(gopkg.in/square/go-jose.v2) ++BuildRequires: golang(gopkg.in/square/go-jose.v2/cipher) ++BuildRequires: golang(gopkg.in/square/go-jose.v2/json) ++BuildRequires: golang(github.com/go-yaml/yaml) ++BuildRequires: golang(golang.org/x/sync/errgroup) ++BuildRequires: golang(gopkg.in/ldap.v3) ++BuildRequires: golang(gopkg.in/mail.v2) ++BuildRequires: golang(github.com/jonboulle/clockwork) ++%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-lodash) = 4.17.11 ++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-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 ++ ++%description cloudwatch ++The Grafana cloudwatch datasource. ++ ++%package elasticsearch ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana elasticsearch datasource ++ ++%description elasticsearch ++The Grafana elasticsearch datasource. ++ ++%package azure-monitor ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana azure-monitor datasource ++ ++%description azure-monitor ++The Grafana azure-monitor datasource. ++ ++%package graphite ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana graphite datasource ++ ++%description graphite ++The Grafana graphite datasource. ++ ++%package influxdb ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana influxdb datasource ++ ++%description influxdb ++The Grafana influxdb datasource. ++ ++%package loki ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana loki datasource ++ ++%description loki ++The Grafana loki datasource. ++ ++%package mssql ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana mssql datasource ++ ++%description mssql ++The Grafana mssql datasource. ++ ++%package mysql ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana mysql datasource ++ ++%description mysql ++The Grafana mysql datasource. ++ ++%package opentsdb ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana opentsdb datasource ++ ++%description opentsdb ++The Grafana opentsdb datasource. ++ ++%package postgres ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana postgres datasource ++ ++%description postgres ++The Grafana postgres datasource. ++ ++%package prometheus ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana prometheus datasource ++ ++%description prometheus ++The Grafana prometheus datasource. ++ ++%package stackdriver ++Requires: %{name} = %{version}-%{release} ++Summary: Grafana stackdriver datasource ++ ++%description stackdriver ++The Grafana stackdriver datasource. ++ ++ ++%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 ++ ++ ++%build ++# Build the server-side binaries: grafana-server and grafana-cli ++%if 0%{?gobuild} ++# use modern go macros such as in recent Fedora ++export GOPATH=%{_builddir}:%{gopath} ++%gobuild -o grafana-cli ./pkg/cmd/grafana-cli ++%gobuild -o grafana-server ./pkg/cmd/grafana-server ++%else ++cd %{_builddir}/src/github.com/grafana/grafana ++export GOPATH=%{_builddir}:%{gopath} ++go run build.go build ++%endif ++ ++ ++%install ++# 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 ++ ++# dirs, shared files, public html, webpack ++install -d %{buildroot}%{_sbindir} ++install -d %{buildroot}%{_datadir}/%{name}/bin ++cp -a conf public %{buildroot}%{_datadir}/%{name} ++ ++# wrappers ++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 %{buildroot}%{_mandir}/man1 ++install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 ++ ++# config dirs ++install -d %{buildroot}%{_sysconfdir}/%{name} ++install -d %{buildroot}%{_sysconfdir}/sysconfig ++ ++# config defaults ++install -p -m 644 conf/distro-defaults.ini \ ++ %{buildroot}%{_sysconfdir}/%{name}/grafana.ini ++install -p -m 644 conf/distro-defaults.ini \ ++ %{buildroot}%{_datadir}/%{name}/conf/defaults.ini ++install -p -m 644 conf/ldap.toml %{buildroot}%{_sysconfdir}/%{name}/ldap.toml ++install -p -m 644 packaging/rpm/sysconfig/grafana-server \ ++ %{buildroot}%{_sysconfdir}/sysconfig/grafana-server ++ ++# config database directory and plugins ++install -d %{buildroot}%{_sharedstatedir}/%{name} ++install -d -m 755 %{buildroot}%{_sharedstatedir}/%{name} ++install -d -m 755 %{buildroot}%{_sharedstatedir}/%{name}/plugins ++ ++# log directory ++install -d %{buildroot}%{_localstatedir}/log/%{name} ++ ++# systemd service files ++install -d %{buildroot}%{_unitdir} # only needed for manual rpmbuilds ++install -p -m 644 packaging/rpm/systemd/grafana-server.service \ ++ %{buildroot}%{_unitdir} ++ ++# 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 ++ ++%pre ++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 account" %{GRAFANA_USER} ++exit 0 ++ ++%preun ++%systemd_preun grafana-server.service ++ ++%post ++%systemd_post grafana-server.service ++ ++%postun ++%systemd_postun_with_restart grafana-server.service ++ ++ ++%check ++cd %{_builddir}/src/github.com/grafana/grafana ++export GOPATH=%{_builddir}:%{gopath} ++# 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 ++go test ./pkg/... ++ ++ ++%files ++# binaries ++%{_sbindir}/%{name}-server ++%{_sbindir}/%{name}-cli ++ ++# config files ++%dir %{_sysconfdir}/%{name} ++%config(noreplace) %attr(644, root, %{GRAFANA_GROUP}) %{_sysconfdir}/%{name}/grafana.ini ++%config(noreplace) %attr(644, root, %{GRAFANA_GROUP}) %{_sysconfdir}/%{name}/ldap.toml ++%config(noreplace) %{_sysconfdir}/sysconfig/grafana-server ++ ++# Grafana configuration to dynamically create /run/grafana/grafana.pid on tmpfs ++%{_tmpfilesdir}/%{name}.conf ++ ++# config database directory and plugins (actual db files are created by grafana-server) ++%attr(-, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name} ++%attr(-, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name}/plugins ++ ++# shared directory and all files therein, except some datasources ++%{_datadir}/%{name}/bin ++%{_datadir}/%{name}/public ++ ++# 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 ++ ++%dir %{_datadir}/%{name}/conf ++%attr(-, root, %{GRAFANA_GROUP}) %{_datadir}/%{name}/conf/* ++ ++# systemd service file ++%{_unitdir}/grafana-server.service ++ ++# log directory - grafana.log is created by grafana-server, and it does it's own log rotation ++%attr(0755, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_localstatedir}/log/%{name} ++ ++# man pages for grafana binaries ++%{_mandir}/man1/%{name}-server.1* ++%{_mandir}/man1/%{name}-cli.1* ++ ++# other docs and license ++%license LICENSE ++%doc CHANGELOG.md CODE_OF_CONDUCT.md CONTRIBUTING.md NOTICE.md ++%doc PLUGIN_DEV.md README.md ROADMAP.md UPGRADING_DEPENDENCIES.md ++ ++# ++# 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 ++ ++ ++%changelog ++* Fri Aug 30 2019 Mark Goodwin 6.3.4-1 ++- add patch for uaparser on 32bit systems ++- update to latest upstream community sources, see CHANGELOG ++ ++* Wed Jul 31 2019 Mark Goodwin 6.2.5-1 ++- update to latest upstream community sources, see CHANGELOG ++ ++* Thu Jul 25 2019 Fedora Release Engineering - 6.2.2-2 ++- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild ++ ++* Fri Jun 07 2019 Mark Goodwin 6.2.2-1 ++- split out some datasource plugins to sub-packages ++- update to latest upstream community sources, see CHANGELOG ++ ++* Wed Jun 05 2019 Mark Goodwin 6.2.1-1 ++- update to latest upstream community sources, see CHANGELOG ++ ++* Fri May 24 2019 Mark Goodwin 6.2.0-1 ++- update to latest upstream community sources ++- drop a couple of patches ++ ++* Wed May 08 2019 Mark Goodwin 6.1.6-2 ++- add conditional unbundle_vendor_sources macro ++ ++* Tue Apr 30 2019 Mark Goodwin 6.1.6-1 ++- update to latest upstream stable release 6.1.6, see CHANGELOG ++- includes jQuery 3.4.0 security update ++ ++* Wed Apr 24 2019 Mark Goodwin 6.1.4-1 ++- update to latest upstream stable release 6.1.4, see CHANGELOG ++- use gobuild and gochecks macros, eliminate arch symlinks ++- re-enable grafana-debugsource package ++- fix GRAFANA_GROUP typo ++- fix more modes for brp-mangle-shebangs ++- vendor source unbundling now done in prep after patches ++- remove all rhel and fedora conditional guff ++ ++* Tue Apr 16 2019 Mark Goodwin 6.1.3-1 ++- update to latest upstream stable release 6.1.3, see CHANGELOG ++- unbundle all vendor sources, replace with BuildRequires, see ++ the long list of blocker BZs linked to BZ#1670656 ++- BuildRequires go-plugin >= v1.0.0 for grpc_broker (thanks eclipseo) ++- tweak make_webpack to no longer use grunt, switch to prod build ++- add ExclusiveArch lua script (thanks quantum.analyst) ++- move db directory and plugins to /var/lib/grafana ++- split out into 6 patches, ready for upstream PRs ++- add check to run go tests for gating checks ++ ++* Thu Apr 04 2019 Mark Goodwin 6.1.0-1 ++- update to latest upstream stable release 6.1.0, see CHANGELOG ++ ++* Thu Mar 21 2019 Mark Goodwin 6.0.2-1 ++- bump to latest upstream stable release 6.0.2-1 ++- unbundle almost all remaining vendor code, see linked blockers in BZ#1670656 ++ ++* Fri Mar 15 2019 Mark Goodwin 6.0.1-3 ++- bump to latest upstream stable release 6.0.1-1 ++ ++* Thu Mar 14 2019 Mark Goodwin 6.0.1-2 ++- unbundle and add BuildRequires for golang-github-rainycape-unidecode-devel ++ ++* Thu Mar 07 2019 Mark Goodwin 6.0.1-1 ++- update to v6.0.1 upstream sources, tweak distro config, re-do patch ++- simplify make_webpack.sh script (Elliott Sales de Andrade) ++- vendor/github.com/go-ldap is now gone, so don't unbundle it ++ ++* Thu Mar 07 2019 Mark Goodwin 5.4.3-11 ++- tweak after latest feedback, bump to 5.4.3-11 (BZ 1670656) ++- build debuginfo package again ++- unbundle BuildRequires for golang-github-hashicorp-version-devel ++- remove some unneeded development files ++- remove macros from changelog and other rpmlint tweaks ++ ++* Fri Feb 22 2019 Mark Goodwin 5.4.3-10 ++- tweak spec for available and unavailable (bundled) golang packages ++ ++* Wed Feb 20 2019 Xavier Bachelot 5.4.3-9 ++- Remove extraneous slash (cosmetic) ++- Create directories just before moving stuff in them ++- Truncate long lines ++- Group all golang stuff ++- Simplify BuildRequires/bundled Provides ++- Sort BuildRequires/bundled Provides ++- Fix bundled go packages Provides ++ ++* Fri Feb 15 2019 Mark Goodwin 5.4.3-8 ++- add BuildRequires (and unbundle) vendor sources available in Fedora ++- declare Provides for remaining (bundled) vendor go sources ++- do not attempt to unbundle anything on RHEL < 7 or Fedora < 28 ++ ++* Thu Feb 07 2019 Mark Goodwin 5.4.3-7 ++- further refinement for spec doc section from Xavier Bachelot ++- disable debug_package to avoid empty debugsourcefiles.list ++ ++* Wed Feb 06 2019 Mark Goodwin 5.4.3-6 ++- further refinement following review by Xavier Bachelot ++ ++* Tue Feb 05 2019 Mark Goodwin 5.4.3-5 ++- further refinement following review by Xavier Bachelot ++ ++* Fri Feb 01 2019 Mark Goodwin 5.4.3-4 ++- further spec updates after packaging review ++- reworked post-install scriplets ++ ++* Thu Jan 31 2019 Mark Goodwin 5.4.3-3 ++- tweak FHS patch, update spec after packaging review ++ ++* Wed Jan 30 2019 Mark Goodwin 5.4.3-2 ++- add patch to be standard FHS compliant, remove phantomjs ++- update to v5.4.3 upstream community sources ++ ++* Wed Jan 09 2019 Mark Goodwin 5.4.2-1 ++- update to v5.4.2 upstream community sources ++ ++* Thu Oct 18 2018 Mark Goodwin 5.3.1-1 ++- update to v5.3.1 upstream community sources ++ ++* Tue Oct 02 2018 Mark Goodwin 5.2.5-1 ++- native RPM spec build with current tagged v5.2.5 sources +Index: grafana-6.4.3/packaging/rpm/spec/make_grafana_webpack.sh +=================================================================== +--- /dev/null ++++ grafana-6.4.3/packaging/rpm/spec/make_grafana_webpack.sh +@@ -0,0 +1,61 @@ ++#! /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 diff --git a/004-distro-defaults-ini.patch b/004-distro-defaults-ini.patch new file mode 100644 index 0000000..4e1aa31 --- /dev/null +++ b/004-distro-defaults-ini.patch @@ -0,0 +1,24 @@ +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 diff --git a/Makefile.no_phantomjs b/Makefile.no_phantomjs deleted file mode 100644 index a6c25b4..0000000 --- a/Makefile.no_phantomjs +++ /dev/null @@ -1,39 +0,0 @@ -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 && \ - sed -i 's/base\///' public/sass/base/_fonts.scss && \ - # patch frontend html template to remove phantomjs dependant link \ - sed -i 's/.*<\/a>//g' public/app/features/dashboard/components/ShareModal/template.html && \ - 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 phantomjs binary \ - tar -f ../$$tar --delete $$basename/tools/phantomjs/phantomjs && \ - # 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 diff --git a/Makefile.phantomjs b/Makefile.phantomjs deleted file mode 100644 index 4098c71..0000000 --- a/Makefile.phantomjs +++ /dev/null @@ -1,33 +0,0 @@ -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 && \ - sed -i 's/base\///' public/sass/base/_fonts.scss && \ - 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 && \ - cd .. && \ - xz $$tar && \ - rm -rf $$tmpdir diff --git a/README b/README deleted file mode 100644 index d9d5611..0000000 --- a/README +++ /dev/null @@ -1,27 +0,0 @@ - -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, yarn and grunt -installed. To get set up, run: - - # zypper in npm - # 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 diff --git a/_service b/_service deleted file mode 100644 index 955c8a7..0000000 --- a/_service +++ /dev/null @@ -1,13 +0,0 @@ - - - https://github.com/grafana/grafana - git - .git - 6.3.5 - v6.3.5 - enable - - - grafana - - diff --git a/_servicedata b/_servicedata deleted file mode 100644 index da109ca..0000000 --- a/_servicedata +++ /dev/null @@ -1,6 +0,0 @@ - - - https://github.com/grafana/grafana - 67bad726f12efb21893c75c141f2330a4a3cbe2a - - \ No newline at end of file diff --git a/grafana-6.3.5.tar.xz b/grafana-6.3.5.tar.xz deleted file mode 100644 index 7665151..0000000 --- a/grafana-6.3.5.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fdfcabcdb8f4207efb6e1d8c55861f92ea9558f570f384a35eabc9a5a234a306 -size 17615204 diff --git a/grafana-6.4.3.tar.gz b/grafana-6.4.3.tar.gz new file mode 100644 index 0000000..ca2cc01 --- /dev/null +++ b/grafana-6.4.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ed2bbaae731c0d168800ed41af2bd18e3df50abb6c9852347d4488a5cc8d63b +size 13805699 diff --git a/grafana.changes b/grafana.changes index 4b0bbb9..a6f14b1 100644 --- a/grafana.changes +++ b/grafana.changes @@ -1,3 +1,162 @@ +------------------------------------------------------------------- +Wed Oct 16 19:29:48 UTC 2019 - ecsos@opensuse.org + +- Update to 6.4.3 + * Bug Fixes + - Alerting: All notification channels should send even if one fails to send. #19807, @jan25 + - AzureMonitor: Fix slate interference with dropdowns. #19799, @aocenas + - ContextMenu: make ContextMenu positioning aware of the viewport width. #19699, @krvajal + - DataLinks: Fix context menu not showing in singlestat-ish visualisations. #19809, @dprokop + - DataLinks: Fix url field not releasing focus. #19804, @aocenas + - Datasource: Fixes clicking outside of some query editors required 2 clicks. #19822, @aocenas + - Panels: Fixes default tab for visualizations without Queries Tab. #19803, @hugohaggmark + - Singlestat: Fixed issue with mapping null to text. #19689, @torkelo + - @grafana/toolkit: Don't fail plugin creation when git user.name config is not set. #19821, @dprokop + - @grafana/toolkit: TSLint line number off by 1. #19782, @fredwangwang + +------------------------------------------------------------------- +Wed Oct 16 15:31:57 UTC 2019 - ecsos@opensuse.org + +- Update to 6.4.2 + * Bug Fixes + - CloudWatch: Changes incorrect dimension wmlid to wlmid . #19679, @ATTron + - Grafana Image Renderer: Fixes plugin page. #19664, @hugohaggmark + - Graph: Fixes auto decimals logic for y axis ticks that results in too many decimals for high values. #19618, @torkelo + - Graph: Switching to series mode should re-render graph. #19623, @torkelo + - Loki: Fix autocomplete on label values. #19579, @aocenas + - Loki: Removes live option for logs panel. #19533, @davkal + - Profile: Fix issue with user profile not showing more than sessions sessions in some cases. #19578, @huynhsamha + - Prometheus: Fixes so results in Panel always are sorted by query order. #19597, @hugohaggmark + - ShareQuery: Fixed issue when using -- Dashboard -- datasource (to share query result) when dashboard had rows. #19610, @torkelo + - Show SAML login button if SAML is enabled. #19591, @papagian + - SingleStat: Fixes postfix/prefix usage. #19687, @hugohaggmark + - Table: Proper handling of json data with dataframes. #19596, @marefr + - Units: Fixed wrong id for Terabits/sec. #19611, @andreaslangnevyjel + +- Changes from 6.4.1 + * Bug Fixes + - Provisioning: Fixed issue where empty nested keys in YAML provisioning caused a server crash, #19547 + - ImageRendering: Fixed issue with image rendering in enterprise build (Enterprise) + - Reporting: Fixed issue with reporting service when STMP was disabled (Enterprise). + +- Changes from 6.4.0 + * Features / Enhancements + - Build: Upgrade go to 1.12.10. #19499, @marefr + - DataLinks: Suggestions menu improvements. #19396, @dprokop + - Explore: Take root_url setting into account when redirecting from dashboard to explore. #19447, @ivanahuckova + - Explore: Update broken link to logql docs. #19510, @ivanahuckova + - Logs: Adds Logs Panel as a visualization. #19504, @davkal + * Bug Fixes + - CLI: Fix version selection for plugin install. #19498, @aocenas + - Graph: Fixes minor issue with series override color picker and custom color . #19516, @torkelo + +- Changes from 6.4.0 Beta 2 + * Features / Enhancements + - Azure Monitor: Remove support for cross resource queries (#19115)". #19346, @sunker + - Docker: Upgrade packages to resolve reported vulnerabilities. #19188, @marefr + - Graphite: Time range expansion reduced from 1 minute to 1 second. #19246, @torkelo + - grafana/toolkit: Add plugin creation task. #19207, @dprokop + * Bug Fixes + - Alerting: Prevents creating alerts from unsupported queries. #19250, @hugohaggmark + - Alerting: Truncate PagerDuty summary when greater than 1024 characters. #18730, @nvllsvm + - Cloudwatch: Fix autocomplete for Gamelift dimensions. #19146, @kevinpz + - Dashboard: Fix export for sharing when panels use default data source. #19315, @torkelo + - Database: Rewrite system statistics query to perform better. #19178, @papagian + - Gauge/BarGauge: Fix issue with [object Object] in titles . #19217, @ryantxu + - MSSQL: Revert usage of new connectionstring format introduced by #18384. #19203, @marefr + - Multi-LDAP: Do not fail-fast on invalid credentials. #19261, @gotjosh + - MySQL, Postgres, MSSQL: Fix validating query with template variables in alert . #19237, @marefr + - MySQL, Postgres: Update raw sql when query builder updates. #19209, @marefr + - MySQL: Limit datasource error details returned from the backend. #19373, @marefr + +- Changes from 6.4.0 Beta 1 + * Features / Enhancements + - API: Readonly datasources should not be created via the API. #19006, @papagian + - Alerting: Include configured AlertRuleTags in Webhooks notifier. #18233, @dominic-miglar + - Annotations: Add annotations support to Loki. #18949, @aocenas + - Annotations: Use a single row to represent a region. #17673, @ryantxu + - Auth: Allow inviting existing users when login form is disabled. #19048, @548017 + - Azure Monitor: Add support for cross resource queries. #19115, @sunker + - CLI: Allow installing custom binary plugins. #17551, @aocenas + - Dashboard: Adds Logs Panel (alpha) as visualization option for Dashboards. #18641, @hugohaggmark + - Dashboard: Reuse query results between panels . #16660, @ryantxu + - Dashboard: Set time to to 23:59:59 when setting To time using calendar. #18595, @simPod + - DataLinks: Add DataLinks support to Gauge, BarGauge and SingleStat2 panel. #18605, @ryantxu + - DataLinks: Enable access to labels & field names. #18918, @torkelo + - DataLinks: Enable multiple data links per panel. #18434, @dprokop + - Docker: switch docker image to alpine base with phantomjs support. #18468, @DanCech + - Elasticsearch: allow templating queries to order by doc_count. #18870, @hackery + - Explore: Add throttling when doing live queries. #19085, @aocenas + - Explore: Adds ability to go back to dashboard, optionally with query changes. #17982, @kaydelaney + - Explore: Reduce default time range to last hour. #18212, @davkal + - Gauge/BarGauge: Support decimals for min/max. #18368, @ryantxu + - Graph: New series override transform constant that renders a single point as a line across the whole graph. #19102, @davkal + - Image rendering: Add deprecation warning when PhantomJS is used for rendering images. #18933, @papagian + - InfluxDB: Enable interpolation within ad-hoc filter values. #18077, @kvc-code + - LDAP: Allow an user to be synchronized against LDAP. #18976, @gotjosh + - Ldap: Add ldap debug page. #18759, @peterholmberg + - Loki: Remove prefetching of default label values. #18213, @davkal + - Metrics: Add failed alert notifications metric. #18089, @koorgoo + - OAuth: Support JMES path lookup when retrieving user email. #14683, @bobmshannon + - OAuth: return GitLab groups as a part of user info (enable team sync). #18388, @alexanderzobnin + - Panels: Add unit for electrical charge - ampere-hour. #18950, @anirudh-ramesh + - Plugin: AzureMonitor - Reapply MetricNamespace support. #17282, @raphaelquati + - Plugins: better warning when plugins fail to load. #18671, @ryantxu + - Postgres: Add support for scram sha 256 authentication. #18397, @nonamef + - RemoteCache: Support SSL with Redis. #18511, @kylebrandt + - SingleStat: The gauge option in now disabled/hidden (unless it's an old panel with it already enabled) . #18610, @ryantxu + - Stackdriver: Add extra alignment period options. #18909, @sunker + - Units: Add South African Rand (ZAR) to currencies. #18893, @jeteon + - Units: Adding T,P,E,Z,and Y bytes. #18706, @chiqomar + * Bug Fixes + - Alerting: Notification is sent when state changes from no_data to ok. #18920, @papagian + - Alerting: fix duplicate alert states when the alert fails to save to the database. #18216, @kylebrandt + - Alerting: fix response popover prompt when add notification channels. #18967, @lzdw + - CloudWatch: Fix alerting for queries with Id (using GetMetricData). #17899, @alex-berger + - Explore: Fix auto completion on label values for Loki. #18988, @aocenas + - Explore: Fixes crash using back button with a zoomed in graph. #19122, @hugohaggmark + - Explore: Fixes so queries in Explore are only run if Graph/Table is shown. #19000, @hugohaggmark + - MSSQL: Change connectionstring to URL format to fix using passwords with semicolon. #18384, @Russiancold + - MSSQL: Fix memory leak when debug enabled. #19049, @briangann + - Provisioning: Allow escaping literal '$' with '$$' in configs to avoid interpolation. #18045, @kylebrandt + - TimePicker: Fixes hiding time picker dropdown in FireFox. #19154, @hugohaggmark + * Breaking changes + + Annotations + There are some breaking changes in the annotations HTTP API for region annotations. Region annotations are now represented + using a single event instead of two seperate events. Check breaking changes in HTTP API below and HTTP API documentation for more details. + + Docker + Grafana is now using Alpine 3.10 as docker base image. + + HTTP API + - GET /api/alert-notifications now requires at least editor access. + New /api/alert-notifications/lookup returns less information than /api/alert-notifications and can be access by any authenticated user. + - GET /api/alert-notifiers now requires at least editor access + - GET /api/org/users now requires org admin role. + New /api/org/users/lookup returns less information than /api/org/users and can be access by users that are org admins, + admin in any folder or admin of any team. + - GET /api/annotations no longer returns regionId property. + - POST /api/annotations no longer supports isRegion property. + - PUT /api/annotations/:id no longer supports isRegion property. + - PATCH /api/annotations/:id no longer supports isRegion property. + - DELETE /api/annotations/region/:id has been removed. + * Deprecation notes + + PhantomJS + - PhantomJS, which is used for rendering images of dashboards and panels, + is deprecated and will be removed in a future Grafana release. + A deprecation warning will from now on be logged when Grafana starts up if PhantomJS is in use. + Please consider migrating from PhantomJS to the Grafana Image Renderer plugin. + +- Changes from 6.3.6 + * Features / Enhancements + - Metrics: Adds setting for turning off total stats metrics. #19142, @marefr + * Bug Fixes + - Database: Rewrite system statistics query to perform better. #19178, @papagian + - Explore: Fixes error when switching from prometheus to loki data sources. #18599, @kaydelaney + +- Rebase package spec. Use mostly from fedora, fix suse specified things and fix some errors. +- Add missing directories provisioning/datasources and provisioning/notifiers + and sample.yaml as described in packaging/rpm/control from upstream. + Missing directories are shown in logfiles. + ------------------------------------------------------------------- Thu Sep 05 08:07:21 UTC 2019 - simon.crute@grafana.com diff --git a/grafana.spec b/grafana.spec index f4c55f1..ca2c2b8 100644 --- a/grafana.spec +++ b/grafana.spec @@ -16,99 +16,490 @@ # -%define GRAFANA_USER %{name} -%define GRAFANA_GROUP %{name} -%define GRAFANA_HOME %{_datadir}/%{name} +# Unbundle grafana vendor sources and instead use BuildRequires +# only on platforms that have enough golang devel support. +%global unbundle_vendor_sources 0 -#Compat macro for new _fillupdir macro introduced in Nov 2017 -%if ! %{defined _fillupdir} - %define _fillupdir /var/adm/fillup-templates -%endif - -%bcond_with phantomjs +# omit golang debugsource, see BZ995136 and related +%global _debugsource_template %{nil} +%global GRAFANA_USER %{name} +%global GRAFANA_GROUP %{name} +%global GRAFANA_HOME %{_datadir}/%{name} Name: grafana -Version: 6.3.5 -Release: 0 -Summary: Dashboards and editors for Graphite, InfluxDB, OpenTSDB +Version: 6.4.3 +Release: 1%{?dist} +Summary: Metrics dashboard and graph editor License: Apache-2.0 Group: System/Monitoring -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.no_phantomjs -Source4: Makefile.phantomjs -BuildRequires: fdupes -BuildRequires: go >= 1.11 -BuildRequires: golang-packaging -BuildRequires: shadow +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 -BuildRoot: %{_tmppath}/%{name}-%{version}-build -%if %{with phantomjs} -BuildRequires: phantomjs -Requires: phantomjs -%endif +BuildRequires: fdupes +BuildRequires: gettext-tools +BuildRequires: config(krb5) +BuildRequires: go >= 1.12.9 +BuildRequires: golang-packaging +# Without cloudwatch you can not add data sources +Requires: grafana-cloudwatch = %{version}-%{release} + %{?systemd_requires} -%description -A graph and dashboard builder for visualizing time series metrics. +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. -Grafana provides ways to create, explore, and share -dashboards and data with teams. %prep -%setup -q -n grafana-%{version} -%if %{with phantomjs} -cp %{S:4} %_sourcedir/Makefile -%else -cp %{S:3} %_sourcedir/Makefile +%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 %build %goprep github.com/grafana/grafana -# 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/... +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 %install %goinstall -# we're missing %%gosrc and %%gofilelist... (although that *might* be ok...) +# 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 -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} +# 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 -d -m0750 %{buildroot}%{_localstatedir}/log/%{name} -install -d -m0755 %{buildroot}/%{_localstatedir}/lib/%{name}/plugins -install -d -m0755 %{buildroot}/%{_localstatedir}/lib/%{name}/dashboards +install -d -m0750 %{buildroot}%{_sharedstatedir}/%{name} +install -d -m0755 %{buildroot}%{_sharedstatedir}/%{name}/plugins +install -d -m0755 %{buildroot}%{_sharedstatedir}/%{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 -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 +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 @@ -127,19 +518,28 @@ ln -s %{_bindir}/phantomjs %{buildroot}%{_datadir}/%{name}/tools/phantomjs/phant %fdupes %{buildroot}/%{_datadir} %check -#gotest github.com/grafana/grafana/pkg... +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/... %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_GROUP} > /dev/null || useradd -r -g %{GRAFANA_GROUP} \ --d %{GRAFANA_HOME} -s /sbin/nologin -c "%{GRAFANA_USER} user" %{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 %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 @@ -148,27 +548,101 @@ getent passwd %{GRAFANA_GROUP} > /dev/null || useradd -r -g %{GRAFANA_GROUP} \ %service_del_postun %{name}-server.service %files -%defattr(-,root,root) -%license LICENSE* -%doc CHANGELOG* -%{_sbindir}/%{name}* -%{_sbindir}/rc%{name}-server -%{_unitdir}/%{name}-server.service -%{_fillupdir}/sysconfig.%{name}-server -%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 +%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 +%{_sbindir}/rc%{name}-server +# man pages for grafana binaries +%{_mandir}/man1/%{name}-server.1* +%{_mandir}/man1/%{name}-cli.1* +# other +%{_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 %changelog diff --git a/grafana_webpack-6.4.3.tar.gz b/grafana_webpack-6.4.3.tar.gz new file mode 100644 index 0000000..2467f67 --- /dev/null +++ b/grafana_webpack-6.4.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45269de4b895b9406b393c7961863dc9b508ba1c9b3b0f37ccd0a4d544c34002 +size 7022676 diff --git a/make_grafana_webpack.sh b/make_grafana_webpack.sh new file mode 100644 index 0000000..bc0386b --- /dev/null +++ b/make_grafana_webpack.sh @@ -0,0 +1,61 @@ +#! /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 From 89794e01f3487ce6884623b9c8e74106ffb4717ffab2dcc73d41f906015168b1 Mon Sep 17 00:00:00 2001 From: Joao Cavalheiro Date: Thu, 5 Dec 2019 15:43:17 +0000 Subject: [PATCH 2/2] 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 --- 001-login-oauth-use-oauth2-exchange.patch | 13 - 002-remove-jaeger-tracing.patch | 208 ----- 003-new-files.patch | 1037 --------------------- 004-distro-defaults-ini.patch | 24 - Makefile | 39 + README | 27 + _service | 13 + _servicedata | 6 + grafana-6.4.3.tar.gz | 3 - grafana-6.4.3.tar.xz | 3 + grafana.changes | 6 + grafana.spec | 659 ++----------- grafana_webpack-6.4.3.tar.gz | 3 - make_grafana_webpack.sh | 61 -- 14 files changed, 175 insertions(+), 1927 deletions(-) delete mode 100644 001-login-oauth-use-oauth2-exchange.patch delete mode 100644 002-remove-jaeger-tracing.patch delete mode 100644 003-new-files.patch delete mode 100644 004-distro-defaults-ini.patch create mode 100644 Makefile create mode 100644 README create mode 100644 _service create mode 100644 _servicedata delete mode 100644 grafana-6.4.3.tar.gz create mode 100644 grafana-6.4.3.tar.xz delete mode 100644 grafana_webpack-6.4.3.tar.gz delete mode 100644 make_grafana_webpack.sh diff --git a/001-login-oauth-use-oauth2-exchange.patch b/001-login-oauth-use-oauth2-exchange.patch deleted file mode 100644 index 43664b4..0000000 --- a/001-login-oauth-use-oauth2-exchange.patch +++ /dev/null @@ -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 diff --git a/002-remove-jaeger-tracing.patch b/002-remove-jaeger-tracing.patch deleted file mode 100644 index 4972c8d..0000000 --- a/002-remove-jaeger-tracing.patch +++ /dev/null @@ -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) -- } -- } -- } --} diff --git a/003-new-files.patch b/003-new-files.patch deleted file mode 100644 index 27458f2..0000000 --- a/003-new-files.patch +++ /dev/null @@ -1,1037 +0,0 @@ -Index: grafana-6.4.3/docs/man/man1/grafana-cli.1 -=================================================================== ---- /dev/null -+++ grafana-6.4.3/docs/man/man1/grafana-cli.1 -@@ -0,0 +1,51 @@ -+.TH GRAFANA "1" "February 2019" "Grafana cli version 5.4.3" "User Commands" -+.SH NAME -+grafana-cli \- command line administration for the Grafana metrics dashboard and graph editor -+.SH DESCRIPTION -+.SS "NAME:" -+.IP -+grafana-cli -+.SS "USAGE:" -+.IP -+\fBgrafana\-cli\fP [\fIglobal options\fP] \fIcommand\fP [\fIcommand options\fP] [\fIarguments\fP...] -+.SS "COMMANDS:" -+.TP -+plugins -+Manage plugins for grafana -+.TP -+admin -+Grafana admin commands -+.TP -+help, h -+Shows a list of commands or help for one command -+.SS "GLOBAL OPTIONS:" -+.TP -+\fB\-\-pluginsDir\fR value -+path to the grafana plugin directory (default: "/var/lib/grafana/plugins") [$GF_PLUGIN_DIR] -+.TP -+\fB\-\-repo\fR value -+url to the plugin repository (default: "https://grafana.com/api/plugins") [$GF_PLUGIN_REPO] -+.TP -+\fB\-\-pluginUrl\fR value -+Full url to the plugin zip file instead of downloading the plugin from grafana.com/api [$GF_PLUGIN_URL] -+.TP -+\fB\-\-insecure\fR -+Skip TLS verification (insecure) -+.TP -+\fB\-\-debug\fR, \fB\-d\fR -+enable debug logging -+.TP -+\fB\-\-help\fR, \fB\-h\fR -+show help -+.TP -+\fB\-\-version\fR, \fB\-v\fR -+print the version -+.SH "SEE ALSO" -+Additional documentation for -+.B grafana-cli -+is available on-line at -+.BR http://docs.grafana.org/administration/cli/ . -+The full documentation for -+.B Grafana -+is available on-line at -+.BR http://docs.grafana.org/ . -Index: grafana-6.4.3/docs/man/man1/grafana-server.1 -=================================================================== ---- /dev/null -+++ grafana-6.4.3/docs/man/man1/grafana-server.1 -@@ -0,0 +1,156 @@ -+.TH VERSION "1" "February 2019" "Version 5.4.3" "User Commands" -+.SH NAME -+grafana-server \- back-end server for the Grafana metrics dashboard and graph editor -+.SH DESCRIPTION -+.B grafana-server -+is the back-end server for the Grafana metrics dashboard and graph editor. -+The -+.B grafana-server -+program should not normally be run from the command line, -+except when testing or for development purposes. -+Rather it should be managed by -+.BR systemd . -+After installing Grafana, the systemd service should be enabled and started as follows: -+.P -+.in 1i -+.B systemctl daemon-reload -+.br -+.B systemctl enable grafana-server.service -+.br -+.B systemctl start grafana-server.service -+.in -+.P -+.SH OPTIONS -+The -+.B gafana-server -+configuration is specified in -+.BR /etc/grafana/grafana.ini -+and is well documented with comments. -+The command-line options listed below override options of -+the same (or similar) name in the configuration file and also provide -+additional options for testing Grafana. -+.P -+.HP -+\fB\-config\fR string -+.IP -+path to config file -+.HP -+\fB\-homepath\fR string -+.IP -+path to grafana install/home path, defaults to working directory -+.HP -+\fB\-packaging\fR string -+.IP -+describes the way Grafana was installed (default "unknown") -+.HP -+\fB\-pidfile\fR string -+.IP -+path to pid file -+.HP -+\fB\-profile\fR -+.IP -+Turn on pprof profiling -+.HP -+\fB\-profile\-port\fR int -+.IP -+Define custom port for profiling (default 6060) -+.HP -+\fB\-test\fR.bench regexp -+.IP -+run only benchmarks matching regexp -+.HP -+\fB\-test\fR.benchmem -+.IP -+print memory allocations for benchmarks -+.HP -+\fB\-test\fR.benchtime d -+.IP -+run each benchmark for duration d (default 1s) -+.HP -+\fB\-test\fR.blockprofile file -+.IP -+write a goroutine blocking profile to file -+.HP -+\fB\-test\fR.blockprofilerate rate -+.IP -+set blocking profile rate (see runtime.SetBlockProfileRate) (default 1) -+.HP -+\fB\-test\fR.count n -+.IP -+run tests and benchmarks n times (default 1) -+.HP -+\fB\-test\fR.coverprofile file -+.IP -+write a coverage profile to file -+.HP -+\fB\-test\fR.cpu list -+.IP -+comma\-separated list of cpu counts to run each test with -+.HP -+\fB\-test\fR.cpuprofile file -+.IP -+write a cpu profile to file -+.HP -+\fB\-test\fR.failfast -+.IP -+do not start new tests after the first test failure -+.HP -+\fB\-test\fR.list regexp -+.IP -+list tests, examples, and benchmarks matching regexp then exit -+.HP -+\fB\-test\fR.memprofile file -+.IP -+write a memory profile to file -+.HP -+\fB\-test\fR.memprofilerate rate -+.IP -+set memory profiling rate (see runtime.MemProfileRate) -+.HP -+\fB\-test\fR.mutexprofile string -+.IP -+write a mutex contention profile to the named file after execution -+.HP -+\fB\-test\fR.mutexprofilefraction int -+.IP -+if >= 0, calls runtime.SetMutexProfileFraction() (default 1) -+.HP -+\fB\-test\fR.outputdir dir -+.IP -+write profiles to dir -+.HP -+\fB\-test\fR.parallel n -+.IP -+run at most n tests in parallel (default 8) -+.HP -+\fB\-test\fR.run regexp -+.IP -+run only tests and examples matching regexp -+.HP -+\fB\-test\fR.short -+.IP -+run smaller test suite to save time -+.HP -+\fB\-test\fR.testlogfile file -+.IP -+write test action log to file (for use only by cmd/go) -+.HP -+\fB\-test\fR.timeout d -+.IP -+panic test binary after duration d (default 0, timeout disabled) -+.HP -+\fB\-test\fR.trace file -+.IP -+write an execution trace to file -+.HP -+\fB\-test\fR.v -+.IP -+verbose: print additional output -+.TP -+\fB\-v\fR -+prints current version and exits -+.SH "SEE ALSO" -+The full documentation for -+.B Grafana -+is available on-line at -+.BR http://docs.grafana.org/ . -Index: grafana-6.4.3/packaging/rpm/spec/README -=================================================================== ---- /dev/null -+++ grafana-6.4.3/packaging/rpm/spec/README -@@ -0,0 +1,7 @@ -+The make_webpack.sh script in this directory can be used to create -+a webpack tarball of all the nodejs dependencies needed to build a -+particular tagged version of grafana, along with the grafana tarball -+itself. After running the script, the two tarballs should be copied -+to your rpmbuild SOURCES. You can then run a native rpm spec build -+using grafana.spec. -+ -Index: grafana-6.4.3/packaging/rpm/spec/grafana.spec -=================================================================== ---- /dev/null -+++ grafana-6.4.3/packaging/rpm/spec/grafana.spec -@@ -0,0 +1,737 @@ -+%global grafana_arches %{lua: go_arches = {} -+ for arch in rpm.expand("%{go_arches}"):gmatch("%S+") do -+ go_arches[arch] = 1 -+ end -+ for arch in rpm.expand("%{nodejs_arches}"):gmatch("%S+") do -+ if go_arches[arch] then -+ print(arch .. " ") -+ end -+end} -+ -+# Unbundle grafana vendor sources and instead use BuildRequires -+# only on platforms that have enough golang devel support. -+%if 0%{?rhel} == 0 -+%global unbundle_vendor_sources 1 -+%endif -+ -+ -+Name: grafana -+Version: 6.3.4 -+Release: 1%{?dist} -+Summary: Metrics dashboard and graph editor -+License: ASL 2.0 -+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 -+ -+# Patches for upstream -+Patch1: 001-login-oauth-use-oauth2-exchange.patch -+Patch2: 002-remove-jaeger-tracing.patch -+Patch3: 003-new-files.patch -+Patch4: 004-fix-uaparser-32bit.patch -+ -+# Intersection of go_arches and nodejs_arches -+ExclusiveArch: %{grafana_arches} -+ -+# omit golang debugsource, see BZ995136 and related -+%global _debugsource_template %{nil} -+ -+%global GRAFANA_USER %{name} -+%global GRAFANA_GROUP %{name} -+%global GRAFANA_HOME %{_datadir}/%{name} -+ -+# grafana-server service daemon uses systemd -+%{?systemd_requires} -+Requires(pre): shadow-utils -+ -+BuildRequires: git, systemd, golang, go-srpm-macros -+ -+Recommends: grafana-cloudwatch = %{version}-%{release} -+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/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/BurntSushi/toml) -+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(google.golang.org/appengine) -+BuildRequires: golang(golang.org/x/sys/unix) -+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(google.golang.org/genproto/googleapis/rpc/status) -+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/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(google.golang.org/grpc) -+BuildRequires: golang(github.com/hashicorp/go-hclog) -+# need grpc_broker in go-plugin >= 1.0.0-1 -+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/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-prometheus-common-devel -+BuildRequires: golang(github.com/prometheus/common/expfmt) -+BuildRequires: golang(github.com/prometheus/common/model) -+BuildRequires: golang(github.com/prometheus/common/expfmt) -+BuildRequires: golang(github.com/prometheus/procfs) -+BuildRequires: golang(github.com/prometheus/procfs/internal/util) -+BuildRequires: golang(github.com/prometheus/procfs) -+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/Unknwon/com) -+BuildRequires: golang(github.com/VividCortex/mysqlerr) -+BuildRequires: golang(github.com/yudai/gojsondiff) -+BuildRequires: golang(github.com/yudai/golcs) -+BuildRequires: golang(golang.org/x/crypto/pbkdf2) -+BuildRequires: golang(golang.org/x/crypto/ed25519) -+BuildRequires: golang(golang.org/x/crypto/md4) -+BuildRequires: golang(golang.org/x/net/context) -+BuildRequires: golang(golang.org/x/net/context/ctxhttp) -+BuildRequires: golang(golang.org/x/net/http2) -+BuildRequires: golang(golang.org/x/net/http2/hpack) -+BuildRequires: golang(golang.org/x/net/http/httpguts) -+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/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(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(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/duration) -+BuildRequires: golang(github.com/golang/protobuf/ptypes/any) -+BuildRequires: golang(github.com/golang/protobuf/ptypes/timestamp) -+BuildRequires: golang(cloud.google.com/go/compute/metadata) -+BuildRequires: golang(gopkg.in/alexcesaro/quotedprintable.v3) -+BuildRequires: golang(gopkg.in/asn1-ber.v1) -+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(gopkg.in/square/go-jose.v2) -+BuildRequires: golang(gopkg.in/square/go-jose.v2/cipher) -+BuildRequires: golang(gopkg.in/square/go-jose.v2/json) -+BuildRequires: golang(github.com/go-yaml/yaml) -+BuildRequires: golang(golang.org/x/sync/errgroup) -+BuildRequires: golang(gopkg.in/ldap.v3) -+BuildRequires: golang(gopkg.in/mail.v2) -+BuildRequires: golang(github.com/jonboulle/clockwork) -+%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-lodash) = 4.17.11 -+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-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 -+ -+%description cloudwatch -+The Grafana cloudwatch datasource. -+ -+%package elasticsearch -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana elasticsearch datasource -+ -+%description elasticsearch -+The Grafana elasticsearch datasource. -+ -+%package azure-monitor -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana azure-monitor datasource -+ -+%description azure-monitor -+The Grafana azure-monitor datasource. -+ -+%package graphite -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana graphite datasource -+ -+%description graphite -+The Grafana graphite datasource. -+ -+%package influxdb -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana influxdb datasource -+ -+%description influxdb -+The Grafana influxdb datasource. -+ -+%package loki -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana loki datasource -+ -+%description loki -+The Grafana loki datasource. -+ -+%package mssql -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana mssql datasource -+ -+%description mssql -+The Grafana mssql datasource. -+ -+%package mysql -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana mysql datasource -+ -+%description mysql -+The Grafana mysql datasource. -+ -+%package opentsdb -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana opentsdb datasource -+ -+%description opentsdb -+The Grafana opentsdb datasource. -+ -+%package postgres -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana postgres datasource -+ -+%description postgres -+The Grafana postgres datasource. -+ -+%package prometheus -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana prometheus datasource -+ -+%description prometheus -+The Grafana prometheus datasource. -+ -+%package stackdriver -+Requires: %{name} = %{version}-%{release} -+Summary: Grafana stackdriver datasource -+ -+%description stackdriver -+The Grafana stackdriver datasource. -+ -+ -+%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 -+ -+ -+%build -+# Build the server-side binaries: grafana-server and grafana-cli -+%if 0%{?gobuild} -+# use modern go macros such as in recent Fedora -+export GOPATH=%{_builddir}:%{gopath} -+%gobuild -o grafana-cli ./pkg/cmd/grafana-cli -+%gobuild -o grafana-server ./pkg/cmd/grafana-server -+%else -+cd %{_builddir}/src/github.com/grafana/grafana -+export GOPATH=%{_builddir}:%{gopath} -+go run build.go build -+%endif -+ -+ -+%install -+# 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 -+ -+# dirs, shared files, public html, webpack -+install -d %{buildroot}%{_sbindir} -+install -d %{buildroot}%{_datadir}/%{name}/bin -+cp -a conf public %{buildroot}%{_datadir}/%{name} -+ -+# wrappers -+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 %{buildroot}%{_mandir}/man1 -+install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 -+ -+# config dirs -+install -d %{buildroot}%{_sysconfdir}/%{name} -+install -d %{buildroot}%{_sysconfdir}/sysconfig -+ -+# config defaults -+install -p -m 644 conf/distro-defaults.ini \ -+ %{buildroot}%{_sysconfdir}/%{name}/grafana.ini -+install -p -m 644 conf/distro-defaults.ini \ -+ %{buildroot}%{_datadir}/%{name}/conf/defaults.ini -+install -p -m 644 conf/ldap.toml %{buildroot}%{_sysconfdir}/%{name}/ldap.toml -+install -p -m 644 packaging/rpm/sysconfig/grafana-server \ -+ %{buildroot}%{_sysconfdir}/sysconfig/grafana-server -+ -+# config database directory and plugins -+install -d %{buildroot}%{_sharedstatedir}/%{name} -+install -d -m 755 %{buildroot}%{_sharedstatedir}/%{name} -+install -d -m 755 %{buildroot}%{_sharedstatedir}/%{name}/plugins -+ -+# log directory -+install -d %{buildroot}%{_localstatedir}/log/%{name} -+ -+# systemd service files -+install -d %{buildroot}%{_unitdir} # only needed for manual rpmbuilds -+install -p -m 644 packaging/rpm/systemd/grafana-server.service \ -+ %{buildroot}%{_unitdir} -+ -+# 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 -+ -+%pre -+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 account" %{GRAFANA_USER} -+exit 0 -+ -+%preun -+%systemd_preun grafana-server.service -+ -+%post -+%systemd_post grafana-server.service -+ -+%postun -+%systemd_postun_with_restart grafana-server.service -+ -+ -+%check -+cd %{_builddir}/src/github.com/grafana/grafana -+export GOPATH=%{_builddir}:%{gopath} -+# 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 -+go test ./pkg/... -+ -+ -+%files -+# binaries -+%{_sbindir}/%{name}-server -+%{_sbindir}/%{name}-cli -+ -+# config files -+%dir %{_sysconfdir}/%{name} -+%config(noreplace) %attr(644, root, %{GRAFANA_GROUP}) %{_sysconfdir}/%{name}/grafana.ini -+%config(noreplace) %attr(644, root, %{GRAFANA_GROUP}) %{_sysconfdir}/%{name}/ldap.toml -+%config(noreplace) %{_sysconfdir}/sysconfig/grafana-server -+ -+# Grafana configuration to dynamically create /run/grafana/grafana.pid on tmpfs -+%{_tmpfilesdir}/%{name}.conf -+ -+# config database directory and plugins (actual db files are created by grafana-server) -+%attr(-, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name} -+%attr(-, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name}/plugins -+ -+# shared directory and all files therein, except some datasources -+%{_datadir}/%{name}/bin -+%{_datadir}/%{name}/public -+ -+# 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 -+ -+%dir %{_datadir}/%{name}/conf -+%attr(-, root, %{GRAFANA_GROUP}) %{_datadir}/%{name}/conf/* -+ -+# systemd service file -+%{_unitdir}/grafana-server.service -+ -+# log directory - grafana.log is created by grafana-server, and it does it's own log rotation -+%attr(0755, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_localstatedir}/log/%{name} -+ -+# man pages for grafana binaries -+%{_mandir}/man1/%{name}-server.1* -+%{_mandir}/man1/%{name}-cli.1* -+ -+# other docs and license -+%license LICENSE -+%doc CHANGELOG.md CODE_OF_CONDUCT.md CONTRIBUTING.md NOTICE.md -+%doc PLUGIN_DEV.md README.md ROADMAP.md UPGRADING_DEPENDENCIES.md -+ -+# -+# 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 -+ -+ -+%changelog -+* Fri Aug 30 2019 Mark Goodwin 6.3.4-1 -+- add patch for uaparser on 32bit systems -+- update to latest upstream community sources, see CHANGELOG -+ -+* Wed Jul 31 2019 Mark Goodwin 6.2.5-1 -+- update to latest upstream community sources, see CHANGELOG -+ -+* Thu Jul 25 2019 Fedora Release Engineering - 6.2.2-2 -+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild -+ -+* Fri Jun 07 2019 Mark Goodwin 6.2.2-1 -+- split out some datasource plugins to sub-packages -+- update to latest upstream community sources, see CHANGELOG -+ -+* Wed Jun 05 2019 Mark Goodwin 6.2.1-1 -+- update to latest upstream community sources, see CHANGELOG -+ -+* Fri May 24 2019 Mark Goodwin 6.2.0-1 -+- update to latest upstream community sources -+- drop a couple of patches -+ -+* Wed May 08 2019 Mark Goodwin 6.1.6-2 -+- add conditional unbundle_vendor_sources macro -+ -+* Tue Apr 30 2019 Mark Goodwin 6.1.6-1 -+- update to latest upstream stable release 6.1.6, see CHANGELOG -+- includes jQuery 3.4.0 security update -+ -+* Wed Apr 24 2019 Mark Goodwin 6.1.4-1 -+- update to latest upstream stable release 6.1.4, see CHANGELOG -+- use gobuild and gochecks macros, eliminate arch symlinks -+- re-enable grafana-debugsource package -+- fix GRAFANA_GROUP typo -+- fix more modes for brp-mangle-shebangs -+- vendor source unbundling now done in prep after patches -+- remove all rhel and fedora conditional guff -+ -+* Tue Apr 16 2019 Mark Goodwin 6.1.3-1 -+- update to latest upstream stable release 6.1.3, see CHANGELOG -+- unbundle all vendor sources, replace with BuildRequires, see -+ the long list of blocker BZs linked to BZ#1670656 -+- BuildRequires go-plugin >= v1.0.0 for grpc_broker (thanks eclipseo) -+- tweak make_webpack to no longer use grunt, switch to prod build -+- add ExclusiveArch lua script (thanks quantum.analyst) -+- move db directory and plugins to /var/lib/grafana -+- split out into 6 patches, ready for upstream PRs -+- add check to run go tests for gating checks -+ -+* Thu Apr 04 2019 Mark Goodwin 6.1.0-1 -+- update to latest upstream stable release 6.1.0, see CHANGELOG -+ -+* Thu Mar 21 2019 Mark Goodwin 6.0.2-1 -+- bump to latest upstream stable release 6.0.2-1 -+- unbundle almost all remaining vendor code, see linked blockers in BZ#1670656 -+ -+* Fri Mar 15 2019 Mark Goodwin 6.0.1-3 -+- bump to latest upstream stable release 6.0.1-1 -+ -+* Thu Mar 14 2019 Mark Goodwin 6.0.1-2 -+- unbundle and add BuildRequires for golang-github-rainycape-unidecode-devel -+ -+* Thu Mar 07 2019 Mark Goodwin 6.0.1-1 -+- update to v6.0.1 upstream sources, tweak distro config, re-do patch -+- simplify make_webpack.sh script (Elliott Sales de Andrade) -+- vendor/github.com/go-ldap is now gone, so don't unbundle it -+ -+* Thu Mar 07 2019 Mark Goodwin 5.4.3-11 -+- tweak after latest feedback, bump to 5.4.3-11 (BZ 1670656) -+- build debuginfo package again -+- unbundle BuildRequires for golang-github-hashicorp-version-devel -+- remove some unneeded development files -+- remove macros from changelog and other rpmlint tweaks -+ -+* Fri Feb 22 2019 Mark Goodwin 5.4.3-10 -+- tweak spec for available and unavailable (bundled) golang packages -+ -+* Wed Feb 20 2019 Xavier Bachelot 5.4.3-9 -+- Remove extraneous slash (cosmetic) -+- Create directories just before moving stuff in them -+- Truncate long lines -+- Group all golang stuff -+- Simplify BuildRequires/bundled Provides -+- Sort BuildRequires/bundled Provides -+- Fix bundled go packages Provides -+ -+* Fri Feb 15 2019 Mark Goodwin 5.4.3-8 -+- add BuildRequires (and unbundle) vendor sources available in Fedora -+- declare Provides for remaining (bundled) vendor go sources -+- do not attempt to unbundle anything on RHEL < 7 or Fedora < 28 -+ -+* Thu Feb 07 2019 Mark Goodwin 5.4.3-7 -+- further refinement for spec doc section from Xavier Bachelot -+- disable debug_package to avoid empty debugsourcefiles.list -+ -+* Wed Feb 06 2019 Mark Goodwin 5.4.3-6 -+- further refinement following review by Xavier Bachelot -+ -+* Tue Feb 05 2019 Mark Goodwin 5.4.3-5 -+- further refinement following review by Xavier Bachelot -+ -+* Fri Feb 01 2019 Mark Goodwin 5.4.3-4 -+- further spec updates after packaging review -+- reworked post-install scriplets -+ -+* Thu Jan 31 2019 Mark Goodwin 5.4.3-3 -+- tweak FHS patch, update spec after packaging review -+ -+* Wed Jan 30 2019 Mark Goodwin 5.4.3-2 -+- add patch to be standard FHS compliant, remove phantomjs -+- update to v5.4.3 upstream community sources -+ -+* Wed Jan 09 2019 Mark Goodwin 5.4.2-1 -+- update to v5.4.2 upstream community sources -+ -+* Thu Oct 18 2018 Mark Goodwin 5.3.1-1 -+- update to v5.3.1 upstream community sources -+ -+* Tue Oct 02 2018 Mark Goodwin 5.2.5-1 -+- native RPM spec build with current tagged v5.2.5 sources -Index: grafana-6.4.3/packaging/rpm/spec/make_grafana_webpack.sh -=================================================================== ---- /dev/null -+++ grafana-6.4.3/packaging/rpm/spec/make_grafana_webpack.sh -@@ -0,0 +1,61 @@ -+#! /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 diff --git a/004-distro-defaults-ini.patch b/004-distro-defaults-ini.patch deleted file mode 100644 index 4e1aa31..0000000 --- a/004-distro-defaults-ini.patch +++ /dev/null @@ -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 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..892a380 --- /dev/null +++ b/Makefile @@ -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 diff --git a/README b/README new file mode 100644 index 0000000..cb599c7 --- /dev/null +++ b/README @@ -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 diff --git a/_service b/_service new file mode 100644 index 0000000..7d1325c --- /dev/null +++ b/_service @@ -0,0 +1,13 @@ + + + https://github.com/grafana/grafana + git + .git + 6.4.3 + v6.4.3 + enable + + + grafana + + diff --git a/_servicedata b/_servicedata new file mode 100644 index 0000000..1f8d7da --- /dev/null +++ b/_servicedata @@ -0,0 +1,6 @@ + + + https://github.com/grafana/grafana + 3a2bfb7e3809a193125f0dbb8109e95cbf52db3e + + \ No newline at end of file diff --git a/grafana-6.4.3.tar.gz b/grafana-6.4.3.tar.gz deleted file mode 100644 index ca2cc01..0000000 --- a/grafana-6.4.3.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2ed2bbaae731c0d168800ed41af2bd18e3df50abb6c9852347d4488a5cc8d63b -size 13805699 diff --git a/grafana-6.4.3.tar.xz b/grafana-6.4.3.tar.xz new file mode 100644 index 0000000..8879f1a --- /dev/null +++ b/grafana-6.4.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cb6e8bf9f1080022dc169fa29afbb5876acbc5adba2c4420a8dbf1ef9a2aa4c +size 18172892 diff --git a/grafana.changes b/grafana.changes index a6f14b1..ac43636 100644 --- a/grafana.changes +++ b/grafana.changes @@ -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 diff --git a/grafana.spec b/grafana.spec index ca2c2b8..4cfca95 100644 --- a/grafana.spec +++ b/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 diff --git a/grafana_webpack-6.4.3.tar.gz b/grafana_webpack-6.4.3.tar.gz deleted file mode 100644 index 2467f67..0000000 --- a/grafana_webpack-6.4.3.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45269de4b895b9406b393c7961863dc9b508ba1c9b3b0f37ccd0a4d544c34002 -size 7022676 diff --git a/make_grafana_webpack.sh b/make_grafana_webpack.sh deleted file mode 100644 index bc0386b..0000000 --- a/make_grafana_webpack.sh +++ /dev/null @@ -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