From 1993109475e39e62e9c2fd5d3f71293cad71ccf6 Mon Sep 17 00:00:00 2001 From: Ashesh Vashi Date: Thu, 23 Jul 2026 07:36:29 +0000 Subject: [PATCH] fix: pin Yarn version from packageManager field in remaining build scripts (#10175) #10156 fixed CI build failures caused by Yarn 4.x fetching a newer patch with different builtin compat hashes, breaking --immutable lockfile validation, but only patched pkg/linux/build-functions.sh and the GHA workflows. Make.bat, pkg/mac/build-functions.sh, pkg/pip/build.sh, and Dockerfile still hardcoded 'yarn set version 4', which is what broke the Windows Jenkins snapshot build (job 1669). --- Dockerfile | 2 +- Make.bat | 16 ++++++++++++++-- pkg/mac/build-functions.sh | 14 ++++++++++++-- pkg/pip/build.sh | 7 ++++++- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index e88e92a8b..e6d7ecc92 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,7 +43,7 @@ RUN --mount=type=bind,source=.git,target=/pgadmin4/.git \ npm install -g corepack && \ corepack enable && \ yarn set version berry && \ - yarn set version 4 && \ + yarn set version "$(node -p "require('./package.json').packageManager.split('@')[1]")" && \ yarn install && \ yarn run bundle && \ rm -rf yarn.lock \ diff --git a/Make.bat b/Make.bat index e00d8b4db..8d594404e 100644 --- a/Make.bat +++ b/Make.bat @@ -221,8 +221,14 @@ REM Main build sequence Ends ECHO Installing javascript dependencies... CD "%BUILDROOT%\web" + SET "YARN_VERSION=" + FOR /f "delims=" %%v IN ('node -p "require('./package.json').packageManager.split('@')[1]"') DO SET "YARN_VERSION=%%v" + IF "%YARN_VERSION%"=="" ( + ECHO ERROR: Could not determine Yarn version from package.json packageManager field. + EXIT /B 1 + ) CALL yarn set version berry || EXIT /B 1 - CALL yarn set version 4 || EXIT /B 1 + CALL yarn set version %YARN_VERSION% || EXIT /B 1 CALL yarn install || EXIT /B 1 CALL npm rebuild || EXIT /B 1 @@ -276,8 +282,14 @@ REM Main build sequence Ends CD "%BUILDROOT%\runtime\resources\app\" + SET "YARN_VERSION=" + FOR /f "delims=" %%v IN ('node -p "require('./package.json').packageManager.split('@')[1]"') DO SET "YARN_VERSION=%%v" + IF "%YARN_VERSION%"=="" ( + ECHO ERROR: Could not determine Yarn version from package.json packageManager field. + EXIT /B 1 + ) CALL yarn set version berry || EXIT /B 1 - CALL yarn set version 4 || EXIT /B 1 + CALL yarn set version %YARN_VERSION% || EXIT /B 1 CALL yarn workspaces focus --production || EXIT /B 1 ECHO Removing yarn cache... diff --git a/pkg/mac/build-functions.sh b/pkg/mac/build-functions.sh index b45b9dc38..22773aa60 100644 --- a/pkg/mac/build-functions.sh +++ b/pkg/mac/build-functions.sh @@ -66,8 +66,13 @@ _build_runtime() { # Install the runtime node_modules, then replace the package.json pushd "${BUNDLE_DIR}/Contents/Resources/app/" > /dev/null || exit + YARN_VERSION=$(node -p "require('./package.json').packageManager.split('@')[1]") + if [ -z "${YARN_VERSION}" ]; then + echo "ERROR: Could not determine Yarn version from package.json packageManager field." + exit 1 + fi yarn set version berry - yarn set version 4 + yarn set version "${YARN_VERSION}" yarn workspaces focus --production # remove the yarn cache @@ -298,8 +303,13 @@ _complete_bundle() { # Build node modules pushd "${SOURCE_DIR}/web" > /dev/null || exit + YARN_VERSION=$(node -p "require('./package.json').packageManager.split('@')[1]") + if [ -z "${YARN_VERSION}" ]; then + echo "ERROR: Could not determine Yarn version from package.json packageManager field." + exit 1 + fi yarn set version berry - yarn set version 4 + yarn set version "${YARN_VERSION}" yarn install 2>&1 # Record the source commit hash before the heavy lint/webpack diff --git a/pkg/pip/build.sh b/pkg/pip/build.sh index ae64521ec..a5623dea0 100755 --- a/pkg/pip/build.sh +++ b/pkg/pip/build.sh @@ -56,8 +56,13 @@ do tar cf - "${FILE}" | (cd ../pip-build/pgadmin4; tar xf -) done +YARN_VERSION=$(node -p "require('./package.json').packageManager.split('@')[1]") +if [ -z "${YARN_VERSION}" ]; then + echo "ERROR: Could not determine Yarn version from package.json packageManager field." + exit 1 +fi yarn set version berry -yarn set version 4 +yarn set version "${YARN_VERSION}" yarn install yarn run bundle