diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java index 60dbad23e4a219..90ca40c076177f 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java @@ -238,7 +238,14 @@ public void exit(AbruptExitException exception) { CoreOptions configOpts = options.getOptions(CoreOptions.class); if (configOpts != null) { for (Map.Entry entry : configOpts.repositoryEnvironment) { - repoEnv.put(entry.getKey(), entry.getValue()); + String name = entry.getKey(); + String value = entry.getValue(); + if (value == null) { + value = System.getenv(name); + } + if (value != null) { + repoEnv.put(name, value); + } } } } diff --git a/src/test/shell/bazel/starlark_repository_test.sh b/src/test/shell/bazel/starlark_repository_test.sh index 2de65e813b597b..4829da32da583e 100755 --- a/src/test/shell/bazel/starlark_repository_test.sh +++ b/src/test/shell/bazel/starlark_repository_test.sh @@ -889,6 +889,7 @@ EOF cat > .bazelrc </dev/null`/repoenv.txt repoenv4.txt + cp `bazel info bazel-genfiles 3> /dev/null`/unrelated.txt unrelated4.txt + echo; cat repoenv4.txt; echo; cat unrelated4.txt; echo + + grep -q 'FOO=qux' repoenv4.txt \ + || fail "Expected FOO to be visible to repo rules" + diff unrelated1.txt unrelated4.txt \ + || fail "Expected unrelated action to not be rerun" } function test_repo_env_inverse() {