From 6ff52dc457898c1e884d8be7a05a3ffc3fb9845d Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Thu, 7 Nov 2024 02:58:49 -0800 Subject: [PATCH] Let repo rules remove env vars for subprocesses RELNOTES: `repository_ctx.execute` can now remove an environment variable when executing a process by associating it with the value `None` in the `environment` argument. Closes #24221. PiperOrigin-RevId: 694048622 Change-Id: Ia779e9133411745c9cfe93845c13839d05731c7c --- .../starlark/StarlarkBaseExternalContext.java | 33 +++++++++++++--- .../starlark/StarlarkExecutionResult.java | 8 ++++ src/test/shell/bazel/BUILD | 1 + .../shell/bazel/starlark_repository_test.sh | 38 +++++++++++++++++++ 4 files changed, 75 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkBaseExternalContext.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkBaseExternalContext.java index 8902fe24254db4..e34f582b977402 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkBaseExternalContext.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkBaseExternalContext.java @@ -84,9 +84,12 @@ import java.util.Base64; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -1835,7 +1838,11 @@ private static String profileArgsDesc(String method, List args) { name = "environment", defaultValue = "{}", named = true, - doc = "Force some environment variables to be set to be passed to the process."), + doc = + """ + Force some environment variables to be set to be passed to the process. The value \ + can be None to remove the environment variable. + """), @Param( name = "quiet", defaultValue = "True", @@ -1855,7 +1862,7 @@ private static String profileArgsDesc(String method, List args) { public StarlarkExecutionResult execute( Sequence arguments, // or or