SHA256
1
0
forked from pool/grafana

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
This commit is contained in:
Lars Vogdt 2019-10-27 13:49:03 +00:00 committed by Git OBS Bridge
parent f2c60d0f61
commit a647090d27
15 changed files with 2077 additions and 216 deletions

View File

@ -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

View File

@ -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)
- }
- }
- }
-}

1037
003-new-files.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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.*<i class=".*fa-camera">.*<\/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

View File

@ -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

27
README
View File

@ -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 <tserong@suse.com>

View File

@ -1,13 +0,0 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="url">https://github.com/grafana/grafana</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
<param name="versionformat">6.3.5</param>
<param name="revision">v6.3.5</param>
<param name="changesgenerate">enable</param>
</service>
<service name="set_version" mode="disabled">
<param name="basename">grafana</param>
</service>
</services>

View File

@ -1,6 +0,0 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/grafana/grafana</param>
<param name="changesrevision">67bad726f12efb21893c75c141f2330a4a3cbe2a</param>
</service>
</servicedata>

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fdfcabcdb8f4207efb6e1d8c55861f92ea9558f570f384a35eabc9a5a234a306
size 17615204

3
grafana-6.4.3.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2ed2bbaae731c0d168800ed41af2bd18e3df50abb6c9852347d4488a5cc8d63b
size 13805699

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:45269de4b895b9406b393c7961863dc9b508ba1c9b3b0f37ccd0a4d544c34002
size 7022676

61
make_grafana_webpack.sh Normal file
View File

@ -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