diff options
3 files changed, 10 insertions, 80 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java index b8b8adc177..cd832a91bb 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java @@ -333,7 +333,6 @@ public final class PackageFactory { private final RuleClassProvider ruleClassProvider; private AtomicReference<? extends UnixGlob.FilesystemCalls> syscalls; - private Preprocessor.Factory preprocessorFactory = Preprocessor.Factory.NullFactory.INSTANCE; private final ThreadPoolExecutor threadPool; private Map<String, String> platformSetRegexps; @@ -413,13 +412,6 @@ public final class PackageFactory { this.packageBuilderHelper = packageBuilderHelper; } - /** - * Sets the preprocessor used. - */ - public void setPreprocessorFactory(Preprocessor.Factory preprocessorFactory) { - this.preprocessorFactory = preprocessorFactory; - } - /** * Sets the syscalls cache used in globbing. */ @@ -1344,7 +1336,6 @@ public final class PackageFactory { prefetchGlobs( packageId, astAfterPreprocessing.ast, - false /* waspreprocessed */, buildFile, globber, defaultVisibility, @@ -1416,14 +1407,8 @@ public final class PackageFactory { } Globber globber = createLegacyGlobber(buildFile.getParentDirectory(), packageId, locator); - Preprocessor.Result preprocessingResult; - try { - preprocessingResult = preprocess(buildFile, packageId, buildFileBytes, globber); - } catch (IOException e) { - eventHandler.handle( - Event.error(Location.fromFile(buildFile), "preprocessing failed: " + e.getMessage())); - throw new BuildFileContainsErrorsException(packageId, "preprocessing failed", e); - } + Preprocessor.Result preprocessingResult = + Preprocessor.Result.noPreprocessing(buildFile.asFragment(), buildFileBytes); Package result = createPackageFromPreprocessingResult( @@ -1441,44 +1426,6 @@ public final class PackageFactory { return result; } - /** Preprocesses the given BUILD file. */ - public Preprocessor.Result preprocess( - PackageIdentifier packageId, Path buildFile, CachingPackageLocator locator) - throws InterruptedException, IOException { - byte[] buildFileBytes = - FileSystemUtils.readWithKnownFileSize(buildFile, buildFile.getFileSize()); - Globber globber = createLegacyGlobber(buildFile.getParentDirectory(), packageId, locator); - try { - return preprocess(buildFile, packageId, buildFileBytes, globber); - } finally { - globber.onCompletion(); - } - } - - /** - * Preprocesses the given BUILD file, executing {@code globber.onInterrupt()} on an - * {@link InterruptedException}. - */ - public Preprocessor.Result preprocess( - Path buildFilePath, PackageIdentifier packageId, byte[] buildFileBytes, - Globber globber) throws InterruptedException, IOException { - Preprocessor preprocessor = preprocessorFactory.getPreprocessor(); - if (preprocessor == null) { - return Preprocessor.Result.noPreprocessing(buildFilePath.asFragment(), buildFileBytes); - } - try { - return preprocessor.preprocess( - buildFilePath, - buildFileBytes, - packageId.toString(), - globber, - ruleFactory.getRuleClassNames()); - } catch (InterruptedException e) { - globber.onInterrupt(); - throw e; - } - } - /** Returns a new {@link LegacyGlobber}. */ public LegacyGlobber createLegacyGlobber( Path packageDirectory, @@ -1638,9 +1585,9 @@ public final class PackageFactory { pkgEnv .setup("native", nativeModule) .setup("distribs", newDistribsFunction.apply(context)) - .setup("glob", newGlobFunction.apply(context, /*async=*/false)) - .setup("mocksubinclude", newMockSubincludeFunction.apply(context)) + .setup("glob", newGlobFunction.apply(context, /*async=*/ false)) .setup("licenses", newLicensesFunction.apply(context)) + .setup("mocksubinclude", newMockSubincludeFunction.apply(context)) .setup("exports_files", newExportsFilesFunction.apply()) .setup("package_group", newPackageGroupFunction.apply()) .setup("package", newPackageFunction(packageArguments)) @@ -1768,19 +1715,12 @@ public final class PackageFactory { private void prefetchGlobs( PackageIdentifier packageId, BuildFileAST buildFileAST, - boolean wasPreprocessed, Path buildFilePath, Globber globber, RuleVisibility defaultVisibility, MakeEnvironment.Builder pkgMakeEnv, Map<String, Extension> imports) throws InterruptedException { - if (wasPreprocessed && preprocessorFactory.considersGlobs()) { - // All the globs have either already been evaluated and they aren't in the ast anymore, or - // they are in the ast but the globber has been evaluating them lazily and so there is no - // point in prefetching them again. - return; - } // TODO(bazel-team): It may be wasteful to evaluate the BUILD file here, only to throw away the // result. It may be better to first scan the ast and see if there are even possibly any globs // at all. Additionally, it's wasteful to execute Skylark code that cannot invoke globs. So one 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 23ecccec99..115c343f22 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 @@ -1151,14 +1151,8 @@ public class PackageFunction implements SkyFunction { throw new PackageFunctionException(new BuildFileContainsErrorsException( packageId, e.getMessage()), Transience.TRANSIENT); } - try { - preprocessingResult = packageFactory.preprocess(buildFilePath, packageId, - buildFileBytes, skyframeGlobber); - } catch (IOException e) { - throw new PackageFunctionException( - new BuildFileContainsErrorsException( - packageId, "preprocessing failed" + e.getMessage(), e), Transience.TRANSIENT); - } + preprocessingResult = + Preprocessor.Result.noPreprocessing(buildFilePath.asFragment(), buildFileBytes); } else { ParserInputSource replacementSource = ParserInputSource.create(replacementContents, buildFilePath.asFragment()); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index b5bda26ca8..182a14a215 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -1014,16 +1014,12 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { private void checkPreprocessorFactory() { if (preprocessorFactory == null) { - Preprocessor.Factory newPreprocessorFactory = preprocessorFactorySupplier.getFactory( - packageManager, directories.getOutputBase()); - pkgFactory.setPreprocessorFactory(newPreprocessorFactory); - preprocessorFactory = newPreprocessorFactory; + preprocessorFactory = + preprocessorFactorySupplier.getFactory(packageManager, directories.getOutputBase()); } else if (!preprocessorFactory.isStillValid()) { - Preprocessor.Factory newPreprocessorFactory = preprocessorFactorySupplier.getFactory( - packageManager, directories.getOutputBase()); + preprocessorFactory = + preprocessorFactorySupplier.getFactory(packageManager, directories.getOutputBase()); invalidate(SkyFunctionName.functionIs(SkyFunctions.PACKAGE)); - pkgFactory.setPreprocessorFactory(newPreprocessorFactory); - preprocessorFactory = newPreprocessorFactory; } } |