Execute Gradle in parent context in Windows scripts #29067
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
Windows script
gradlew.bat
executes Gradle within its own, batch context. This causes every locally declared variable to be visible to underlyingjava
process, potentially leaking information about used options and classpath.To mitigate this, we jump to a non-existent label, forcing
cmd.exe
to stop processing the script, yet run the remaining commands within the current line in parent (most likely command-line when invokinggradlew
directly) context. This introduces a harmless side-effect in form of corrupting the current title of the windowcmd.exe
was invoked in, thus it is reset to the default value.This provides a few side benefits:
call
andcall
are used to directly set exit code, resolving Fix for Batch scripts not properly signalling a failure in a pipeline #4784cmd.exe
scripts become synchronized in terms of mechanism used to execute JVM as well as environment sanitizationIssue: #10463
Contributor Checklist
<subproject>/src/integTest
) to verify changes from a user perspective.<subproject>/src/test
) to verify logic../gradlew sanityCheck
../gradlew <changed-subproject>:quickTest
.Reviewing cheatsheet
Before merging the PR, comments starting with