Blame grafana.spec

1f64cbe
%global grafana_arches %{lua: go_arches = {}
1f64cbe
  for arch in rpm.expand("%{go_arches}"):gmatch("%S+") do
1f64cbe
    go_arches[arch] = 1
1f64cbe
  end
1f64cbe
  for arch in rpm.expand("%{nodejs_arches}"):gmatch("%S+") do
1f64cbe
    if go_arches[arch] then
1f64cbe
      print(arch .. " ")
1f64cbe
  end
1f64cbe
end}
1f64cbe
1f64cbe
Name:             grafana
7a1a656
Version:          7.1.1
fa4f56c
Release:          2%{?dist}
1f64cbe
Summary:          Metrics dashboard and graph editor
1f64cbe
License:          ASL 2.0
1f64cbe
URL:              https://grafana.org
1f64cbe
1f64cbe
# Source0 contains the tagged upstream sources
1f64cbe
Source0:          https://github.com/grafana/grafana/archive/v%{version}/%{name}-%{version}.tar.gz
1f64cbe
7a1a656
# Source1 contains the bundled Go dependencies
7a1a656
Source1:          grafana-vendor-%{version}.tar.gz
1f64cbe
7a1a656
# Source2 contains the front-end javascript modules bundled into a webpack
7a1a656
Source2:          grafana-webpack-%{version}.tar.gz
365729b
7a1a656
# Source3 contains Grafana configuration defaults for distributions
7a1a656
Source3:          distro-defaults.ini
365729b
7a1a656
# Source4 contains the Makefile to create a Go vendor tarball and a webpack from grafana sources
7a1a656
Source4:          Makefile
1f64cbe
7a1a656
# Source5 contains the script to generate the list of bundled nodejs packages
7a1a656
Source5:          create_webpack_manifest.py
3557495
2e8a4f2
# Patches
7a1a656
Patch1:           001-wrappers-grafana-cli.patch
7a1a656
Patch2:           002-manpages.patch
7a1a656
7a1a656
# Required for Go >= 1.15
7a1a656
# https://github.com/golang/go/commit/201cb046b745f8bb00e3d382290190c74ba7b7e1
7a1a656
# https://github.com/golang/go/issues/32479
7a1a656
Patch3:           003-golang1.15.patch
7a1a656
7a1a656
# Required for s390x
7a1a656
# the golden files include memory dumps from a x86 machine
7a1a656
# integers are stored as little endian on x86, but as big endian on s390x
7a1a656
# therefore loading this memory dump fails on s390x
7a1a656
Patch4:           004-remove-goldenfiles-test.patch
1f64cbe
1f64cbe
# Intersection of go_arches and nodejs_arches
1f64cbe
ExclusiveArch:    %{grafana_arches}
1f64cbe
5c9d1ea
# omit golang debugsource, see BZ995136 and related
25db04d
%global           dwz_low_mem_die_limit 0
5c9d1ea
%global           _debugsource_template %{nil}
5c9d1ea
1f64cbe
%global           GRAFANA_USER %{name}
1f64cbe
%global           GRAFANA_GROUP %{name}
1f64cbe
%global           GRAFANA_HOME %{_datadir}/%{name}
1f64cbe
1f64cbe
# grafana-server service daemon uses systemd
1f64cbe
%{?systemd_requires}
1f64cbe
Requires(pre):    shadow-utils
1f64cbe
365729b
BuildRequires:    git, systemd, golang, go-srpm-macros, go-rpm-macros
5c9d1ea
7a1a656
Obsoletes:        grafana-cloudwatch < 7.1.1-1
7a1a656
Obsoletes:        grafana-elasticsearch < 7.1.1-1
7a1a656
Obsoletes:        grafana-azure-monitor < 7.1.1-1
7a1a656
Obsoletes:        grafana-graphite < 7.1.1-1
7a1a656
Obsoletes:        grafana-influxdb < 7.1.1-1
7a1a656
Obsoletes:        grafana-loki < 7.1.1-1
7a1a656
Obsoletes:        grafana-mssql < 7.1.1-1
7a1a656
Obsoletes:        grafana-mysql < 7.1.1-1
7a1a656
Obsoletes:        grafana-opentsdb < 7.1.1-1
7a1a656
Obsoletes:        grafana-postgres < 7.1.1-1
7a1a656
Obsoletes:        grafana-prometheus < 7.1.1-1
7a1a656
Obsoletes:        grafana-stackdriver < 7.1.1-1
7a1a656
f852e2f
%if 0%{?fedora} || 0%{?rhel} > 7
7a1a656
Recommends: grafana-pcp >= 3.0.0
f852e2f
%endif
5c9d1ea
7a1a656
# vendored golang build dependencies
7a1a656
# Note: generated by the Makefile (see README.md)
7a1a656
Provides: bundled(golang(github.com/BurntSushi/toml)) = 0.3.1
7a1a656
Provides: bundled(golang(github.com/VividCortex/mysqlerr)) = 0.0.0-20170204212430.6c6b55f8796f
7a1a656
Provides: bundled(golang(github.com/aws/aws-sdk-go)) = 1.29.20
7a1a656
Provides: bundled(golang(github.com/benbjohnson/clock)) = 0.0.0-20161215174838.7dc76406b6d3
7a1a656
Provides: bundled(golang(github.com/bradfitz/gomemcache)) = 0.0.0-20190329173943.551aad21a668
7a1a656
Provides: bundled(golang(github.com/crewjam/saml)) = 0.0.0-20191031171751.c42136edf9b1
7a1a656
Provides: bundled(golang(github.com/davecgh/go-spew)) = 1.1.1
7a1a656
Provides: bundled(golang(github.com/denisenkom/go-mssqldb)) = 0.0.0-20190707035753.2be1aa521ff4
7a1a656
Provides: bundled(golang(github.com/facebookgo/inject)) = 0.0.0-20180706035515.f23751cae28b
7a1a656
Provides: bundled(golang(github.com/fatih/color)) = 1.7.0
7a1a656
Provides: bundled(golang(github.com/go-macaron/binding)) = 0.0.0-20190806013118.0b4f37bab25b
7a1a656
Provides: bundled(golang(github.com/go-macaron/gzip)) = 0.0.0-20160222043647.cad1c6580a07
7a1a656
Provides: bundled(golang(github.com/go-macaron/session)) = 0.0.0-20190805070824.1a3cdc6f5659
7a1a656
Provides: bundled(golang(github.com/go-sql-driver/mysql)) = 1.5.0
7a1a656
Provides: bundled(golang(github.com/go-stack/stack)) = 1.8.0
7a1a656
Provides: bundled(golang(github.com/gobwas/glob)) = 0.2.3
7a1a656
Provides: bundled(golang(github.com/golang/protobuf)) = 1.4.0
7a1a656
Provides: bundled(golang(github.com/google/go-cmp)) = 0.4.0
7a1a656
Provides: bundled(golang(github.com/gorilla/websocket)) = 1.4.1
7a1a656
Provides: bundled(golang(github.com/gosimple/slug)) = 1.4.2
7a1a656
Provides: bundled(golang(github.com/grafana/grafana-plugin-model)) = 0.0.0-20190930120109.1fc953a61fb4
7a1a656
Provides: bundled(golang(github.com/grafana/grafana-plugin-sdk-go)) = 0.75.0
7a1a656
Provides: bundled(golang(github.com/hashicorp/go-hclog)) = 0.0.0-20180709165350.ff2cf002a8dd
7a1a656
Provides: bundled(golang(github.com/hashicorp/go-plugin)) = 1.2.2
7a1a656
Provides: bundled(golang(github.com/hashicorp/go-version)) = 1.1.0
7a1a656
Provides: bundled(golang(github.com/inconshreveable/log15)) = 0.0.0-20180818164646.67afb5ed74ec
7a1a656
Provides: bundled(golang(github.com/influxdata/influxdb-client-go)) = 1.3.0
7a1a656
Provides: bundled(golang(github.com/jmespath/go-jmespath)) = 0.0.0-20180206201540.c2b33e8439af
7a1a656
Provides: bundled(golang(github.com/jung-kurt/gofpdf)) = 1.10.1
7a1a656
Provides: bundled(golang(github.com/lib/pq)) = 1.2.0
7a1a656
Provides: bundled(golang(github.com/linkedin/goavro/v2)) = 2.9.7
7a1a656
Provides: bundled(golang(github.com/mattn/go-isatty)) = 0.0.12
7a1a656
Provides: bundled(golang(github.com/mattn/go-sqlite3)) = 1.11.0
7a1a656
Provides: bundled(golang(github.com/opentracing/opentracing-go)) = 1.1.0
7a1a656
Provides: bundled(golang(github.com/patrickmn/go-cache)) = 2.1.0+incompatible
7a1a656
Provides: bundled(golang(github.com/pkg/errors)) = 0.9.1
7a1a656
Provides: bundled(golang(github.com/prometheus/client_golang)) = 1.3.0
7a1a656
Provides: bundled(golang(github.com/prometheus/client_model)) = 0.1.0
7a1a656
Provides: bundled(golang(github.com/prometheus/common)) = 0.7.0
7a1a656
Provides: bundled(golang(github.com/robfig/cron)) = 0.0.0-20180505203441.b41be1df6967
7a1a656
Provides: bundled(golang(github.com/robfig/cron/v3)) = 3.0.0
7a1a656
Provides: bundled(golang(github.com/smartystreets/goconvey)) = 0.0.0-20190731233626.505e41936337
7a1a656
Provides: bundled(golang(github.com/stretchr/testify)) = 1.5.1
7a1a656
Provides: bundled(golang(github.com/teris-io/shortid)) = 0.0.0-20171029131806.771a37caa5cf
7a1a656
Provides: bundled(golang(github.com/timberio/go-datemath)) = 0.1.1-0.20200323150745.74ddef604fff
7a1a656
Provides: bundled(golang(github.com/ua-parser/uap-go)) = 0.0.0-20190826212731.daf92ba38329
7a1a656
Provides: bundled(golang(github.com/uber/jaeger-client-go)) = 2.24.0+incompatible
7a1a656
Provides: bundled(golang(github.com/unknwon/com)) = 1.0.1
7a1a656
Provides: bundled(golang(github.com/urfave/cli/v2)) = 2.1.1
7a1a656
Provides: bundled(golang(github.com/xorcare/pointer)) = 1.1.0
7a1a656
Provides: bundled(golang(github.com/yudai/gojsondiff)) = 1.0.0
7a1a656
Provides: bundled(golang(golang.org/x/crypto)) = 0.0.0-20200406173513.056763e48d71
7a1a656
Provides: bundled(golang(golang.org/x/net)) = 0.0.0-20200501053045.e0ff5e5a1de5
7a1a656
Provides: bundled(golang(golang.org/x/oauth2)) = 0.0.0-20200107190931.bf48bf16ab8d
7a1a656
Provides: bundled(golang(golang.org/x/sync)) = 0.0.0-20200317015054.43a5402ce75a
7a1a656
Provides: bundled(golang(golang.org/x/xerrors)) = 0.0.0-20191204190536.9bdfabe68543
7a1a656
Provides: bundled(golang(google.golang.org/grpc)) = 1.29.1
7a1a656
Provides: bundled(golang(gopkg.in/ini.v1)) = 1.46.0
7a1a656
Provides: bundled(golang(gopkg.in/ldap.v3)) = 3.0.2
7a1a656
Provides: bundled(golang(gopkg.in/macaron.v1)) = 1.3.9
7a1a656
Provides: bundled(golang(gopkg.in/mail.v2)) = 2.3.1
7a1a656
Provides: bundled(golang(gopkg.in/redis.v5)) = 5.2.9
7a1a656
Provides: bundled(golang(gopkg.in/square/go-jose.v2)) = 2.4.1
7a1a656
Provides: bundled(golang(gopkg.in/yaml.v2)) = 2.2.8
7a1a656
Provides: bundled(golang(xorm.io/core)) = 0.7.3
7a1a656
Provides: bundled(golang(xorm.io/xorm)) = 0.8.1
1f64cbe
1f64cbe
# Declare all nodejs modules bundled in the webpack - this is for security
1f64cbe
# purposes so if nodejs-foo ever needs an update, affected packages can be
3557495
# easily identified.
7a1a656
# Note: generated with the Makefile (see README.md)
3557495
Provides: bundled(nodejs-@grafana/slate-react) = 0.22.9-grafana
7a1a656
Provides: bundled(nodejs-@reduxjs/toolkit) = 1.3.4
3557495
Provides: bundled(nodejs-@torkelo/react-select) = 3.0.8
7a1a656
Provides: bundled(nodejs-@types/antlr4) = 4.7.1
7a1a656
Provides: bundled(nodejs-@types/braintree__sanitize-url) = 4.0.0
7a1a656
Provides: bundled(nodejs-@types/common-tags) = 1.8.0
7a1a656
Provides: bundled(nodejs-@types/jsurl) = 1.2.28
3557495
Provides: bundled(nodejs-@types/md5) = 2.1.33
3557495
Provides: bundled(nodejs-@types/react-loadable) = 5.5.2
3557495
Provides: bundled(nodejs-@types/react-virtualized-auto-sizer) = 1.0.0
7a1a656
Provides: bundled(nodejs-@welldone-software/why-did-you-render) = 4.0.6
3557495
Provides: bundled(nodejs-abortcontroller-polyfill) = 1.4.0
3557495
Provides: bundled(nodejs-angular) = 1.6.9
3557495
Provides: bundled(nodejs-angular-bindonce) = 0.3.1
3557495
Provides: bundled(nodejs-angular-native-dragdrop) = 1.2.2
3557495
Provides: bundled(nodejs-angular-route) = 1.6.6
3557495
Provides: bundled(nodejs-angular-sanitize) = 1.6.6
7a1a656
Provides: bundled(nodejs-antlr4) = 4.8.0
3557495
Provides: bundled(nodejs-baron) = 3.0.3
7a1a656
Provides: bundled(nodejs-brace) = 0.11.1
3557495
Provides: bundled(nodejs-calculate-size) = 1.1.1
3557495
Provides: bundled(nodejs-classnames) = 2.2.6
3557495
Provides: bundled(nodejs-clipboard) = 2.0.4
7a1a656
Provides: bundled(nodejs-common-tags) = 1.8.0
3557495
Provides: bundled(nodejs-core-js) = 1.2.7
3557495
Provides: bundled(nodejs-d3) = 5.15.0
3557495
Provides: bundled(nodejs-d3-scale-chromatic) = 1.5.0
7a1a656
Provides: bundled(nodejs-dangerously-set-html-content) = 1.0.6
3557495
Provides: bundled(nodejs-emotion) = 10.0.27
7a1a656
Provides: bundled(nodejs-eventemitter3) = 3.1.2
3557495
Provides: bundled(nodejs-fast-text-encoding) = 1.0.0
7a1a656
Provides: bundled(nodejs-file-saver) = 2.0.2
7a1a656
Provides: bundled(nodejs-hoist-non-react-statics) = 2.5.5
3557495
Provides: bundled(nodejs-immutable) = 3.8.2
3557495
Provides: bundled(nodejs-is-hotkey) = 0.1.4
3557495
Provides: bundled(nodejs-jquery) = 3.4.1
7a1a656
Provides: bundled(nodejs-jsurl) = 0.1.5
3557495
Provides: bundled(nodejs-lodash) = 3.10.1
3557495
Provides: bundled(nodejs-lru-cache) = 4.1.5
3557495
Provides: bundled(nodejs-marked) = 0.3.19
3557495
Provides: bundled(nodejs-md5) = 2.2.1
3557495
Provides: bundled(nodejs-memoize-one) = 4.1.0
3557495
Provides: bundled(nodejs-moment) = 2.24.0
7a1a656
Provides: bundled(nodejs-moment-timezone) = 0.5.28
7a1a656
Provides: bundled(nodejs-mousetrap) = 1.6.5
3557495
Provides: bundled(nodejs-mousetrap-global-bind) = 1.1.0
7a1a656
Provides: bundled(nodejs-nodemon) = 2.0.2
3557495
Provides: bundled(nodejs-papaparse) = 4.6.3
7a1a656
Provides: bundled(nodejs-prismjs) = 1.17.1
3557495
Provides: bundled(nodejs-prop-types) = 15.7.2
7a1a656
Provides: bundled(nodejs-rc-cascader) = 1.0.1
3557495
Provides: bundled(nodejs-re-resizable) = 6.2.0
3557495
Provides: bundled(nodejs-react) = 16.10.2
3557495
Provides: bundled(nodejs-react-dom) = 16.10.2
3557495
Provides: bundled(nodejs-react-grid-layout) = 0.17.1
7a1a656
Provides: bundled(nodejs-react-highlight-words) = 0.16.0
3557495
Provides: bundled(nodejs-react-loadable) = 5.5.0
3557495
Provides: bundled(nodejs-react-popper) = 1.3.3
7a1a656
Provides: bundled(nodejs-react-redux) = 7.2.0
7a1a656
Provides: bundled(nodejs-react-sizeme) = 2.6.8
3557495
Provides: bundled(nodejs-react-split-pane) = 0.1.89
7a1a656
Provides: bundled(nodejs-react-transition-group) = 2.9.0
7a1a656
Provides: bundled(nodejs-react-use) = 13.27.0
3557495
Provides: bundled(nodejs-react-virtualized-auto-sizer) = 1.0.2
7a1a656
Provides: bundled(nodejs-react-window) = 1.8.5
3557495
Provides: bundled(nodejs-redux) = 3.7.2
3557495
Provides: bundled(nodejs-redux-logger) = 3.0.6
3557495
Provides: bundled(nodejs-redux-thunk) = 2.3.0
3557495
Provides: bundled(nodejs-regenerator-runtime) = 0.11.1
3557495
Provides: bundled(nodejs-reselect) = 4.0.0
3557495
Provides: bundled(nodejs-rst2html) = 1.0.4
7a1a656
Provides: bundled(nodejs-rxjs) = 6.5.5
7a1a656
Provides: bundled(nodejs-search-query-parser) = 1.5.4
3557495
Provides: bundled(nodejs-slate) = 0.47.8
3557495
Provides: bundled(nodejs-slate-plain-serializer) = 0.7.10
7a1a656
Provides: bundled(nodejs-tether) = 1.4.7
3557495
Provides: bundled(nodejs-tether-drop) = 1.5.0
3557495
Provides: bundled(nodejs-tinycolor2) = 1.4.1
3557495
Provides: bundled(nodejs-tti-polyfill) = 0.2.2
3557495
Provides: bundled(nodejs-whatwg-fetch) = 3.0.0
1f64cbe
1f64cbe
1f64cbe
%description
1f64cbe
Grafana is an open source, feature rich metrics dashboard and graph editor for
1f64cbe
Graphite, InfluxDB & OpenTSDB.
1f64cbe
1f64cbe
1f64cbe
%prep
1f64cbe
%setup -q -T -D -b 0
7a1a656
rm -r plugins-bundled # compiled bundled plugins are in grafana-webpack
1f64cbe
%setup -q -T -D -b 1
7a1a656
%setup -q -T -D -b 2
7a1a656
1f64cbe
%patch1 -p1
1f64cbe
%patch2 -p1
7a1a656
%if 0%{?fedora} >= 33
1f64cbe
%patch3 -p1
7a1a656
%endif
7a1a656
%ifarch s390x
25db04d
%patch4 -p1
365729b
%endif
1f64cbe
1f64cbe
# Set up build subdirs and links
1f64cbe
mkdir -p %{_builddir}/src/github.com/grafana
1f64cbe
ln -sf %{_builddir}/%{name}-%{version} \
1f64cbe
    %{_builddir}/src/github.com/grafana/grafana
