diff options
author | Damien Martin-Guillerez <dmarting@google.com> | 2017-03-06 18:41:14 +0000 |
---|---|---|
committer | Vladimir Moskva <vladmos@google.com> | 2017-03-07 10:47:03 +0000 |
commit | e8d1177eef9a9798d2b971630b8cea59471eec33 (patch) | |
tree | 745cd6c846a411053315ac80dd7d682a29ccd5e7 /src | |
parent | ddcfc61a2dff9cdf2ea03ffa4dc3707aafb28b0e (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
Diffstat (limited to 'src')
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( |