aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
index 95fef27c7e..2de3167e86 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
@@ -800,9 +800,22 @@ public class PackageFunction implements SkyFunction {
packageId, packageLocator);
Preprocessor.Result preprocessingResult = preprocessCache.getIfPresent(packageId);
if (preprocessingResult == null) {
- preprocessingResult = replacementSource == null
- ? packageFactory.preprocess(packageId, buildFilePath, inputSource, globber)
- : Preprocessor.Result.noPreprocessing(replacementSource);
+ try {
+ preprocessingResult =
+ replacementSource == null
+ ? packageFactory.preprocess(packageId, inputSource, globber)
+ : Preprocessor.Result.noPreprocessing(replacementSource);
+ } catch (IOException e) {
+ env
+ .getListener()
+ .handle(
+ Event.error(
+ Location.fromFile(buildFilePath),
+ "preprocessing failed: " + e.getMessage()));
+ throw new PackageFunctionException(
+ new BuildFileContainsErrorsException(packageId, "preprocessing failed", e),
+ Transience.TRANSIENT);
+ }
preprocessCache.put(packageId, preprocessingResult);
}