diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java index 8c9af364ce..ce6b1f5c0d 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java @@ -39,6 +39,7 @@ import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.OutputFilter; import com.google.devtools.build.lib.flags.CommandNameCache; import com.google.devtools.build.lib.packages.AttributeContainer; +import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.packages.Preprocessor; import com.google.devtools.build.lib.packages.RuleClass; @@ -1260,13 +1261,27 @@ public final class BlazeRuntime { extensions.add(module.getPackageEnvironmentExtension()); } + Package.Builder.Helper packageBuilderHelper = null; + for (BlazeModule module : blazeModules) { + Package.Builder.Helper candidateHelper = module.getPackageBuilderHelper(); + if (candidateHelper != null) { + Preconditions.checkState(packageBuilderHelper == null, + "more than one module defines a package builder helper"); + packageBuilderHelper = candidateHelper; + } + } + if (packageBuilderHelper == null) { + packageBuilderHelper = Package.Builder.DefaultHelper.INSTANCE; + } + PackageFactory packageFactory = new PackageFactory( ruleClassProvider, platformRegexps, attributeContainerFactory, extensions, - BlazeVersionInfo.instance().getVersion()); + BlazeVersionInfo.instance().getVersion(), + packageBuilderHelper); if (configurationFactory == null) { configurationFactory = new ConfigurationFactory( |