# 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: 4%{?dist} Summary: Performance Co-Pilot Grafana Plugin License: Apache-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 %{_libexecdir}/grafana-pcp # 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 -P1 -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 * Wed Sep 13 2023 Sam Feifer 5.1.1-4 - Move location of plugin from /usr/share/... to /usr/libexec/... because there is a binary executable * Thu Jul 20 2023 Fedora Release Engineering - 5.1.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Thu Jan 19 2023 Fedora Release Engineering - 5.1.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Thu Oct 27 2022 Andreas Gerstmayr 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 5.0.0-4 - install plugin in /usr/share and create symlink from /var using systemd-tmpfiles to work on rpm-ostree based distributions - drop makefile in favor of create_bundles.sh script - replace plugin id patch with sed to catch future usages of the new upstream plugin ids * Thu Jul 21 2022 Fedora Release Engineering - 5.0.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Fri Jul 08 2022 Andreas Gerstmayr 5.0.0-2 - bump required Grafana version to 8.5.6 * Thu Jul 07 2022 Andreas Gerstmayr 5.0.0-1 - update to 5.0.0 tagged upstream community sources, see CHANGELOG - reverted 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 * Sat Jun 18 2022 Robert-André Mauchin - 3.2.0-3 - Rebuilt for CVE-2022-1996, CVE-2022-24675, CVE-2022-28327, CVE-2022-27191, CVE-2022-29526, CVE-2022-30629 * Thu Jan 20 2022 Fedora Release Engineering - 3.2.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Fri Nov 12 2021 Andreas Gerstmayr 3.2.0-1 - update to 3.2.0 tagged upstream community sources, see CHANGELOG * Thu Jul 22 2021 Fedora Release Engineering - 3.1.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild * Fri Jun 25 2021 Andreas Gerstmayr 3.1.0-1 - update to 3.1.0 tagged upstream community sources, see CHANGELOG - remove unused cryptographic implementations * Tue Jan 26 2021 Fedora Release Engineering - 3.0.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Fri Jan 22 2021 Andreas Gerstmayr 3.0.2-1 - update to 3.0.2 tagged upstream community sources, see CHANGELOG * Wed Dec 23 2020 Andreas Gerstmayr 3.0.1-1 - update to 3.0.1 tagged upstream community sources, see CHANGELOG * Thu Nov 26 2020 Andreas Gerstmayr 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 - 2.0.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Tue Feb 25 2020 Andreas Gerstmayr 2.0.2-1 - vector, redis: remove autocompletion cache (PCP metrics can be added and removed dynamically) * Thu Feb 20 2020 Andreas Gerstmayr 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 1.0.7-1 - redis: fix timespec (fixes empty graphs for large time ranges) * Wed Jan 29 2020 Fedora Release Engineering - 1.0.6-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Tue Jan 07 2020 Andreas Gerstmayr 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 1.0.4-2 - remove node_modules/node-notifier directory from webpack (due to licensing issues) * Wed Dec 11 2019 Andreas Gerstmayr 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 1.0.3-1 - fix flame graph dependency (flamegraph.destroy error in javascript console) * Tue Nov 12 2019 Andreas Gerstmayr 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 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 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 0.0.6-1 - renamed package to grafana-pcp-redis, updated README, etc * Wed Jun 05 2019 Mark Goodwin 0.0.5-1 - renamed package to grafana-pcp-datasource, README, etc * Fri May 17 2019 Mark Goodwin 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 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 0.0.2-1 - initial version