From c9572510f9e8539fa2c867c763a74514fa0ada54 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Wed, 17 May 2023 10:38:34 -0400 Subject: [PATCH] Update to upstream grafana-pcp 5.1.1 Resolves: rhbz#2193270 --- .gitignore | 3 + 0001-remove-unused-frontend-crypto.patch | 259 +++++++++++++++++++++++ 001-remove-unused-frontend-crypto.patch | 28 --- build_frontend.sh | 14 ++ create_bundles.sh | 68 ++++++ create_bundles_in_container.sh | 21 ++ gating.yaml | 13 ++ grafana-pcp.rpmlintrc | 6 + grafana-pcp.spec | 140 ++++++------ sources | 6 +- 10 files changed, 456 insertions(+), 102 deletions(-) create mode 100644 0001-remove-unused-frontend-crypto.patch delete mode 100644 001-remove-unused-frontend-crypto.patch create mode 100755 create_bundles.sh create mode 100755 create_bundles_in_container.sh create mode 100644 grafana-pcp.rpmlintrc diff --git a/.gitignore b/.gitignore index ab344be..a38b4d3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ SOURCES/grafana-pcp-webpack-3.2.0-1.tar.gz /grafana-pcp-3.2.0.tar.gz /grafana-pcp-vendor-3.2.0-1.tar.xz /grafana-pcp-webpack-3.2.0-1.tar.gz +/grafana-pcp-5.1.1.tar.gz +/grafana-pcp-webpack-5.1.1-1.tar.gz +/grafana-pcp-vendor-5.1.1-1.tar.xz diff --git a/0001-remove-unused-frontend-crypto.patch b/0001-remove-unused-frontend-crypto.patch new file mode 100644 index 0000000..0991d4b --- /dev/null +++ b/0001-remove-unused-frontend-crypto.patch @@ -0,0 +1,259 @@ +From 7ed5650dc812fcbfcda7162845c4e6ea73a239a6 Mon Sep 17 00:00:00 2001 +From: Andreas Gerstmayr +Date: Thu, 7 Jul 2022 15:38:28 +0200 +Subject: [PATCH] remove unused frontend crypto + +update `package.json` and then run `yarn install` to update the +`yarn.lock` lockfile + +diff --git a/package.json b/package.json +index 14c2960..db6858a 100644 +--- a/package.json ++++ b/package.json +@@ -63,6 +63,10 @@ + "redux-persist": "^6.0.0", + "redux-thunk": "^2.3.0" + }, ++ "resolutions": { ++ "crypto-browserify": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz", ++ "http-signature": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz" ++ }, + "engines": { + "node": ">=14" + } +diff --git a/yarn.lock b/yarn.lock +index 44bcec7..c2a86be 100644 +--- a/yarn.lock ++++ b/yarn.lock +@@ -4067,18 +4067,6 @@ array.prototype.flatmap@^1.2.5: + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +-asn1@~0.2.3: +- version "0.2.6" +- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" +- integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== +- dependencies: +- safer-buffer "~2.1.0" +- +-assert-plus@1.0.0, assert-plus@^1.0.0: +- version "1.0.0" +- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" +- integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== +- + astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" +@@ -4321,13 +4309,6 @@ base64-js@^1.3.1: + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +-bcrypt-pbkdf@^1.0.0: +- version "1.0.2" +- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" +- integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== +- dependencies: +- tweetnacl "^0.14.3" +- + big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" +@@ -4839,11 +4820,6 @@ core-js@^3.6.5: + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.0.tgz#a516db0ed0811be10eac5d94f3b8463d03faccfe" + integrity sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw== + +-core-util-is@1.0.2: +- version "1.0.2" +- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +- integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== +- + cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" +@@ -4890,6 +4866,10 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + shebang-command "^2.0.0" + which "^2.0.1" + ++"crypto-browserify@https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz", "http-signature@https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz", http-signature@~1.3.6: ++ version "1.1.1" ++ resolved "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz#f8cae15d883ffc0abc663b5eaaa711fcc64bb5c2" ++ + css-animation@^1.3.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.6.1.tgz#162064a3b0d51f958b7ff37b3d6d4de18e17039e" +@@ -5469,13 +5449,6 @@ d3@5.15.0: + d3-voronoi "1" + d3-zoom "1" + +-dashdash@^1.12.0: +- version "1.14.1" +- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" +- integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== +- dependencies: +- assert-plus "^1.0.0" +- + data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" +@@ -5722,14 +5695,6 @@ duplexer@^0.1.2: + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +-ecc-jsbn@~0.1.1: +- version "0.1.2" +- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" +- integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== +- dependencies: +- jsbn "~0.1.0" +- safer-buffer "^2.1.0" +- + electron-to-chromium@^1.4.172: + version "1.4.264" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.264.tgz#2f68a062c38b7a04bf57f3e6954b868672fbdcd3" +@@ -6336,16 +6301,6 @@ extract-zip@2.0.1: + optionalDependencies: + "@types/yauzl" "^2.9.1" + +-extsprintf@1.3.0: +- version "1.3.0" +- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" +- integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== +- +-extsprintf@^1.2.0: +- version "1.4.1" +- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" +- integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== +- + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" +@@ -6746,13 +6701,6 @@ getos@^3.2.1: + dependencies: + async "^3.2.0" + +-getpass@^0.1.1: +- version "0.1.7" +- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" +- integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== +- dependencies: +- assert-plus "^1.0.0" +- + glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" +@@ -7011,15 +6959,6 @@ http-proxy@^1.18.1: + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +-http-signature@~1.3.6: +- version "1.3.6" +- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" +- integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== +- dependencies: +- assert-plus "^1.0.0" +- jsprim "^2.0.2" +- sshpk "^1.14.1" +- + https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" +@@ -7990,11 +7929,6 @@ js-yaml@^4.1.0: + dependencies: + argparse "^2.0.1" + +-jsbn@~0.1.0: +- version "0.1.1" +- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +- integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +- + jsdoc-type-pratt-parser@~2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz#c9f93afac7ee4b5ed4432fe3f09f7d36b05ed0ff" +@@ -8058,11 +7992,6 @@ json-schema-traverse@^1.0.0: + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +-json-schema@0.4.0: +- version "0.4.0" +- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" +- integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== +- + json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" +@@ -8092,16 +8021,6 @@ jsonfile@^6.0.1: + optionalDependencies: + graceful-fs "^4.1.6" + +-jsprim@^2.0.2: +- version "2.0.2" +- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" +- integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== +- dependencies: +- assert-plus "1.0.0" +- extsprintf "1.3.0" +- json-schema "0.4.0" +- verror "1.10.0" +- + "jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz#a3e0f1cb7e230954eab4dcbce9f6288a78f8ba44" +@@ -10611,7 +10530,7 @@ safe-buffer@~5.1.1: + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +-"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: ++"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +@@ -10989,21 +10908,6 @@ sprintf-js@~1.0.2: + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +-sshpk@^1.14.1: +- version "1.17.0" +- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" +- integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== +- dependencies: +- asn1 "~0.2.3" +- assert-plus "^1.0.0" +- bcrypt-pbkdf "^1.0.0" +- dashdash "^1.12.0" +- ecc-jsbn "~0.1.1" +- getpass "^0.1.1" +- jsbn "~0.1.0" +- safer-buffer "^2.0.2" +- tweetnacl "~0.14.0" +- + stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" +@@ -11459,11 +11363,6 @@ tunnel-agent@^0.6.0: + dependencies: + safe-buffer "^5.0.1" + +-tweetnacl@^0.14.3, tweetnacl@~0.14.0: +- version "0.14.5" +- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +- integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== +- + type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" +@@ -11649,15 +11548,6 @@ value-equal@^1.0.1: + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +-verror@1.10.0: +- version "1.10.0" +- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" +- integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== +- dependencies: +- assert-plus "^1.0.0" +- core-util-is "1.0.2" +- extsprintf "^1.2.0" +- + w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" diff --git a/001-remove-unused-frontend-crypto.patch b/001-remove-unused-frontend-crypto.patch deleted file mode 100644 index 3fecda1..0000000 --- a/001-remove-unused-frontend-crypto.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/package.json b/package.json -index 698043c..d9f0f44 100644 ---- a/package.json -+++ b/package.json -@@ -70,6 +70,8 @@ - "redux-thunk": "^2.3.0" - }, - "resolutions": { -+ "crypto-browserify": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz", -+ "http-signature": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz", - "monaco-editor": "0.20.0", - "rxjs": "6.6.3" - }, -diff --git a/webpack.config.js b/webpack.config.js -index ae72fd8..529d6bf 100644 ---- a/webpack.config.js -+++ b/webpack.config.js -@@ -89,6 +89,10 @@ module.exports.getWebpackConfig = (config, options) => { - ...config.module, - rules: removeDataTestAttributeInProduction(options.production, excludeExtractionLoaderForMonaco(config.module.rules)), - }, -+ node: { -+ ...config.node, -+ crypto: false -+ }, - plugins: [ - ...updateForkTsCheckerPluginSettings(config.plugins), - new MonacoWebpackPlugin({ diff --git a/build_frontend.sh b/build_frontend.sh index 8f86afa..a0443d7 100755 --- a/build_frontend.sh +++ b/build_frontend.sh @@ -1,5 +1,19 @@ #!/bin/bash -eu +# Revert upstream change: "rename plugin IDs from pcp-*-* to performancecopilot-*-*" +# https://github.com/performancecopilot/grafana-pcp/commit/70ca5cc307e231cea14281e1cd2268ae4f1f445c +# This change would break all existing custom dashboards. Using sed here instead of a patch +# to catch all future usage of the new upstream plugin ids. +find src cypress \( -name '*.ts' -o -name '*.json' -o -name '*.jsonnet' -o -name '*.libsonnet' \) \ + -exec sed -i \ + -e 's/performancecopilot-redis-datasource/pcp-redis-datasource/g' \ + -e 's/performancecopilot-vector-datasource/pcp-vector-datasource/g' \ + -e 's/performancecopilot-bpftrace-datasource/pcp-bpftrace-datasource/g' \ + -e 's/performancecopilot-flamegraph-panel/pcp-flamegraph-panel/g' \ + -e 's/performancecopilot-breadcrumbs-panel/pcp-breadcrumbs-panel/g' \ + -e 's/performancecopilot-troubleshooting-panel/pcp-troubleshooting-panel/g' \ + {} \; + # Build the frontend yarn run build diff --git a/create_bundles.sh b/create_bundles.sh new file mode 100755 index 0000000..278046b --- /dev/null +++ b/create_bundles.sh @@ -0,0 +1,68 @@ +#!/bin/bash -eux +VERSION=$(rpm --specfile ./*.spec --qf '%{VERSION}\n' | head -1) +RELEASE=$(rpm --specfile ./*.spec --qf '%{RELEASE}\n' | head -1 | cut -d. -f1) +CHANGELOGTIME=$(rpm --specfile ./*.spec --qf '%{CHANGELOGTIME}\n' | head -1) +SOURCE_DATE_EPOCH=$((CHANGELOGTIME - CHANGELOGTIME % 86400)) + +SOURCE_DIR=grafana-pcp-$VERSION +SOURCE_TAR=grafana-pcp-$VERSION.tar.gz +VENDOR_TAR=grafana-pcp-vendor-$VERSION-$RELEASE.tar.xz +WEBPACK_TAR=grafana-pcp-webpack-$VERSION-$RELEASE.tar.gz + + +## Download and extract source tarball +spectool -g grafana-pcp.spec +rm -rf "${SOURCE_DIR}" +tar xf "${SOURCE_TAR}" + + +## Create vendor bundle +pushd "${SOURCE_DIR}" + +# Vendor Go dependencies +go mod vendor + +# List bundled dependencies +awk '$2 ~ /^v/ && $4 != "indirect" {print "Provides: bundled(golang(" $1 ")) = " substr($2, 2)}' go.mod | \ + sed -E 's/=(.*)-(.*)-(.*)/=\1-\2.\3/g' > "../${VENDOR_TAR}.manifest" + +# Vendor Node.js dependencies +patch -p1 --fuzz=0 < ../0001-remove-unused-frontend-crypto.patch +yarn install --frozen-lockfile + +# Remove files with licensing issues +find . -type d -name 'node-notifier' -prune -exec rm -r {} \; +find . -type f -name '*.exe' -delete + +# List bundled dependencies +../list_bundled_nodejs_packages.py . >> "../${VENDOR_TAR}.manifest" + +# Vendor Jsonnet dependencies +jb --jsonnetpkg-home=vendor_jsonnet install + +popd + +# Create tarball +# shellcheck disable=SC2046 +XZ_OPT=-9 tar \ + --sort=name \ + --mtime="@${SOURCE_DATE_EPOCH}" --clamp-mtime \ + --owner=0 --group=0 --numeric-owner \ + -cJf "${VENDOR_TAR}" \ + "${SOURCE_DIR}/vendor" \ + "${SOURCE_DIR}/node_modules" \ + "${SOURCE_DIR}/vendor_jsonnet" + + +## Create webpack +pushd "${SOURCE_DIR}" +../build_frontend.sh +popd + +# Create tarball +tar \ + --sort=name \ + --mtime="@${SOURCE_DATE_EPOCH}" --clamp-mtime \ + --owner=0 --group=0 --numeric-owner \ + -czf "${WEBPACK_TAR}" \ + "${SOURCE_DIR}/dist" diff --git a/create_bundles_in_container.sh b/create_bundles_in_container.sh new file mode 100755 index 0000000..2524525 --- /dev/null +++ b/create_bundles_in_container.sh @@ -0,0 +1,21 @@ +#!/bin/bash -eu +# +# create vendor and webpack bundles inside a container (for reproducibility) +# using a Go cache: +# ./create_bundles_in_container.sh --security-opt label=disable -v $(pwd)/.gocache:/root/go +# + +cat <= 31 + +BuildRequires: systemd-rpm-macros +BuildRequires: golang +BuildRequires: go-srpm-macros +%if 0%{?rhel} >= 9 BuildRequires: go-rpm-macros %endif @@ -57,13 +53,12 @@ BuildRequires: go-rpm-macros BuildRequires: make, nodejs >= 1:14, yarnpkg, golang-github-google-jsonnet %endif -# omit golang debugsource, see BZ 995136 and related -%global dwz_low_mem_die_limit 0 -%global _debugsource_template %{nil} +%global plugin_dir %{_sharedstatedir}/grafana/plugins/performancecopilot-pcp-app +%global install_dir %{_datadir}/performancecopilot-pcp-app -%global install_dir %{_sharedstatedir}/grafana/plugins/performancecopilot-pcp-app - -Requires: grafana >= 7.5.9 +# 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 @@ -79,60 +74,55 @@ Obsoletes: pcp-webapp-vector <= 4.3.4 # 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.115.0 -Provides: bundled(golang(github.com/stretchr/testify)) = 1.7.0 -Provides: bundled(npm(@babel/plugin-transform-modules-commonjs)) = 7.16.0 -Provides: bundled(npm(@grafana/data)) = 7.5.11 -Provides: bundled(npm(@grafana/runtime)) = 7.5.11 -Provides: bundled(npm(@grafana/toolkit)) = 7.5.11 -Provides: bundled(npm(@grafana/ui)) = 7.5.11 -Provides: bundled(npm(@testing-library/jest-dom)) = 5.4.0 -Provides: bundled(npm(@testing-library/react)) = 10.4.9 +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)) = 1.4.3 +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/expect-puppeteer)) = 3.3.1 -Provides: bundled(npm(@types/jest)) = 26.0.15 -Provides: bundled(npm(@types/jest-environment-puppeteer)) = 4.4.1 -Provides: bundled(npm(@types/lodash)) = 4.14.176 +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)) = 9.3.14 -Provides: bundled(npm(@types/react-redux)) = 7.1.20 +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(@types/redux-persist-transform-filter)) = 0.0.4 -Provides: bundled(npm(babel-plugin-remove-object-properties)) = 1.0.2 +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)) = 3.3.1 -Provides: bundled(npm(jest-date-mock)) = 1.0.8 -Provides: bundled(npm(jest-puppeteer)) = 5.0.4 +Provides: bundled(npm(eslint-plugin-prettier)) = 4.2.1 Provides: bundled(npm(lodash)) = 4.17.21 -Provides: bundled(npm(loglevel)) = 1.7.1 +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.20.0 -Provides: bundled(npm(monaco-editor-webpack-plugin)) = 1.9.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(puppeteer)) = 10.4.0 Provides: bundled(npm(react-autosuggest)) = 10.1.0 -Provides: bundled(npm(react-monaco-editor)) = 0.36.0 -Provides: bundled(npm(react-redux)) = 7.2.6 -Provides: bundled(npm(react-use)) = 15.3.8 -Provides: bundled(npm(redux)) = 3.7.2 -Provides: bundled(npm(redux-persist)) = 4.10.2 -Provides: bundled(npm(redux-thunk)) = 2.4.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 datasources for +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. @@ -143,23 +133,16 @@ bpftrace scripts from pmdabpftrace(1), as well as several dashboards. %setup -q -T -D -b 2 %endif -%patch1 -p1 - -# Set up Go build subdir and links -mkdir -p %{_builddir}/src/github.com/performancecopilot -ln -s %{_builddir}/%{name}-%{version} \ - %{_builddir}/src/github.com/performancecopilot/grafana-pcp +%patch -P 1 -p1 %build -# Build frontend datasources +# Build frontend data sources %if %{compile_frontend} %{SOURCE4} %endif -# Build backend datasource -cd %{_builddir}/src/github.com/performancecopilot/grafana-pcp -export GOPATH=%{_builddir} +# Build backend data source %gobuild -o dist/datasources/redis/pcp_redis_datasource_$(go env GOOS)_$(go env GOARCH) ./pkg @@ -167,37 +150,52 @@ export GOPATH=%{_builddir} 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 datasources +# Test frontend data sources %if %{compile_frontend} yarn test %endif -# Test backend datasource -cd %{_builddir}/src/github.com/performancecopilot/grafana-pcp -export GOPATH=%{_builddir} +# 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 +* Thu Apr 20 2023 Stan Cox 5.1.1-1 +- update to 5.1.1 tagged upstream community sources, see CHANGELOG + * Tue Nov 01 2022 Stan Cox 3.2.0-3 - resolve CVE-2022-27664 grafana-pcp: golang: net/http: handle server errors after sending GOAWAY diff --git a/sources b/sources index 6d85533..0bf8c9f 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (grafana-pcp-3.2.0.tar.gz) = 5e5f6955bf32dfaec46493065a3d0d1951126df84382f4ca3537931355ed661dfebe4fda76c0b6825d76c4c28c97b53ba80d39170d4a3b2166dcbe0d82ed7ec9 -SHA512 (grafana-pcp-vendor-3.2.0-1.tar.xz) = 1a3d4ded548c0640d0a508b9dec73748b8447eb202a9fc181adb308654561fed644467012c30e0b802da71e1fd6cdeb7966763f8b2c6ecaa47afb2c4afa9b00a -SHA512 (grafana-pcp-webpack-3.2.0-1.tar.gz) = d14eebcdbf957fd7f552e34d23ddcfb54d29a7f9c893ede956aced3aeb64fe08a72340fb9ff4bf1508b3c3f8148aadc0363b1b3aa320a188cc87ae8e33c5eccb +SHA512 (grafana-pcp-5.1.1.tar.gz) = 697dfbe1e5cd5d66080197dab2798af0965747a4460d15e62c3497f64674bcc77fc776ac5c95cb7043dcf534e8e0eae47afd7500a5851a0d35ad1062e8d4ac2e +SHA512 (grafana-pcp-webpack-5.1.1-1.tar.gz) = 0c71a9c1fc87a58273a5b4d06c0482e2e059bd9aee1dfb200f5a1e8c52f82af1394bdccfbf5c25d20b021e58db7c2185d0c14f85d77f00a51926f80dfa0dade5 +SHA512 (grafana-pcp-vendor-5.1.1-1.tar.xz) = 8a10a72ef9dd3622d02f7418c98b8e34eb1c978bfac9c0e29bd3099a1c1fc80b61375d6947d29a85256614ce4e01021af38a8d0f4f735daf594e6789169a32bf