drop makefile in favor of create_bundles.sh script, drop husky patch
This commit is contained in:
parent
95ac515fcf
commit
ed6a83eef2
@ -1,18 +0,0 @@
|
|||||||
From fcea701c10eda55164580edceeecb9fbb43c8e90 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andreas Gerstmayr <agerstmayr@redhat.com>
|
|
||||||
Date: Wed, 22 Jun 2022 18:29:42 +0200
|
|
||||||
Subject: [PATCH] disable husky git hook
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/package.json b/package.json
|
|
||||||
index 9c2e666bf2..a00cc73167 100644
|
|
||||||
--- a/package.json
|
|
||||||
+++ b/package.json
|
|
||||||
@@ -52,7 +52,6 @@
|
|
||||||
"ci:test-frontend": "yarn run test:ci && yarn grafana-toolkit node-version-check",
|
|
||||||
"i18n:extract": "lingui extract",
|
|
||||||
"i18n:compile": "lingui compile",
|
|
||||||
- "postinstall": "husky install",
|
|
||||||
"betterer": "betterer",
|
|
||||||
"betterer:merge": "betterer merge",
|
|
||||||
"betterer:stats": "ts-node --transpile-only --project ./scripts/cli/tsconfig.json ./scripts/cli/reportBettererStats.ts"
|
|
101
Makefile
101
Makefile
@ -1,101 +0,0 @@
|
|||||||
VERSION := $(shell rpm --specfile *.spec --qf '%{VERSION}\n' | head -1)
|
|
||||||
RELEASE := $(shell rpm --specfile *.spec --qf '%{RELEASE}\n' | head -1 | cut -d. -f1)
|
|
||||||
CHANGELOGTIME := $(shell rpm --specfile *.spec --qf '%{CHANGELOGTIME}\n' | head -1)
|
|
||||||
SOURCE_DATE_EPOCH := $(shell echo $$(( $(CHANGELOGTIME) - $(CHANGELOGTIME) % 86400 )))
|
|
||||||
|
|
||||||
NAME := grafana
|
|
||||||
RPM_NAME := $(NAME)
|
|
||||||
SOURCE_DIR := $(NAME)-$(VERSION)
|
|
||||||
SOURCE_TAR := $(NAME)-$(VERSION).tar.gz
|
|
||||||
VENDOR_TAR := $(RPM_NAME)-vendor-$(VERSION)-$(RELEASE).tar.xz
|
|
||||||
WEBPACK_TAR := $(RPM_NAME)-webpack-$(VERSION)-$(RELEASE).tar.gz
|
|
||||||
|
|
||||||
# patches which must be applied before creating the vendor tarball, for example:
|
|
||||||
# - changes in dependency versions
|
|
||||||
# - changes in Go module imports (which affect the vendored Go modules)
|
|
||||||
PATCHES_PRE_VENDOR := \
|
|
||||||
0004-remove-unused-backend-dependencies.patch \
|
|
||||||
0005-remove-unused-frontend-crypto.patch \
|
|
||||||
0007-disable-husky-git-hook.patch \
|
|
||||||
|
|
||||||
# patches which must be applied before creating the webpack, for example:
|
|
||||||
# - changes in Node.js sources or vendored dependencies
|
|
||||||
PATCHES_PRE_WEBPACK := \
|
|
||||||
0005-remove-unused-frontend-crypto.patch \
|
|
||||||
|
|
||||||
|
|
||||||
all: $(SOURCE_TAR) $(VENDOR_TAR) $(WEBPACK_TAR)
|
|
||||||
|
|
||||||
$(SOURCE_TAR):
|
|
||||||
spectool -g $(RPM_NAME).spec
|
|
||||||
|
|
||||||
$(VENDOR_TAR): $(SOURCE_TAR)
|
|
||||||
# Start with a clean state
|
|
||||||
rm -rf $(SOURCE_DIR)
|
|
||||||
tar pxf $(SOURCE_TAR)
|
|
||||||
|
|
||||||
# Patches to apply before vendoring
|
|
||||||
for patch in $(PATCHES_PRE_VENDOR); do echo applying $$patch ...; patch -d $(SOURCE_DIR) -p1 --fuzz=0 < $$patch; done
|
|
||||||
|
|
||||||
# Go
|
|
||||||
cd $(SOURCE_DIR) && go mod vendor -v
|
|
||||||
# Generate Go files
|
|
||||||
cd $(SOURCE_DIR) && make gen-go
|
|
||||||
# Remove unused crypto
|
|
||||||
rm -r $(SOURCE_DIR)/vendor/golang.org/x/crypto/bcrypt
|
|
||||||
rm -r $(SOURCE_DIR)/vendor/golang.org/x/crypto/blowfish
|
|
||||||
rm -r $(SOURCE_DIR)/vendor/golang.org/x/crypto/cast5
|
|
||||||
rm -r $(SOURCE_DIR)/vendor/golang.org/x/crypto/openpgp/elgamal
|
|
||||||
rm $(SOURCE_DIR)/vendor/golang.org/x/crypto/openpgp/packet/ocfb.go
|
|
||||||
rm -r $(SOURCE_DIR)/vendor/golang.org/x/crypto/pkcs12/internal/rc2
|
|
||||||
awk '$$2~/^v/ && $$4 != "indirect" {print "Provides: bundled(golang(" $$1 ")) = " substr($$2, 2)}' $(SOURCE_DIR)/go.mod | \
|
|
||||||
sed -E 's/=(.*)-(.*)-(.*)/=\1-\2.\3/g' > $@.manifest
|
|
||||||
|
|
||||||
# Node.js
|
|
||||||
cd $(SOURCE_DIR) && yarn install --frozen-lockfile
|
|
||||||
# Remove files with licensing issues
|
|
||||||
find $(SOURCE_DIR)/.yarn -name 'node-notifier' -prune -exec rm -r {} \;
|
|
||||||
find $(SOURCE_DIR)/.yarn -name 'nodemon' -prune -exec rm -r {} \;
|
|
||||||
#rm -r $(SOURCE_DIR)/node_modules/visjs-network/examples
|
|
||||||
./list_bundled_nodejs_packages.py $(SOURCE_DIR) >> $@.manifest
|
|
||||||
|
|
||||||
# Create tarball
|
|
||||||
XZ_OPT=-9 tar \
|
|
||||||
--sort=name \
|
|
||||||
--mtime="@$(SOURCE_DATE_EPOCH)" --clamp-mtime \
|
|
||||||
--owner=0 --group=0 --numeric-owner \
|
|
||||||
-cJf $@ \
|
|
||||||
$(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
|
|
||||||
|
|
||||||
$(WEBPACK_TAR): $(VENDOR_TAR)
|
|
||||||
# Start with a clean state
|
|
||||||
rm -rf $(SOURCE_DIR)
|
|
||||||
tar pxf $(SOURCE_TAR)
|
|
||||||
tar pxf $(VENDOR_TAR)
|
|
||||||
|
|
||||||
# Patches to apply before creating the webpack
|
|
||||||
for patch in $(PATCHES_PRE_WEBPACK); do echo applying $$patch ...; patch -d $(SOURCE_DIR) -p1 --fuzz=0 < $$patch; done
|
|
||||||
|
|
||||||
# Build frontend
|
|
||||||
cd $(SOURCE_DIR) && \
|
|
||||||
../build_frontend.sh
|
|
||||||
|
|
||||||
# Create tarball
|
|
||||||
tar \
|
|
||||||
--sort=name \
|
|
||||||
--mtime="@$(SOURCE_DATE_EPOCH)" --clamp-mtime \
|
|
||||||
--owner=0 --group=0 --numeric-owner \
|
|
||||||
-czf $@ \
|
|
||||||
$(SOURCE_DIR)/plugins-bundled \
|
|
||||||
$(SOURCE_DIR)/public/build \
|
|
||||||
$(SOURCE_DIR)/public/img \
|
|
||||||
$(SOURCE_DIR)/public/lib \
|
|
||||||
$(SOURCE_DIR)/public/locales \
|
|
||||||
$(SOURCE_DIR)/public/views
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf *.tar.gz *.tar.xz *.manifest *.rpm $(NAME)-*/
|
|
85
create_bundles.sh
Executable file
85
create_bundles.sh
Executable file
@ -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"
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -eu
|
#!/bin/bash -eu
|
||||||
#
|
#
|
||||||
# create vendor and webpack bundles inside a container for reproducibility
|
# create vendor and webpack bundles inside a container (for reproducibility)
|
||||||
# using a Go cache:
|
# using a Go cache:
|
||||||
# ./create_bundles_in_container.sh --security-opt label=disable -v $(pwd)/.gocache:/root/go
|
# ./create_bundles_in_container.sh --security-opt label=disable -v $(pwd)/.gocache:/root/go
|
||||||
#
|
#
|
||||||
@ -15,9 +15,9 @@ RUN dnf upgrade -y && \
|
|||||||
ENV GOPROXY=https://proxy.golang.org,direct
|
ENV GOPROXY=https://proxy.golang.org,direct
|
||||||
|
|
||||||
WORKDIR /tmp/grafana-build
|
WORKDIR /tmp/grafana-build
|
||||||
COPY Makefile grafana.spec *.patch build_frontend.sh list_bundled_nodejs_packages.py .
|
COPY grafana.spec create_bundles.sh build_frontend.sh list_bundled_nodejs_packages.py *.patch .
|
||||||
RUN mkdir bundles
|
RUN mkdir bundles
|
||||||
CMD make && mv *.tar.* bundles
|
CMD ./create_bundles.sh && mv *.tar.* bundles
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
podman run --name grafana-build --replace "$@" grafana-build
|
podman run --name grafana-build --replace "$@" grafana-build
|
||||||
|
10
grafana.spec
10
grafana.spec
@ -46,8 +46,8 @@ Source2: grafana-webpack-%{version}-1.tar.gz
|
|||||||
# Source3 contains the systemd-sysusers configuration
|
# Source3 contains the systemd-sysusers configuration
|
||||||
Source3: grafana.sysusers
|
Source3: grafana.sysusers
|
||||||
|
|
||||||
# Source4 contains the Makefile to create the vendor and webpack bundles
|
# Source4 contains the script to create the vendor and webpack bundles
|
||||||
Source4: Makefile
|
Source4: create_bundles.sh
|
||||||
|
|
||||||
# Source5 contains the script to build the frontend
|
# Source5 contains the script to build the frontend
|
||||||
Source5: build_frontend.sh
|
Source5: build_frontend.sh
|
||||||
@ -66,7 +66,6 @@ Patch4: 0004-remove-unused-backend-dependencies.patch
|
|||||||
Patch5: 0005-remove-unused-frontend-crypto.patch
|
Patch5: 0005-remove-unused-frontend-crypto.patch
|
||||||
# https://github.com/grafana/grafana/pull/42334
|
# https://github.com/grafana/grafana/pull/42334
|
||||||
Patch6: 0006-notifications-use-HMAC-SHA256-to-generate-password-r.patch
|
Patch6: 0006-notifications-use-HMAC-SHA256-to-generate-password-r.patch
|
||||||
Patch7: 0007-disable-husky-git-hook.patch
|
|
||||||
Patch8: 0008-skip-marketplace-plugin-install-test.patch
|
Patch8: 0008-skip-marketplace-plugin-install-test.patch
|
||||||
# https://github.com/grafana/grafana/pull/51508
|
# https://github.com/grafana/grafana/pull/51508
|
||||||
Patch9: 0009-Prometheus-Fix-integer-overflow-in-rate-interval-cal.patch
|
Patch9: 0009-Prometheus-Fix-integer-overflow-in-rate-interval-cal.patch
|
||||||
@ -704,7 +703,6 @@ rm -r plugins-bundled
|
|||||||
%if 0%{?fedora} || 0%{?rhel} > 8
|
%if 0%{?fedora} || 0%{?rhel} > 8
|
||||||
%patch6 -p1
|
%patch6 -p1
|
||||||
%endif
|
%endif
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
%patch8 -p1
|
||||||
%patch9 -p1
|
%patch9 -p1
|
||||||
%patch10 -p1
|
%patch10 -p1
|
||||||
@ -726,7 +724,7 @@ rm -r plugins-bundled
|
|||||||
|
|
||||||
# Build the backend
|
# Build the backend
|
||||||
|
|
||||||
# see grafana-X.X.X/build.go
|
# see grafana-X.Y.Z/pkg/build/cmd.go
|
||||||
export LDFLAGS="-X main.version=%{version} -X main.buildstamp=${SOURCE_DATE_EPOCH}"
|
export LDFLAGS="-X main.version=%{version} -X main.buildstamp=${SOURCE_DATE_EPOCH}"
|
||||||
for cmd in grafana-cli grafana-server; do
|
for cmd in grafana-cli grafana-server; do
|
||||||
%gobuild -o %{_builddir}/bin/${cmd} ./pkg/cmd/${cmd}
|
%gobuild -o %{_builddir}/bin/${cmd} ./pkg/cmd/${cmd}
|
||||||
@ -833,7 +831,7 @@ yarn run jest
|
|||||||
# Test backend
|
# Test backend
|
||||||
|
|
||||||
# in setting_test.go there is a unit test which checks if 10 days are 240 hours
|
# in setting_test.go there is a unit test which checks if 10 days are 240 hours
|
||||||
# which is usually true except if the dayligt saving time change falls into the last 10 days, then it's either 239 or 241 hours...
|
# which is usually true except if the daylight saving time change falls into the last 10 days, then it's either 239 or 241 hours...
|
||||||
# let's set the time zone to a time zone without daylight saving time
|
# let's set the time zone to a time zone without daylight saving time
|
||||||
export TZ=GMT
|
export TZ=GMT
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user