aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Damien Martin-Guillerez <dmarting@google.com>2017-03-06 18:41:14 +0000
committerGravatar Vladimir Moskva <vladmos@google.com>2017-03-07 10:47:03 +0000
commite8d1177eef9a9798d2b971630b8cea59471eec33 (patch)
tree745cd6c846a411053315ac80dd7d682a29ccd5e7
parentddcfc61a2dff9cdf2ea03ffa4dc3707aafb28b0e (diff)
Correctly returns null if an environment variables is missing
The hard part is to test this one as we haven't even been able to reproduce. Maybe we should just fuzz Skyframe function for null values. Fixes #2621. To cherry-pick for 0.4.5 (#2472) -- Change-Id: Ida489fb8dbd659b42a8d2bebff58d49ffeaf72c3 Reviewed-on: https://cr.bazel.build/9213 PiperOrigin-RevId: 149316508 MOS_MIGRATED_REVID=149316508
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java10
2 files changed, 14 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
index b3fd9279d9..bf0818b776 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
@@ -96,14 +96,18 @@ public class AndroidNdkRepositoryFunction extends RepositoryFunction {
public RepositoryDirectoryValue.Builder fetch(Rule rule, Path outputDirectory,
BlazeDirectories directories, Environment env, Map<String, String> markerData)
throws InterruptedException, RepositoryFunctionException {
- declareEnvironmentDependencies(markerData, env, PATH_ENV_VAR_AS_LIST);
+ Map<String, String> environ =
+ declareEnvironmentDependencies(markerData, env, PATH_ENV_VAR_AS_LIST);
+ if (environ == null) {
+ return null;
+ }
prepareLocalRepositorySymlinkTree(rule, outputDirectory);
WorkspaceAttributeMapper attributes = WorkspaceAttributeMapper.of(rule);
PathFragment pathFragment;
if (attributes.isAttributeValueExplicitlySpecified("path")) {
pathFragment = getTargetPath(rule, directories.getWorkspace());
- } else if (clientEnvironment.containsKey(PATH_ENV_VAR)) {
- pathFragment = getAndroidNdkHomeEnvironmentVar(directories.getWorkspace(), clientEnvironment);
+ } else if (environ.containsKey(PATH_ENV_VAR)) {
+ pathFragment = getAndroidNdkHomeEnvironmentVar(directories.getWorkspace(), environ);
} else {
throw new RepositoryFunctionException(
new EvalException(
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
index 7a4968dae3..fb407e3040 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
@@ -82,16 +82,20 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction {
public RepositoryDirectoryValue.Builder fetch(Rule rule, Path outputDirectory,
BlazeDirectories directories, Environment env, Map<String, String> markerData)
throws SkyFunctionException, InterruptedException {
- declareEnvironmentDependencies(markerData, env, PATH_ENV_VAR_AS_LIST);
+ Map<String, String> environ =
+ declareEnvironmentDependencies(markerData, env, PATH_ENV_VAR_AS_LIST);
+ if (environ == null) {
+ return null;
+ }
prepareLocalRepositorySymlinkTree(rule, outputDirectory);
WorkspaceAttributeMapper attributes = WorkspaceAttributeMapper.of(rule);
FileSystem fs = directories.getOutputBase().getFileSystem();
Path androidSdkPath;
if (attributes.isAttributeValueExplicitlySpecified("path")) {
androidSdkPath = fs.getPath(getTargetPath(rule, directories.getWorkspace()));
- } else if (clientEnvironment.containsKey(PATH_ENV_VAR)){
+ } else if (environ.containsKey(PATH_ENV_VAR)){
androidSdkPath =
- fs.getPath(getAndroidHomeEnvironmentVar(directories.getWorkspace(), clientEnvironment));
+ fs.getPath(getAndroidHomeEnvironmentVar(directories.getWorkspace(), environ));
} else {
throw new RepositoryFunctionException(
new EvalException(