1f64cbe
1f64cbe
1f64cbe
%build
25db04d
# Build the server-side binaries
5c9d1ea
cd %{_builddir}/src/github.com/grafana/grafana
7a1a656
export GOPATH=%{_builddir}
3557495
3557495
# see grafana-X.X.X/build.go
09156ed
export LDFLAGS="-X main.version=%{version} -X main.buildstamp=${SOURCE_DATE_EPOCH}"
3557495
for cmd in grafana-cli grafana-server; do
7a1a656
    %gobuild -o %{_builddir}/bin/${cmd} ./pkg/cmd/${cmd}
3557495
done
1f64cbe
1f64cbe
%install
5c9d1ea
25db04d
# dirs, shared files, public html, webpack
1f64cbe
install -d %{buildroot}%{_sbindir}
2e8a4f2
install -d %{buildroot}%{_datadir}/%{name}
2e8a4f2
install -d %{buildroot}%{_libexecdir}/%{name}
7a1a656
cp -a conf public plugins-bundled %{buildroot}%{_datadir}/%{name}
1f64cbe
25db04d
# wrappers
25db04d
install -p -m 755 packaging/wrappers/grafana-cli %{buildroot}%{_sbindir}/%{name}-cli
25db04d
25db04d
# binaries
7a1a656
install -p -m 755 %{_builddir}/bin/%{name}-server %{buildroot}%{_sbindir}
7a1a656
install -p -m 755 %{_builddir}/bin/%{name}-cli %{buildroot}%{_libexecdir}/%{name}
25db04d
1f64cbe
# man pages
1f64cbe
install -d %{buildroot}%{_mandir}/man1
1f64cbe
install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1
1f64cbe
1f64cbe
# config dirs
1f64cbe
install -d %{buildroot}%{_sysconfdir}/%{name}
7a1a656
install -d %{buildroot}%{_sysconfdir}/%{name}/provisioning
7a1a656
install -d %{buildroot}%{_sysconfdir}/%{name}/provisioning/dashboards
7a1a656
install -d %{buildroot}%{_sysconfdir}/%{name}/provisioning/datasources
7a1a656
install -d %{buildroot}%{_sysconfdir}/%{name}/provisioning/notifiers
7a1a656
install -d %{buildroot}%{_sysconfdir}/%{name}/provisioning/plugins
1f64cbe
install -d %{buildroot}%{_sysconfdir}/sysconfig
1f64cbe
1f64cbe
# config defaults
7a1a656
install -p -m 640 %{SOURCE3} %{buildroot}%{_sysconfdir}/%{name}/grafana.ini
fab93d6
install -p -m 640 conf/ldap.toml %{buildroot}%{_sysconfdir}/%{name}/ldap.toml
7a1a656
install -p -m 644 %{SOURCE3} %{buildroot}%{_datadir}/%{name}/conf/defaults.ini
1f64cbe
install -p -m 644 packaging/rpm/sysconfig/grafana-server \
1f64cbe
    %{buildroot}%{_sysconfdir}/sysconfig/grafana-server
