From 6be135e2260f0e51e492dde9064e78b7f6fc71f3 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Tue, 21 Dec 2021 10:34:50 +0100 Subject: [PATCH 1/2] Add build if changed script --- .gitignore | 3 ++ package.json | 1 + packages/spec-test-runner/package.json | 1 + packages/spec-test-runner/src/.empty | 0 scripts/build_if_changed.sh | 49 ++++++++++++++++++++++++++ 5 files changed, 54 insertions(+) create mode 100644 packages/spec-test-runner/src/.empty create mode 100755 scripts/build_if_changed.sh diff --git a/.gitignore b/.gitignore index 860263917e54..88035dbdd873 100644 --- a/.gitignore +++ b/.gitignore @@ -56,4 +56,7 @@ packages/lodestar/.tmpdb/ # Git artifacts packages/cli/.git-data.json +# Build artifacts +.last_build_unixsec + temp/ diff --git a/package.json b/package.json index 8b2db2ddd839..4ee9466385d9 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "build:lib:watch": "lerna run build:lib:watch --parallel", "build:types:watch": "lerna run build:types:watch --parallel", "build:watch": "run-p build:lib:watch build:types:watch", + "build:ifchanged": "lerna exec -- ../../scripts/build_if_changed.sh", "lint": "lerna run lint --no-bail", "check-types": "lerna run check-types --no-bail", "coverage": "lerna run coverage --no-bail", diff --git a/packages/spec-test-runner/package.json b/packages/spec-test-runner/package.json index f627e80e04f9..d01ad84c007b 100644 --- a/packages/spec-test-runner/package.json +++ b/packages/spec-test-runner/package.json @@ -20,6 +20,7 @@ "lib/**/*.js.map" ], "scripts": { + "build": "exit 0", "check-types": "tsc --noEmit", "download-spec-tests": "node -r ts-node/register test/downloadTests.ts", "check-tests": "mocha test/checkTests.test.ts", diff --git a/packages/spec-test-runner/src/.empty b/packages/spec-test-runner/src/.empty new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/scripts/build_if_changed.sh b/scripts/build_if_changed.sh new file mode 100755 index 000000000000..9becb9075dac --- /dev/null +++ b/scripts/build_if_changed.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# Writes the last build time in packages/*/last_build_unixsec +# Then reads the file and checks if there has been any changes since then +# If so, do a build + +# Exit on errors +set -e + +LAST_BUILD_FILEPATH=.last_build_unixsec + +# Check being run from a package directory +[ ! -d ./src ] && echo "Must be run in a package dir, no src" +[ ! -f ./package.json ] && echo "Must be run in a package dir, no package.json" + +CURRENT_UNIXSEC=$(date +%s) + +if [ -f "$LAST_BUILD_FILEPATH" ]; then + # Exists + LAST_BUILD_UNIXSEC=$(cat $LAST_BUILD_FILEPATH) + SINCE_LAST_BUILD_SEC=$(($CURRENT_UNIXSEC - $LAST_BUILD_UNIXSEC)) + SINCE_LAST_BUILD_MIN=$(($SINCE_LAST_BUILD_SEC / 60 + 1)) + # Only with DEBUG=true, log math + if [ ! -z "$DEBUG" ]; then + echo "LAST_BUILD_UNIXSEC: $LAST_BUILD_UNIXSEC SINCE_LAST_BUILD_SEC: $SINCE_LAST_BUILD_SEC SINCE_LAST_BUILD_MIN: $SINCE_LAST_BUILD_MIN" + fi + + CHANGED_FILES=$(find src package.json -cmin -$SINCE_LAST_BUILD_MIN) + if [ -z "$CHANGED_FILES" ]; then + # Empty, no changes + SHOULD_BUILD=false + else + # Not empty, build + SHOULD_BUILD=true + fi +else + # Does not exist, always build + SHOULD_BUILD=true +fi + +# If there are changes, build +if [ "$SHOULD_BUILD" = true ]; then + # Empty, no changes + npm run build +fi + +# Persist current time after a successful build +echo $CURRENT_UNIXSEC > $LAST_BUILD_FILEPATH + From d769f3037273dc82f48b9a14b63dd94b4e9cf1bf Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Tue, 21 Dec 2021 10:42:22 +0100 Subject: [PATCH 2/2] Remove stale comment --- scripts/build_if_changed.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/build_if_changed.sh b/scripts/build_if_changed.sh index 9becb9075dac..c956d2b1b586 100755 --- a/scripts/build_if_changed.sh +++ b/scripts/build_if_changed.sh @@ -40,7 +40,6 @@ fi # If there are changes, build if [ "$SHOULD_BUILD" = true ]; then - # Empty, no changes npm run build fi