From a3286712a024bac2394756a118dcbbd818ae94ce Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Sat, 3 Jan 2026 13:51:20 +0100 Subject: [PATCH] IJI-3418 build scripts: Bazel: simplify running build targets by extracting common cmd/ps1 scripts GitOrigin-RevId: b6ba24b1038dbba6878df610a919fee6e1528f4b --- build/BUILD.bazel | 3 ++- build/run_build_target.ps1 | 37 ++++++++++++++++++++++++++++++++++ build/run_build_target.sh | 21 +++++++++++++++++++ installers.cmd | 41 +++++++++----------------------------- tests.cmd | 41 +++++++++----------------------------- 5 files changed, 78 insertions(+), 65 deletions(-) create mode 100644 build/run_build_target.ps1 create mode 100755 build/run_build_target.sh diff --git a/build/BUILD.bazel b/build/BUILD.bazel index 1a347d5d88a3..a40c034eecb5 100644 --- a/build/BUILD.bazel +++ b/build/BUILD.bazel @@ -5,8 +5,9 @@ load("//build:intellij_dev_community.bzl", "intellij_dev_binary_community") load("//build:intellij_dev.bzl", "INTELLIJ_ADD_OPENS") load("@jps_dynamic_deps_community//:targets.bzl", "ALL_COMMUNITY_TARGETS") +# Can't name the target 'installers' since it triggers elevation in Windows java_binary( - name = "installers_build_target", + name = "i_build_target", runtime_deps = [":build"], main_class = "OpenSourceCommunityInstallersBuildTarget", add_opens = INTELLIJ_ADD_OPENS, diff --git a/build/run_build_target.ps1 b/build/run_build_target.ps1 new file mode 100644 index 000000000000..684ef14b1048 --- /dev/null +++ b/build/run_build_target.ps1 @@ -0,0 +1,37 @@ +param( + [Parameter(Mandatory = $true, Position = 0)] + [string]$root, + + [Parameter(Mandatory = $true, Position = 1)] + [string]$build_target, + + [Parameter(ValueFromRemainingArguments = $true)] + [string[]]$rest +) + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' +$ProgressPreference = 'SilentlyContinue' + +# See how Bazel java wrapper works +# Here we pass arguments to it in the following way: +# - "--debug" becomes "--debug" +# - everything else becomes "--jvm-arg=" +$ARGS = @() +foreach ($arg in $rest) { + if ($arg -eq '--debug') { + $ARGS += '--debug' + } else { + $ARGS += "--jvm-arg=$arg" + } +} + +Push-Location $root +try { + & (Join-Path $root 'bazel.cmd') run $build_target -- @ARGS + $exitCode = $LASTEXITCODE +} finally { + Pop-Location +} + +exit $exitCode diff --git a/build/run_build_target.sh b/build/run_build_target.sh new file mode 100755 index 000000000000..de8a48fae4ce --- /dev/null +++ b/build/run_build_target.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -eu -o pipefail + +root="$1" +build_target_name="$2" +shift +shift + +# See java_stub_template.txt on how bazel java wrapper works +args=() +for arg in "$@"; do + if [ "$arg" == "--debug" ]; then + args+=("--debug") + else + args+=("--jvm_flag=$arg") + fi +done + +cd "$root" +exec /bin/bash "$root/bazel.cmd" run "$build_target_name" -- "${args[@]}" diff --git a/installers.cmd b/installers.cmd index c42b927ccf1b..8a91a3266f6e 100755 --- a/installers.cmd +++ b/installers.cmd @@ -15,39 +15,16 @@ GOTO :CMDSCRIPT set -eu root="$(cd "$(dirname "$0")"; pwd)" -cd "$root" - -# See java_stub_template.txt for available arguments -args=() -for arg in "$@"; do - if [ "$arg" == "--debug" ]; then - args+=("--debug") - else - args+=("--jvm_flag=$arg") - fi -done - -exec /bin/bash "$root/bazel.cmd" run @community//build:installers_build_target -- "${args[@]}" +exec "$root/build/run_build_target.sh" "$root" //build:i_build_target "$@" :CMDSCRIPT -setlocal enabledelayedexpansion +set "ROOT=%~dp0" +set "ROOT=%ROOT:~0,-1%" -set "ARGS=" -:loop -if "%~1"=="" goto run -if "%~1"=="--debug" ( - set "ARGS=!ARGS! "--debug"" -) else ( - set "ARGS=!ARGS! "--jvm-arg=%~1"" -) -shift -goto loop - -:run - -pushd "%~dp0" -call "%~dp0\bazel.cmd" run @community//build:installers_build_target -- %ARGS% -set _exit_code=%ERRORLEVEL% -popd -EXIT /B %_exit_code% +"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" ^ + -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass ^ + -File "%~dp0build\run_build_target.ps1" ^ + "%ROOT%" ^ + "@community//build:i_build_target" ^ + %* diff --git a/tests.cmd b/tests.cmd index 3ea467b1f4dd..9a6f63f3acc1 100755 --- a/tests.cmd +++ b/tests.cmd @@ -14,41 +14,18 @@ GOTO :CMDSCRIPT # To debug tests use: -Dintellij.build.test.debug.suspend=true -Dintellij.build.test.debug.port=5005 set -eu - root="$(cd "$(dirname "$0")"; pwd)" -cd "$root" -# See java_stub_template.txt for available arguments -args=() -for arg in "$@"; do - if [ "$arg" == "--debug" ]; then - args+=("--debug") - else - args+=("--jvm_flag=$arg") - fi -done - -exec /bin/bash "$root/bazel.cmd" run @community//build:run_tests_build_target -- "${args[@]}" +exec "$root/build/run_build_target.sh" "$root" //build:run_tests_build_target "$@" :CMDSCRIPT -setlocal enabledelayedexpansion +set "ROOT=%~dp0" +set "ROOT=%ROOT:~0,-1%" -set "ARGS=" -:loop -if "%~1"=="" goto run -if "%~1"=="--debug" ( - set "ARGS=!ARGS! "--debug"" -) else ( - set "ARGS=!ARGS! "--jvm-arg=%~1"" -) -shift -goto loop - -:run - -pushd "%~dp0" -call "%~dp0\bazel.cmd" run @community//build:run_tests_build_target -- %ARGS% -set _exit_code=%ERRORLEVEL% -popd -EXIT /B %_exit_code% +"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" ^ + -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass ^ + -File "%~dp0build\run_build_target.ps1" ^ + "%ROOT%" ^ + "@community//build:run_tests_build_target" ^ + %*