1f64cbe
1f64cbe
# config database directory and plugins
f7791a6
install -d -m 750 %{buildroot}%{_sharedstatedir}/%{name}
1f64cbe
install -d -m 755 %{buildroot}%{_sharedstatedir}/%{name}/plugins
1f64cbe
1f64cbe
# log directory
1f64cbe
install -d %{buildroot}%{_localstatedir}/log/%{name}
1f64cbe
1f64cbe
# systemd service files
1f64cbe
install -d %{buildroot}%{_unitdir} # only needed for manual rpmbuilds
1f64cbe
install -p -m 644 packaging/rpm/systemd/grafana-server.service \
1f64cbe
    %{buildroot}%{_unitdir}
1f64cbe
1f64cbe
# daemon run pid file config for using tmpfs
1f64cbe
install -d %{buildroot}%{_tmpfilesdir}
1f64cbe
echo "d %{_rundir}/%{name} 0755 %{GRAFANA_USER} %{GRAFANA_GROUP} -" \
1f64cbe
    > %{buildroot}%{_tmpfilesdir}/%{name}.conf
1f64cbe
1f64cbe
%pre
1f64cbe
getent group %{GRAFANA_GROUP} >/dev/null || groupadd -r %{GRAFANA_GROUP}
1f64cbe
getent passwd %{GRAFANA_USER} >/dev/null || \
1f64cbe
    useradd -r -g %{GRAFANA_GROUP} -d %{GRAFANA_HOME} -s /sbin/nologin \
