summaryrefslogtreecommitdiff
path: root/create_bundles.sh
diff options
context:
space:
mode:
Diffstat (limited to 'create_bundles.sh')
-rwxr-xr-xcreate_bundles.sh85
1 files changed, 85 insertions, 0 deletions
diff --git a/create_bundles.sh b/create_bundles.sh
new file mode 100755
index 0000000..647ad5c
--- /dev/null
+++ b/create_bundles.sh
@@ -0,0 +1,85 @@
+#!/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-$VERSION
+SOURCE_TAR=grafana-$VERSION.tar.gz
+VENDOR_TAR=grafana-vendor-$VERSION-$RELEASE.tar.xz
+WEBPACK_TAR=grafana-webpack-$VERSION-$RELEASE.tar.gz
+
+
+## Download and extract source tarball
+spectool -g grafana.spec
+rm -rf "${SOURCE_DIR}"
+tar xf "${SOURCE_TAR}"
+
+
+## Create vendor bundle
+pushd "${SOURCE_DIR}"
+
+# Vendor Go dependencies
+patch -p1 --fuzz=0 < ../0004-remove-unused-backend-dependencies.patch
+go mod vendor
+
+# Generate Go files
+make gen-go
+
+# Remove unused crypto
+rm -r vendor/golang.org/x/crypto/bcrypt
+rm -r vendor/golang.org/x/crypto/blowfish
+rm -r vendor/golang.org/x/crypto/cast5
+rm -r vendor/golang.org/x/crypto/openpgp/elgamal
+rm vendor/golang.org/x/crypto/openpgp/packet/ocfb.go
+rm -r vendor/golang.org/x/crypto/pkcs12/internal/rc2
+
+# 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 < ../0005-remove-unused-frontend-crypto.patch
+export HUSKY=0
+yarn install --frozen-lockfile
+
+# Remove files with licensing issues
+find .yarn -name 'node-notifier' -prune -exec rm -r {} \;
+find .yarn -name 'nodemon' -prune -exec rm -r {} \;
+
+# List bundled dependencies
+../list_bundled_nodejs_packages.py . >> "../${VENDOR_TAR}.manifest"
+
+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" \
+ $(find "${SOURCE_DIR}" -type f -name wire_gen.go | LC_ALL=C sort) \
+ "${SOURCE_DIR}/.pnp.cjs" \
+ "${SOURCE_DIR}/.yarn/cache" \
+ "${SOURCE_DIR}/.yarn/unplugged"
+
+
+## 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}/plugins-bundled" \
+ "${SOURCE_DIR}/public/build" \
+ "${SOURCE_DIR}/public/img" \
+ "${SOURCE_DIR}/public/lib" \
+ "${SOURCE_DIR}/public/locales" \
+ "${SOURCE_DIR}/public/views"