summaryrefslogtreecommitdiff
path: root/grafana-pcp.spec
diff options
context:
space:
mode:
Diffstat (limited to 'grafana-pcp.spec')
-rw-r--r--grafana-pcp.spec341
1 files changed, 341 insertions, 0 deletions
diff --git a/grafana-pcp.spec b/grafana-pcp.spec
new file mode 100644
index 0000000..49df673
--- /dev/null
+++ b/grafana-pcp.spec
@@ -0,0 +1,341 @@
+# Specify if the frontend will be compiled as part of the build or
+# is attached as a webpack tarball (in case of an unsuitable nodejs version on the build system)
+%define compile_frontend 0
+
+%global grafanapcp_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}
+
+%global gomodulesmode GO111MODULE=auto
+
+Name: grafana-pcp
+Version: 5.1.1
+Release: 3%{?dist}
+Summary: Performance Co-Pilot Grafana Plugin
+License: ASL 2.0
+URL: https://github.com/performancecopilot/grafana-pcp
+
+Source0: https://github.com/performancecopilot/grafana-pcp/archive/v%{version}/%{name}-%{version}.tar.gz
+Source1: grafana-pcp-vendor-%{version}-1.tar.xz
+# Note: In case there were no changes to this tarball, the NVR of this tarball
+# lags behind the NVR of this package.
+%if %{compile_frontend} == 0
+# Source2 contains the precompiled frontend and dashboards
+# Note: In case there were no changes to this tarball, the NVR of this tarball
+# lags behind the NVR of this package.
+Source2: grafana-pcp-webpack-%{version}-1.tar.gz
+%endif
+Source3: create_bundles.sh
+Source4: build_frontend.sh
+Source5: list_bundled_nodejs_packages.py
+Source6: create_bundles_in_container.sh
+
+Patch1: 0001-remove-unused-frontend-crypto.patch
+
+# Intersection of go_arches and nodejs_arches
+ExclusiveArch: %{grafanapcp_arches}
+
+BuildRequires: systemd-rpm-macros
+BuildRequires: golang
+BuildRequires: go-srpm-macros
+BuildRequires: go-rpm-macros
+
+%if %{compile_frontend}
+BuildRequires: make, nodejs >= 1:14, yarnpkg, golang-github-google-jsonnet
+%endif
+
+%global plugin_dir %{_sharedstatedir}/grafana/plugins/performancecopilot-pcp-app
+%global install_dir %{_datadir}/performancecopilot-pcp-app
+
+# grafana-pcp requires systemd-tmpfiles
+%{?systemd_requires}
+Requires: grafana >= 9.0.9
+Suggests: pcp >= 5.2.2
+Suggests: redis >= 5.0.0
+Suggests: bpftrace >= 0.9.2
+
+# Obsolete old webapps
+Obsoletes: pcp-webjs <= 4.3.4
+Obsoletes: pcp-webapp-blinkenlights <= 4.3.4
+Obsoletes: pcp-webapp-grafana <= 4.3.4
+Obsoletes: pcp-webapp-graphite <= 4.3.4
+Obsoletes: pcp-webapp-vector <= 4.3.4
+
+# vendored golang and node.js build dependencies
+# this is for security purposes, if nodejs-foo ever needs an update,
+# affected packages can be easily identified.
+# Note: generated by the Makefile (see README.md)
+Provides: bundled(golang(github.com/grafana/grafana-plugin-sdk-go)) = 0.141.0
+Provides: bundled(golang(github.com/hashicorp/golang-lru)) = 0.5.4
+Provides: bundled(golang(github.com/stretchr/testify)) = 1.8.0
+Provides: bundled(npm(@babel/plugin-transform-modules-commonjs)) = 7.18.6
+Provides: bundled(npm(@grafana/data)) = 9.1.6
+Provides: bundled(npm(@grafana/runtime)) = 9.1.6
+Provides: bundled(npm(@grafana/toolkit)) = 9.1.6
+Provides: bundled(npm(@grafana/ui)) = 9.1.6
+Provides: bundled(npm(@trivago/prettier-plugin-sort-imports)) = 3.4.0
+Provides: bundled(npm(@types/blueimp-md5)) = 2.18.0
+Provides: bundled(npm(@types/d3-selection)) = 2.0.1
+Provides: bundled(npm(@types/enzyme)) = 3.10.8
+Provides: bundled(npm(@types/enzyme-adapter-react-16)) = 1.0.6
+Provides: bundled(npm(@types/jest)) = 26.0.24
+Provides: bundled(npm(@types/lodash)) = 4.14.181
+Provides: bundled(npm(@types/memoize-one)) = 5.1.2
+Provides: bundled(npm(@types/react-autosuggest)) = 10.1.5
+Provides: bundled(npm(@types/react-redux)) = 7.1.24
+Provides: bundled(npm(@types/redux)) = 3.6.0
+Provides: bundled(npm(@types/redux-persist)) = 4.3.1
+Provides: bundled(npm(babel-plugin-react-remove-properties)) = 0.3.0
+Provides: bundled(npm(blueimp-md5)) = 2.19.0
+Provides: bundled(npm(core-js)) = 2.6.12
+Provides: bundled(npm(cypress)) = 10.10.0
+Provides: bundled(npm(d3-flame-graph)) = 3.1.1
+Provides: bundled(npm(d3-selection)) = 1.4.2
+Provides: bundled(npm(emotion)) = 10.0.27
+Provides: bundled(npm(enzyme)) = 3.11.0
+Provides: bundled(npm(enzyme-adapter-react-16)) = 1.15.6
+Provides: bundled(npm(eslint-plugin-prettier)) = 4.2.1
+Provides: bundled(npm(lodash)) = 4.17.21
+Provides: bundled(npm(loglevel)) = 1.8.0
+Provides: bundled(npm(loglevel-plugin-prefix)) = 0.8.4
+Provides: bundled(npm(memoize-one)) = 4.1.0
+Provides: bundled(npm(monaco-editor)) = 0.31.1
+Provides: bundled(npm(monaco-editor-webpack-plugin)) = 7.0.1
+Provides: bundled(npm(prettier-plugin-organize-imports)) = 2.3.4
+Provides: bundled(npm(react-autosuggest)) = 10.1.0
+Provides: bundled(npm(react-monaco-editor)) = 0.47.0
+Provides: bundled(npm(react-redux)) = 7.2.9
+Provides: bundled(npm(react-use)) = 17.4.0
+Provides: bundled(npm(redux)) = 4.1.0
+Provides: bundled(npm(redux-persist)) = 6.0.0
+Provides: bundled(npm(redux-thunk)) = 2.4.1
+Provides: bundled(npm(utility-types)) = 3.10.0
+
+
+%description
+This Grafana plugin for Performance Co-Pilot includes data sources for
+scalable time series from pmseries(1) and Redis, live PCP metrics and
+bpftrace scripts from pmdabpftrace(1), as well as several dashboards.
+
+%prep
+%setup -q -T -D -b 0
+%setup -q -T -D -b 1
+%if %{compile_frontend} == 0
+%setup -q -T -D -b 2
+%endif
+
+%patch -P 1 -p1
+
+
+%build
+# Build frontend data sources
+%if %{compile_frontend}
+%{SOURCE4}
+%endif
+
+# Build backend data source
+%gobuild -o dist/datasources/redis/pcp_redis_datasource_$(go env GOOS)_$(go env GOARCH) ./pkg
+
+
+%install
+install -d -m 755 %{buildroot}/%{install_dir}
+cp -a dist/* %{buildroot}/%{install_dir}
+
+# On rpm-ostree based distributions, /var is exclusively reserved for application state.
+# Grafana also supports installing plugins through the UI, therefore this RPM installs
+# its content to /usr/share, and creates a symlink from /var to it using systemd-tmpfiles.
+mkdir -p %{buildroot}%{_tmpfilesdir}
+echo "L+ %{plugin_dir} - - - - %{install_dir}" > %{buildroot}%{_tmpfilesdir}/%{name}.conf
+
+%postun
+# uninstall of old package
+%systemd_postun_with_restart grafana-server.service
+
+%posttrans
+# install or upgrade of new package
+
+# create symlink after the previous package got removed
+%tmpfiles_create %_tmpfilesdir/%{name}.conf
+
+# restart Grafana after the previous package got removed
+if [ -x /usr/bin/systemctl ]; then
+ /usr/bin/systemctl try-restart grafana-server.service || :
+fi
+
+
+%check
+# Test frontend data sources
+%if %{compile_frontend}
+yarn test
+%endif
+
+# Test backend data source
+%gotest ./pkg/...
+
+
+%files
+%{install_dir}
+%{_tmpfilesdir}/%{name}.conf
+# remove symlink when package is uninstalled
+%ghost %{plugin_dir}
+
+%license LICENSE NOTICE
+%doc README.md
+
+
+%changelog
+* Tue May 7 2024 Sam Feifer <sfeifer@redhat.com> 5.1.1-3
+- bump release number
+
+* Mon May 6 2024 Sam Feifer <sfeifer@redhat.com> 5.1.1-2
+- fix CVE-2024-1394
+
+* Thu Oct 27 2022 Andreas Gerstmayr <agerstmayr@redhat.com> 5.1.1-1
+- update to 5.1.1 tagged upstream community sources, see CHANGELOG
+- resolve CVE-2022-27664 golang: net/http: handle server errors after sending GOAWAY
+
+* Mon Sep 19 2022 Andreas Gerstmayr <agerstmayr@redhat.com> 5.0.0-4
+- update to 5.0.0 tagged upstream community sources, see CHANGELOG
+- install plugin in /usr/share and create symlink from /var using
+ systemd-tmpfiles to work on rpm-ostree based distributions
+- revert the breaking change (change of internal plugin IDs) of upstream v5.0.0,
+ i.e. there are no breaking changes when performing this upgrade
+- enable Go modules in build process
+- make vendor and webpack tarballs reproducible
+- drop makefile in favor of create_bundles.sh script
+
+* Wed Aug 24 2022 Andreas Gerstmayr <agerstmayr@redhat.com> 3.2.0-3
+- bump NVR
+
+* Thu Aug 11 2022 Andreas Gerstmayr <agerstmayr@redhat.com> 3.2.0-2
+- resolve CVE-2022-1705 golang: net/http: improper sanitization of Transfer-Encoding header
+- resolve CVE-2022-32148 golang: net/http/httputil: NewSingleHostReverseProxy - omit X-Forwarded-For not working
+- resolve CVE-2022-30631 golang: compress/gzip: stack exhaustion in Reader.Read
+- resolve CVE-2022-30630 golang: io/fs: stack exhaustion in Glob
+- resolve CVE-2022-30632 golang: path/filepath: stack exhaustion in Glob
+- resolve CVE-2022-30635 golang: encoding/gob: stack exhaustion in Decoder.Decode
+
+* Fri Nov 12 2021 Andreas Gerstmayr <agerstmayr@redhat.com> 3.2.0-1
+- update to 3.2.0 tagged upstream community sources, see CHANGELOG
+
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 3.1.0-2
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+ Related: rhbz#1991688
+
+* Fri Jun 25 2021 Andreas Gerstmayr <agerstmayr@redhat.com> 3.1.0-1
+- update to 3.1.0 tagged upstream community sources, see CHANGELOG
+- remove unused cryptographic implementations
+
+* Tue Jun 22 2021 Mohan Boddu <mboddu@redhat.com> - 3.0.2-4
+- Rebuilt for RHEL 9 BETA for openssl 3.0
+ Related: rhbz#1971065
+
+* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 3.0.2-3
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Fri Jan 22 2021 Andreas Gerstmayr <agerstmayr@redhat.com> 3.0.2-1
+- update to 3.0.2 tagged upstream community sources, see CHANGELOG
+
+* Wed Dec 23 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 3.0.1-1
+- update to 3.0.1 tagged upstream community sources, see CHANGELOG
+
+* Thu Nov 26 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 3.0.0-1
+- update to 3.0.0 tagged upstream community sources, see CHANGELOG
+- bundle golang dependencies and (optionally) node.js dependencies
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue Feb 25 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 2.0.2-1
+- vector, redis: remove autocompletion cache (PCP metrics can be added and removed dynamically)
+
+* Thu Feb 20 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 2.0.1-1
+- support for Grafana 6.6+, drop support for Grafana < 6.6
+- vector, bpftrace: fix version checks on dashboard load (prevent multiple pmcd.version checks on dashboard load)
+- vector, bpftrace: change datasource check box to red if URL is inaccessible
+- redis: add tests
+- flame graphs: support multidimensional eBPF maps (required to display e.g. the process name)
+- dashboards: remove BCC metrics from Vector host overview (because the BCC PMDA is not installed by default)
+- misc: update dependencies
+- build: fix production build (implement workaround for https://github.com/systemjs/systemjs/issues/2117, https://github.com/grafana/grafana/issues/21785)
+
+* Wed Jan 29 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 1.0.7-1
+- redis: fix timespec (fixes empty graphs for large time ranges)
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.6-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Tue Jan 07 2020 Andreas Gerstmayr <agerstmayr@redhat.com> 1.0.6-1
+- redis: support wildcards in metric names
+- redis: fix label support
+- redis: fix legends
+- redis: set default sample interval to 60s (fixes empty graph borders)
+- build: upgrade copy-webpack-plugin to mitigate XSS vulnerability in the serialize-javascript transitive dependency
+- build: remove deprecated uglify-webpack-plugin
+
+* Thu Dec 12 2019 Andreas Gerstmayr <agerstmayr@redhat.com> 1.0.4-2
+- remove node_modules/node-notifier directory from webpack (due to licensing issues)
+
+* Wed Dec 11 2019 Andreas Gerstmayr <agerstmayr@redhat.com> 1.0.4-1
+- flame graphs: clean flame graph stacks every 5s (reduces CPU load)
+- general: implement PCP version checks
+- build: remove weak dependency (doesn't work with Node.js 12)
+- build: upgrade terser-webpack-plugin to mitigate XSS vulnerability in the serialize-javascript transitive dependency
+
+* Tue Nov 26 2019 Nathan Scott <nathans@redhat.com> 1.0.3-1
+- fix flame graph dependency (flamegraph.destroy error in javascript console)
+
+* Tue Nov 12 2019 Andreas Gerstmayr <agerstmayr@redhat.com> 1.0.2-1
+- handle counter wraps (overflows)
+- convert time based counters to time utilization
+- flame graphs: aggregate stack counts by selected time range in the Grafana UI
+- flame graphs: add option to hide idle stacks
+- vector: fix container dropdown in query editor
+- vector: remove container setting from datasource settings page
+- redis: fix value transformations (e.g. rate conversation of counters)
+- request more datapoints from the datasource to fill the borders of the graph panel
+
+* Fri Oct 11 2019 Andreas Gerstmayr <agerstmayr@redhat.com> 1.0.0-1
+- bpftrace: support for Flame Graphs
+- bpftrace: context-sensitive auto completion for bpftrace probes, builtin variables and functions incl. help texts
+- bpftrace: parse output of bpftrace scripts (e.g. using `printf()`) as CSV and display it in the Grafana table panel
+- bpftrace: sample dashboards (BPFtrace System Analysis, BPFtrace Flame Graphs)
+- vector: table output: show instance name in left column
+- vector: table output: support non-matching instance names (cells of metrics which don't have the specific instance will be blank)
+- vector & bpftrace: if the metric/script gets changed in the query editor, immeditately stop polling the old metric/deregister the old script
+- vector & bpftrace: improve pmwebd compatibility
+- misc: help texts for all datasources (visible with the **[ ? ]** button in the query editor)
+- misc: renamed PCP Live to PCP Vector
+- misc: logos for all datasources
+- misc: improved error handling
+
+* Fri Aug 16 2019 Andreas Gerstmayr <agerstmayr@redhat.com> 0.0.7-1
+- converted into a Grafana app plugin, renamed to grafana-pcp
+- redis: support for instance domains, labels, autocompletion, automatic rate conversation
+- live and bpftrace: initial commit of datasources
+
+* Tue Jun 11 2019 Mark Goodwin <mgoodwin@redhat.com> 0.0.6-1
+- renamed package to grafana-pcp-redis, updated README, etc
+
+* Wed Jun 05 2019 Mark Goodwin <mgoodwin@redhat.com> 0.0.5-1
+- renamed package to grafana-pcp-datasource, README, etc
+
+* Fri May 17 2019 Mark Goodwin <mgoodwin@redhat.com> 0.0.4-1
+- add suggested pmproxy URL in config html
+- updated instructions and README.md now that grafana is in Fedora
+
+* Fri Apr 12 2019 Mark Goodwin <mgoodwin@redhat.com> 0.0.3-1
+- require grafana v6.1.3 or later
+- install directory is now below /var/lib/grafana/plugins
+
+* Wed Mar 20 2019 Mark Goodwin <mgoodwin@redhat.com> 0.0.2-1
+- initial version