1f64cbe
    -c "%{GRAFANA_USER} user account" %{GRAFANA_USER}
1f64cbe
exit 0
1f64cbe
1f64cbe
%preun
1f64cbe
%systemd_preun grafana-server.service
1f64cbe
1f64cbe
%post
1f64cbe
%systemd_post grafana-server.service
925160c
# create grafana.db with secure permissions on new installations
925160c
# otherwise grafana-server is creating grafana.db on first start
925160c
# with world-readable permissions, which may leak encrypted datasource
925160c
# passwords to all users (if the secret_key in grafana.ini was not changed)
f7791a6
f7791a6
# https://bugzilla.redhat.com/show_bug.cgi?id=1805472
925160c
if [ "$1" = 1 ] && [ ! -f %{_sharedstatedir}/%{name}/grafana.db ]; then
925160c
    touch %{_sharedstatedir}/%{name}/grafana.db
f7791a6
fi
f7791a6
f7791a6
# apply secure permissions to grafana.db if it exists
f7791a6
# (may not exist on upgrades, because users can choose between sqlite/mysql/postgres)
f7791a6
if [ -f %{_sharedstatedir}/%{name}/grafana.db ]; then
925160c
    chown %{GRAFANA_USER}:%{GRAFANA_GROUP} %{_sharedstatedir}/%{name}/grafana.db
925160c
    chmod 640 %{_sharedstatedir}/%{name}/grafana.db
925160c
fi
1f64cbe
365729b
# required for upgrades
365729b
chmod 640 %{_sysconfdir}/%{name}/grafana.ini
365729b
chmod 640 %{_sysconfdir}/%{name}/ldap.toml
365729b
1f64cbe
%postun
1f64cbe
%systemd_postun_with_restart grafana-server.service
1f64cbe
1f64cbe
1f64cbe
%check
1f64cbe
cd %{_builddir}/src/github.com/grafana/grafana
7a1a656
export GOPATH=%{_builddir}
2e8a4f2
# remove tests currently failing - these two are due to a symlink
2e8a4f2
# BUILD/src/github.com/grafana/grafana -> BUILD/grafana-6.6.1
1f64cbe
rm -f pkg/services/provisioning/dashboards/file_reader_linux_test.go
5c9d1ea
rm -f pkg/services/provisioning/dashboards/file_reader_test.go
2e8a4f2
%gotest ./pkg/...
1f64cbe
1f64cbe
1f64cbe
%files
2e8a4f2
# binaries and wrappers
1f64cbe
%{_sbindir}/%{name}-server
1f64cbe
%{_sbindir}/%{name}-cli
2e8a4f2
%{_libexecdir}/%{name}
1f64cbe
1f64cbe
# config files
1f64cbe
%dir %{_sysconfdir}/%{name}
7a1a656
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_sysconfdir}/%{name}/provisioning
7a1a656
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_sysconfdir}/%{name}/provisioning/dashboards
7a1a656
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_sysconfdir}/%{name}/provisioning/datasources
7a1a656
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_sysconfdir}/%{name}/provisioning/notifiers
7a1a656
%attr(0755, root, %{GRAFANA_GROUP}) %dir %{_sysconfdir}/%{name}/provisioning/plugins
7a1a656
%config(noreplace) %attr(0640, root, %{GRAFANA_GROUP}) %{_sysconfdir}/%{name}/grafana.ini
7a1a656
%config(noreplace) %attr(0640, root, %{GRAFANA_GROUP}) %{_sysconfdir}/%{name}/ldap.toml
1f64cbe
%config(noreplace) %{_sysconfdir}/sysconfig/grafana-server
1f64cbe
1f64cbe
# Grafana configuration to dynamically create /run/grafana/grafana.pid on tmpfs
1f64cbe
%{_tmpfilesdir}/%{name}.conf
1f64cbe
fab93d6
# config database directory and plugins
7a1a656
%attr(0750, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name}
1f64cbe
%attr(-, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_sharedstatedir}/%{name}/plugins
1f64cbe
7a1a656
# shared directory and all files therein
2e8a4f2
%{_datadir}/%{name}
1f64cbe
%attr(-, root, %{GRAFANA_GROUP}) %{_datadir}/%{name}/conf/*
1f64cbe
1f64cbe
# systemd service file
1f64cbe
%{_unitdir}/grafana-server.service
1f64cbe
1f64cbe
# log directory - grafana.log is created by grafana-server, and it does it's own log rotation
1f64cbe
%attr(0755, %{GRAFANA_USER}, %{GRAFANA_GROUP}) %dir %{_localstatedir}/log/%{name}
1f64cbe
1f64cbe
# man pages for grafana binaries
1f64cbe
%{_mandir}/man1/%{name}-server.1*
1f64cbe
%{_mandir}/man1/%{name}-cli.1*
1f64cbe
1f64cbe
# other docs and license
1f64cbe
%license LICENSE
7a1a656
%doc CHANGELOG.md CODE_OF_CONDUCT.md CONTRIBUTING.md GOVERNANCE.md ISSUE_TRIAGE.md MAINTAINERS.md NOTICE.md
7a1a656
%doc PLUGIN_DEV.md README.md ROADMAP.md SECURITY.md SUPPORT.md UPGRADING_DEPENDENCIES.md WORKFLOW.md
5c9d1ea
1f64cbe
1f64cbe
%changelog
fa4f56c
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 7.1.1-2
fa4f56c
- Second attempt - Rebuilt for
fa4f56c
  https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
fa4f56c
7a1a656
* Thu Jul 30 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 7.1.1-1
7a1a656
- update to 7.1.1 tagged upstream community sources, see CHANGELOG
7a1a656
- merge all datasources into main grafana package
7a1a656
- bundle golang dependencies
7a1a656
21d92f3
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6.7.4-2
21d92f3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
21d92f3
111fbc2
* Fri Jun 05 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 6.7.4-1
111fbc2
- update to 6.7.4 tagged upstream community sources, see CHANGELOG
111fbc2
- security fix for CVE-2020-13379
111fbc2
09156ed
* Tue Apr 28 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 6.7.3-1
fab93d6
- update to 6.7.3 tagged upstream community sources, see CHANGELOG
09156ed
- add scripts to list Go dependencies and bundled npmjs dependencies
09156ed
- set Grafana version in Grafana UI and grafana-cli --version
f7791a6
- declare README.md as documentation of datasource plugins
f7791a6
- create grafana.db on first installation (fixes RH BZ #1805472)
365729b
- change permissions of /var/lib/grafana to 750 (CVE-2020-12458)
f7791a6
- change permissions of /var/lib/grafana/grafana.db to 640 and
365729b
  user/group grafana:grafana (CVE-2020-12458)
365729b
- change permissions of grafana.ini and ldap.toml to 640 (CVE-2020-12459)
3557495
2e8a4f2
* Wed Feb 26 2020 Mark Goodwin <mgoodwin@redhat.com> 6.6.2-1
2e8a4f2
- added patch0 to set the version string correctly
2e8a4f2
- removed patch 004-xerrors.patch, it's now upstream
2e8a4f2
- added several patches for golang vendored vrs build dep differences
2e8a4f2
- added patch to move grafana-cli binary to libexec dir
2e8a4f2
- update to 6.6.2 tagged upstream community sources, see CHANGELOG
62208e2
47a36c9
* Wed Nov 20 2019 Mark Goodwin <mgoodwin@redhat.com> 6.3.6-1
47a36c9
- add weak depenency on grafana-pcp
47a36c9
- add patch to mute shellcheck SC1090 for grafana-cli
47a36c9
- update to 6.3.6 upstream community sources, see CHANGELOG
47a36c9
25db04d
* Thu Sep 05 2019 Mark Goodwin <mgoodwin@redhat.com> 6.3.5-1
25db04d
- drop uaparser patch now it's upstream
25db04d
- add xerrors patch, see https://github.com/golang/go/issues/32246
25db04d
- use vendor sources on rawhide until modules are fully supported
25db04d
- update to latest upstream community sources, see CHANGELOG
25db04d
25db04d
* Fri Aug 30 2019 Mark Goodwin <mgoodwin@redhat.com> 6.3.4-1
25db04d
- include fix for CVE-2019-15043
25db04d
- add patch for uaparser on 32bit systems
25db04d
- update to latest upstream community sources, see CHANGELOG
25db04d
25db04d
* Wed Jul 31 2019 Mark Goodwin <mgoodwin@redhat.com> 6.2.5-1
25db04d
- update to latest upstream community sources, see CHANGELOG
25db04d
7c9a565
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.2-2
7c9a565
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
7c9a565
5c9d1ea
* Fri Jun 07 2019 Mark Goodwin <mgoodwin@redhat.com> 6.2.2-1
5c9d1ea
- split out some datasource plugins to sub-packages
5c9d1ea
- update to latest upstream community sources, see CHANGELOG
5c9d1ea
5c9d1ea
* Wed Jun 05 2019 Mark Goodwin <mgoodwin@redhat.com> 6.2.1-1
5c9d1ea
- update to latest upstream community sources, see CHANGELOG
5c9d1ea
5c9d1ea
* Fri May 24 2019 Mark Goodwin <mgoodwin@redhat.com> 6.2.0-1
5c9d1ea
- update to latest upstream community sources
5c9d1ea
- drop a couple of patches
5c9d1ea
5c9d1ea
* Wed May 08 2019 Mark Goodwin <mgoodwin@redhat.com> 6.1.6-2
5c9d1ea
- add conditional unbundle_vendor_sources macro
5c9d1ea
428ba58
* Tue Apr 30 2019 Mark Goodwin <mgoodwin@redhat.com> 6.1.6-1
428ba58
- update to latest upstream stable release 6.1.6, see CHANGELOG
428ba58
- includes jQuery 3.4.0 security update
428ba58
1f64cbe
* Wed Apr 24 2019 Mark Goodwin <mgoodwin@redhat.com> 6.1.4-1
1f64cbe
- update to latest upstream stable release 6.1.4, see CHANGELOG
1f64cbe
- use gobuild and gochecks macros, eliminate arch symlinks
1f64cbe
- re-enable grafana-debugsource package
1f64cbe
- fix GRAFANA_GROUP typo
1f64cbe
- fix more modes for brp-mangle-shebangs
1f64cbe
- vendor source unbundling now done in prep after patches
1f64cbe
- remove all rhel and fedora conditional guff
1f64cbe
1f64cbe
* Tue Apr 16 2019 Mark Goodwin <mgoodwin@redhat.com> 6.1.3-1
1f64cbe
- update to latest upstream stable release 6.1.3, see CHANGELOG
1f64cbe
- unbundle all vendor sources, replace with BuildRequires, see
1f64cbe
  the long list of blocker BZs linked to BZ#1670656
1f64cbe
- BuildRequires go-plugin >= v1.0.0 for grpc_broker (thanks eclipseo)
1f64cbe
- tweak make_webpack to no longer use grunt, switch to prod build
1f64cbe
- add ExclusiveArch lua script (thanks quantum.analyst)
1f64cbe
- move db directory and plugins to /var/lib/grafana
1f64cbe
- split out into 6 patches, ready for upstream PRs
1f64cbe
- add check to run go tests for gating checks
1f64cbe
1f64cbe
* Thu Apr 04 2019 Mark Goodwin <mgoodwin@redhat.com> 6.1.0-1
1f64cbe
- update to latest upstream stable release 6.1.0, see CHANGELOG
1f64cbe
1f64cbe
* Thu Mar 21 2019 Mark Goodwin <mgoodwin@redhat.com> 6.0.2-1
1f64cbe
- bump to latest upstream stable release 6.0.2-1
1f64cbe
- unbundle almost all remaining vendor code, see linked blockers in BZ#1670656
1f64cbe
1f64cbe
* Fri Mar 15 2019 Mark Goodwin <mgoodwin@redhat.com> 6.0.1-3
1f64cbe
- bump to latest upstream stable release 6.0.1-1
1f64cbe
1f64cbe
* Thu Mar 14 2019 Mark Goodwin <mgoodwin@redhat.com> 6.0.1-2
1f64cbe
- unbundle and add BuildRequires for golang-github-rainycape-unidecode-devel
1f64cbe
1f64cbe
* Thu Mar 07 2019 Mark Goodwin <mgoodwin@redhat.com> 6.0.1-1
1f64cbe
- update to v6.0.1 upstream sources, tweak distro config, re-do patch
1f64cbe
- simplify make_webpack.sh script (Elliott Sales de Andrade)
1f64cbe
- vendor/github.com/go-ldap is now gone, so don't unbundle it
1f64cbe
1f64cbe
* Thu Mar 07 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-11
1f64cbe
- tweak after latest feedback, bump to 5.4.3-11 (BZ 1670656)
1f64cbe
- build debuginfo package again
1f64cbe
- unbundle BuildRequires for golang-github-hashicorp-version-devel
1f64cbe
- remove some unneeded development files
1f64cbe
- remove macros from changelog and other rpmlint tweaks
1f64cbe
1f64cbe
* Fri Feb 22 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-10
1f64cbe
- tweak spec for available and unavailable (bundled) golang packages
1f64cbe
1f64cbe
* Wed Feb 20 2019 Xavier Bachelot <xavier@bachelot.org> 5.4.3-9
1f64cbe
- Remove extraneous slash (cosmetic)
1f64cbe
- Create directories just before moving stuff in them
1f64cbe
- Truncate long lines
1f64cbe
- Group all golang stuff
1f64cbe
- Simplify BuildRequires/bundled Provides
1f64cbe
- Sort BuildRequires/bundled Provides
1f64cbe
- Fix bundled go packages Provides
1f64cbe
1f64cbe
* Fri Feb 15 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-8
1f64cbe
- add BuildRequires (and unbundle) vendor sources available in Fedora
1f64cbe
- declare Provides for remaining (bundled) vendor go sources
1f64cbe
- do not attempt to unbundle anything on RHEL < 7 or Fedora < 28
1f64cbe
1f64cbe
* Thu Feb 07 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-7
1f64cbe
- further refinement for spec doc section from Xavier Bachelot
1f64cbe
- disable debug_package to avoid empty debugsourcefiles.list
1f64cbe
1f64cbe
* Wed Feb 06 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-6
1f64cbe
- further refinement following review by Xavier Bachelot
1f64cbe
1f64cbe
* Tue Feb 05 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-5
1f64cbe
- further refinement following review by Xavier Bachelot
1f64cbe
1f64cbe
* Fri Feb 01 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-4
1f64cbe
- further spec updates after packaging review
1f64cbe
- reworked post-install scriplets
1f64cbe
1f64cbe
* Thu Jan 31 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-3
1f64cbe
- tweak FHS patch, update spec after packaging review
1f64cbe
1f64cbe
* Wed Jan 30 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.3-2
1f64cbe
- add patch to be standard FHS compliant, remove phantomjs
1f64cbe
- update to v5.4.3 upstream community sources
1f64cbe
1f64cbe
* Wed Jan 09 2019 Mark Goodwin <mgoodwin@redhat.com> 5.4.2-1
1f64cbe
- update to v5.4.2 upstream community sources
1f64cbe
1f64cbe
* Thu Oct 18 2018 Mark Goodwin <mgoodwin@redhat.com> 5.3.1-1
1f64cbe
- update to v5.3.1 upstream community sources
1f64cbe
1f64cbe
* Tue Oct 02 2018 Mark Goodwin <mgoodwin@redhat.com> 5.2.5-1
1f64cbe
- native RPM spec build with current tagged v5.2.5 sources