diff options
22 files changed, 56 insertions, 92 deletions
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh index cbfb2462bb..03880a2679 100755 --- a/scripts/bootstrap/compile.sh +++ b/scripts/bootstrap/compile.sh @@ -295,7 +295,6 @@ function build_jni() { build_jni "${ARCHIVE_DIR}/_embedded_binaries" -cp src/main/tools/build_interface_so ${ARCHIVE_DIR}/_embedded_binaries/build_interface_so cp src/main/tools/jdk.BUILD ${ARCHIVE_DIR}/_embedded_binaries/jdk.BUILD cp $OUTPUT_DIR/libblaze.jar ${ARCHIVE_DIR} @@ -28,7 +28,6 @@ filegroup( "//src/main/tools:build-runfiles", "//src/main/tools:process-wrapper", "//src/main/tools:linux-sandbox", - "//src/main/tools:build_interface_so", "//tools/osx:xcode-locator", ] + embedded_tools, outs = ["install_base_key" + suffix], @@ -190,7 +189,6 @@ genrule( "//src/main/tools:process-wrapper", "//src/main/tools:jdk-support", "//src/main/tools:linux-sandbox", - "//src/main/tools:build_interface_so", "//tools/osx:xcode-locator", ":java-version", ], diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java index 9f9a655069..3c02666474 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java @@ -91,11 +91,6 @@ public interface AnalysisEnvironment extends ActionRegistry { Artifact getFilesetArtifact(PathFragment rootRelativePath, Root root); /** - * Returns the artifact for the specified tool. - */ - Artifact getEmbeddedToolArtifact(String embeddedPath); - - /** * Returns the middleman factory associated with the build. */ // TODO(bazel-team): remove this method and replace it with delegate methods. diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java index 10a9216ae5..1f12d2cc0b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java @@ -35,7 +35,6 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactFactory; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.Root; -import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; import com.google.devtools.build.lib.analysis.config.BuildOptions; @@ -1083,14 +1082,14 @@ public class BuildView { @VisibleForTesting public RuleContext getRuleContextForTesting( ConfiguredTarget target, StoredEventHandler eventHandler, - BuildConfigurationCollection configurations, BinTools binTools) + BuildConfigurationCollection configurations) throws EvalException, InvalidConfigurationException, InterruptedException { BuildConfiguration targetConfig = target.getConfiguration(); CachingAnalysisEnvironment env = new CachingAnalysisEnvironment(getArtifactFactory(), new ConfiguredTargetKey(target.getLabel(), targetConfig), /*isSystemEnv=*/false, targetConfig.extendedSanityChecks(), eventHandler, - /*skyframeEnv=*/null, targetConfig.isActionsEnabled(), binTools); + /*skyframeEnv=*/null, targetConfig.isActionsEnabled()); return getRuleContextForTesting(eventHandler, target, env, configurations); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java index 5aed23d0f9..7a768c94ca 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java @@ -26,7 +26,6 @@ import com.google.devtools.build.lib.actions.Root; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.StoredEventHandler; @@ -82,7 +81,6 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { private EventHandler errorEventListener; private SkyFunction.Environment skyframeEnv; private Map<Artifact, String> artifacts; - private final BinTools binTools; /** * The list of actions registered by the configured target this analysis environment is @@ -92,8 +90,8 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { public CachingAnalysisEnvironment(ArtifactFactory artifactFactory, ArtifactOwner owner, boolean isSystemEnv, boolean extendedSanityChecks, - EventHandler errorEventListener, SkyFunction.Environment env, boolean allowRegisteringActions, - BinTools binTools) { + EventHandler errorEventListener, SkyFunction.Environment env, + boolean allowRegisteringActions) { this.artifactFactory = artifactFactory; this.owner = Preconditions.checkNotNull(owner); this.isSystemEnv = isSystemEnv; @@ -101,7 +99,6 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { this.errorEventListener = errorEventListener; this.skyframeEnv = env; this.allowRegisteringActions = allowRegisteringActions; - this.binTools = Preconditions.checkNotNull(binTools); middlemanFactory = new MiddlemanFactory(artifactFactory, this); artifacts = new HashMap<>(); } @@ -250,12 +247,6 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { } @Override - public Artifact getEmbeddedToolArtifact(String embeddedPath) { - Preconditions.checkState(enabled); - return binTools.getEmbeddedArtifact(embeddedPath, artifactFactory); - } - - @Override public void registerAction(ActionAnalysisMetadata... actions) { Preconditions.checkState(enabled); if (allowRegisteringActions) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java index 16408d17ab..5ff16981f1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java @@ -199,8 +199,6 @@ public class CcToolchain implements RuleConfiguredTargetFactory { "FDO_DIR", cppConfiguration.getFdoInstrument().getPathString())); } - Artifact linkDynamicLibraryTool = getLinkDynamicLibraryTool(ruleContext); - CcToolchainProvider provider = new CcToolchainProvider( cppConfiguration, @@ -210,6 +208,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory { strip, objcopy, fullInputsForLink(ruleContext, link), + ruleContext.getPrerequisiteArtifact("$interface_library_builder", Mode.HOST), dwp, libcLink, staticRuntimeLinkInputs, @@ -223,7 +222,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory { getBuildVariables(ruleContext), getBuiltinIncludes(ruleContext), coverageEnvironment.build(), - linkDynamicLibraryTool, + ruleContext.getPrerequisiteArtifact("$link_dynamic_library_tool", Mode.HOST), getEnvironment(ruleContext)); RuleConfiguredTargetBuilder builder = new RuleConfiguredTargetBuilder(ruleContext) @@ -269,10 +268,6 @@ public class CcToolchain implements RuleConfiguredTargetFactory { return builder.build(); } - private Artifact getLinkDynamicLibraryTool(RuleContext ruleContext) { - return ruleContext.getPrerequisiteArtifact("$link_dynamic_library_tool", Mode.TARGET); - } - private ImmutableList<Artifact> getBuiltinIncludes(RuleContext ruleContext) { ImmutableList.Builder<Artifact> result = ImmutableList.builder(); for (Artifact artifact : inputsForLibc(ruleContext)) { @@ -308,11 +303,8 @@ public class CcToolchain implements RuleConfiguredTargetFactory { return NestedSetBuilder.<Artifact>stableOrder() .addTransitive(link) .addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top")) - .add(getLinkDynamicLibraryTool(ruleContext)) - .add( - ruleContext - .getAnalysisEnvironment() - .getEmbeddedToolArtifact(CppRuleClasses.BUILD_INTERFACE_SO)) + .add(ruleContext.getPrerequisiteArtifact("$interface_library_builder", Mode.HOST)) + .add(ruleContext.getPrerequisiteArtifact("$link_dynamic_library_tool", Mode.HOST)) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java index 4145ebdede..8f2f7679fa 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java @@ -43,6 +43,7 @@ public final class CcToolchainProvider implements TransitiveInfoProvider { NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), + null, NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), @@ -66,6 +67,7 @@ public final class CcToolchainProvider implements TransitiveInfoProvider { private final NestedSet<Artifact> strip; private final NestedSet<Artifact> objCopy; private final NestedSet<Artifact> link; + private final Artifact interfaceSoBuilder; private final NestedSet<Artifact> dwp; private final NestedSet<Artifact> libcLink; private final NestedSet<Artifact> staticRuntimeLinkInputs; @@ -90,6 +92,7 @@ public final class CcToolchainProvider implements TransitiveInfoProvider { NestedSet<Artifact> strip, NestedSet<Artifact> objCopy, NestedSet<Artifact> link, + Artifact interfaceSoBuilder, NestedSet<Artifact> dwp, NestedSet<Artifact> libcLink, NestedSet<Artifact> staticRuntimeLinkInputs, @@ -112,6 +115,7 @@ public final class CcToolchainProvider implements TransitiveInfoProvider { this.strip = Preconditions.checkNotNull(strip); this.objCopy = Preconditions.checkNotNull(objCopy); this.link = Preconditions.checkNotNull(link); + this.interfaceSoBuilder = interfaceSoBuilder; this.dwp = Preconditions.checkNotNull(dwp); this.libcLink = Preconditions.checkNotNull(libcLink); this.staticRuntimeLinkInputs = Preconditions.checkNotNull(staticRuntimeLinkInputs); @@ -291,4 +295,11 @@ public final class CcToolchainProvider implements TransitiveInfoProvider { public Artifact getLinkDynamicLibraryTool() { return linkDynamicLibraryTool; } + + /** + * Returns the tool that builds interface libraries from dynamic libraries. + */ + public Artifact getInterfaceSoBuilder() { + return interfaceSoBuilder; + } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java index 786add8315..877865d9f4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java @@ -76,7 +76,14 @@ public final class CcToolchainRule implements RuleDefinition { .add(attr("supports_param_files", BOOLEAN).value(true)) .add(attr("supports_header_parsing", BOOLEAN).value(false)) .add( + attr("$interface_library_builder", LABEL) + .cfg(HOST) + .singleArtifact() + .value(env.getToolsLabel("//tools/cpp:interface_library_builder"))) + .add( attr("$link_dynamic_library_tool", LABEL) + .cfg(HOST) + .singleArtifact() .value(env.getToolsLabel("//tools/cpp:link_dynamic_library"))) // TODO(bazel-team): Should be using the TARGET configuration. .add(attr(":libc_top", LABEL).cfg(HOST).value(LIBC_TOP)) diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java index 9441fbe6fd..1db3f3af5e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java @@ -1281,8 +1281,9 @@ public class CppConfiguration extends BuildConfiguration.Fragment { } /** - * Returns whether build_interface_so can build interface shared objects for this toolchain. - * Should be true if this toolchain generates ELF objects. + * Returns whether this toolchain supports interface shared objects. + * + * <p>Should be true if this toolchain generates ELF objects. */ public boolean supportsInterfaceSharedObjects() { return supportsInterfaceSharedObjects; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java index d1fed5de30..3e0b716b58 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java @@ -188,7 +188,7 @@ public class CppLinkActionBuilder { * @param ruleContext the rule that owns the action * @param output the output artifact * @param toolchain the C++ toolchain provider - * @param the C++ FDO optimization support + * @param fdoSupport the C++ FDO optimization support */ public CppLinkActionBuilder(RuleContext ruleContext, Artifact output, CcToolchainProvider toolchain, FdoSupport fdoSupport) { @@ -208,7 +208,7 @@ public class CppLinkActionBuilder { * @param output the output artifact * @param configuration build configuration * @param toolchain C++ toolchain provider - * @param the C++ FDO optimization support + * @param fdoSupport the C++ FDO optimization support */ public CppLinkActionBuilder( RuleContext ruleContext, @@ -228,7 +228,7 @@ public class CppLinkActionBuilder { * @param configuration the configuration used to determine the tool chain and the default link * options * @param toolchain the C++ toolchain provider - * @param the C++ FDO optimization support + * @param fdoSupport the C++ FDO optimization support */ private CppLinkActionBuilder( @Nullable RuleContext ruleContext, @@ -258,7 +258,7 @@ public class CppLinkActionBuilder { * @param linkContext an immutable CppLinkAction.Context from the original builder * @param configuration build configuration * @param toolchain the C++ toolchain provider - * @param the C++ FDO optimization support + * @param fdoSupport the C++ FDO optimization support */ public CppLinkActionBuilder( RuleContext ruleContext, @@ -362,10 +362,6 @@ public class CppLinkActionBuilder { return this.linkstampOptions; } - protected Artifact getInterfaceSoBuilder() { - return analysisEnvironment.getEmbeddedToolArtifact(CppRuleClasses.BUILD_INTERFACE_SO); - } - /** * Returns command line options for this link action. */ @@ -627,7 +623,7 @@ public class CppLinkActionBuilder { paramFile, thinltoParamFile, PathFragment.EMPTY_FRAGMENT, - getInterfaceSoBuilder(), + toolchain.getInterfaceSoBuilder(), interfaceOutput); variablesExtension.addVariables(buildVariablesBuilder); for (VariablesExtension extraVariablesExtension : variablesExtensions) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java index bb22ec2036..9ad6ba3fa1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java @@ -125,11 +125,6 @@ public class CppRuleClasses { /** - * Path of the build_interface_so script in the Blaze binary. - */ - public static final String BUILD_INTERFACE_SO = "build_interface_so"; - - /** * A string constant for the parse_headers feature. */ public static final String PARSE_HEADERS = "parse_headers"; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java index c84cf2726a..0e2c828d82 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java @@ -40,7 +40,6 @@ import com.google.devtools.build.lib.analysis.LabelAndConfiguration; import com.google.devtools.build.lib.analysis.ViewCreationFailedException; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; @@ -91,7 +90,6 @@ public final class SkyframeBuildView { private final ConfiguredTargetFactory factory; private final ArtifactFactory artifactFactory; private final SkyframeExecutor skyframeExecutor; - private final BinTools binTools; private boolean enableAnalysis = false; // This hack allows us to see when a configured target has been invalidated, and thus when the set @@ -126,13 +124,11 @@ public final class SkyframeBuildView { private boolean skyframeAnalysisWasDiscarded; public SkyframeBuildView(BlazeDirectories directories, - SkyframeExecutor skyframeExecutor, BinTools binTools, - ConfiguredRuleClassProvider ruleClassProvider) { + SkyframeExecutor skyframeExecutor, ConfiguredRuleClassProvider ruleClassProvider) { this.factory = new ConfiguredTargetFactory(ruleClassProvider); this.artifactFactory = new ArtifactFactory( directories.getExecRoot().getParentDirectory(), directories.getRelativeOutputPath()); this.skyframeExecutor = skyframeExecutor; - this.binTools = binTools; this.ruleClassProvider = ruleClassProvider; } @@ -468,7 +464,7 @@ public final class SkyframeBuildView { boolean allowRegisteringActions = config == null || config.isActionsEnabled(); return new CachingAnalysisEnvironment( artifactFactory, owner, isSystemEnv, extendedSanityChecks, eventHandler, env, - allowRegisteringActions, binTools); + allowRegisteringActions); } /** 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 e587f8f135..1a04d15b8c 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 @@ -331,7 +331,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { this.skyframeBuildView = new SkyframeBuildView( directories, this, - binTools, (ConfiguredRuleClassProvider) ruleClassProvider); this.artifactFactory.set(skyframeBuildView.getArtifactFactory()); this.externalFilesHelper = new ExternalFilesHelper( diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD index 7f26b3e773..c7219ae45e 100644 --- a/src/test/java/com/google/devtools/build/lib/BUILD +++ b/src/test/java/com/google/devtools/build/lib/BUILD @@ -49,7 +49,6 @@ filegroup( testonly = 1, data = [ "//src/main/tools:build-runfiles", - "//src/main/tools:build_interface_so", "//src/main/tools:linux-sandbox", "//src/main/tools:process-wrapper", ], diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java index 664a516101..50e591b672 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java @@ -139,11 +139,6 @@ public final class AnalysisTestUtil { } @Override - public Artifact getEmbeddedToolArtifact(String embeddedPath) { - return original.getEmbeddedToolArtifact(embeddedPath); - } - - @Override public MiddlemanFactory getMiddlemanFactory() { return original.getMiddlemanFactory(); } @@ -316,11 +311,6 @@ public final class AnalysisTestUtil { } @Override - public Artifact getEmbeddedToolArtifact(String embeddedPath) { - return null; - } - - @Override public Artifact getConstantMetadataArtifact(PathFragment rootRelativePath, Root root) { return null; } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java index 72b756d59d..0e68cfaac7 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java @@ -467,7 +467,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { protected CachingAnalysisEnvironment getTestAnalysisEnvironment() { return new CachingAnalysisEnvironment(view.getArtifactFactory(), ArtifactOwner.NULL_OWNER, /*isSystemEnv=*/true, /*extendedSanityChecks*/false, reporter, - /*skyframeEnv=*/ null, /*actionsEnabled=*/true, binTools); + /*skyframeEnv=*/ null, /*actionsEnabled=*/true); } /** @@ -567,7 +567,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { reporter.handle(e); } }; - return view.getRuleContextForTesting(target, eventHandler, masterConfig, binTools); + return view.getRuleContextForTesting(target, eventHandler, masterConfig); } /** @@ -1630,11 +1630,6 @@ public abstract class BuildViewTestCase extends FoundationTestCase { } @Override - public Artifact getEmbeddedToolArtifact(String embeddedPath) { - return null; - } - - @Override public Artifact getConstantMetadataArtifact(PathFragment rootRelativePath, Root root) { throw new UnsupportedOperationException(); } diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java index cc063b146a..9eb703cf99 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java @@ -139,6 +139,10 @@ public final class BazelMockCcSupport extends MockCcSupport { " objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',", ")", "filegroup(", + " name = 'interface_library_builder',", + " srcs = ['build_interface_so'],", + ")", + "filegroup(", " name = 'link_dynamic_library',", " srcs = ['link_dynamic_library.sh'],", ")"); diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java index 1441289562..80dceea4d2 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java @@ -44,6 +44,7 @@ public abstract class MockCcSupport { String pathString = artifact.getExecPathString(); return !pathString.startsWith("third_party/crosstool/") && !pathString.startsWith("tools/cpp/link_dynamic_library") + && !pathString.startsWith("tools/cpp/build_interface_so") && !(pathString.contains("/internal/_middlemen") && basename.contains("crosstool")) && !pathString.startsWith("_bin/build_interface_so") && !pathString.endsWith(".cppmap"); @@ -567,13 +568,19 @@ public abstract class MockCcSupport { "alias(name='toolchain', actual='//third_party/crosstool')", "cc_library(name = 'malloc')", "filegroup(", + " name = 'interface_library_builder',", + " srcs = ['build_interface_so'],", + ")", + "filegroup(", " name = 'link_dynamic_library',", " srcs = ['link_dynamic_library.sh'],", ")"); if (config.isRealFileSystem()) { config.linkTool("tools/cpp/link_dynamic_library.sh"); + config.linkTool("tools/cpp/build_interface_so"); } else { config.create("tools/cpp/link_dynamic_library.sh", ""); + config.create("tools/cpp/build_interface_so", ""); } } diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java index 2b678f0a47..c6cf10c439 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java @@ -71,11 +71,6 @@ public class CppLinkActionTest extends BuildViewTestCase { } @Override - public Artifact getEmbeddedToolArtifact(String embeddedPath) { - return scratchArtifact("tools/interface_so_builder"); - } - - @Override public Artifact getDerivedArtifact(PathFragment rootRelativePath, Root root) { return CppLinkActionTest.this.getDerivedArtifact( rootRelativePath, root, ActionsTestUtil.NULL_ARTIFACT_OWNER); @@ -231,7 +226,6 @@ public class CppLinkActionTest extends BuildViewTestCase { final Artifact dynamicOutputFile = getBinArtifactWithNoOwner(dynamicOutputPath.getPathString()); final Artifact oFile = getSourceArtifact("cc/a.o"); final Artifact oFile2 = getSourceArtifact("cc/a2.o"); - final Artifact interfaceSoBuilder = getBinArtifactWithNoOwner("foo/build_interface_so"); final FeatureConfiguration featureConfiguration = getMockFeatureConfiguration(); ActionTester.runTest( @@ -246,10 +240,6 @@ public class CppLinkActionTest extends BuildViewTestCase { (i & 2) == 0 ? dynamicOutputFile : staticOutputFile, CppHelper.getToolchain(ruleContext, ":cc_toolchain"), CppHelper.getFdoSupport(ruleContext, ":cc_toolchain").getFdoSupport()) { - @Override - protected Artifact getInterfaceSoBuilder() { - return interfaceSoBuilder; - } }; builder.addCompilationInputs( (i & 1) == 0 ? ImmutableList.of(oFile) : ImmutableList.of(oFile2)); @@ -284,7 +274,6 @@ public class CppLinkActionTest extends BuildViewTestCase { final Artifact dynamicOutputFile = getBinArtifactWithNoOwner(dynamicOutputPath.getPathString()); final Artifact oFile = getSourceArtifact("cc/a.o"); final Artifact oFile2 = getSourceArtifact("cc/a2.o"); - final Artifact interfaceSoBuilder = getBinArtifactWithNoOwner("foo/build_interface_so"); final FeatureConfiguration featureConfiguration = getMockFeatureConfiguration(); ActionTester.runTest( @@ -299,10 +288,6 @@ public class CppLinkActionTest extends BuildViewTestCase { (i & 2) == 0 ? staticOutputFile : dynamicOutputFile, CppHelper.getToolchain(ruleContext, ":cc_toolchain"), CppHelper.getFdoSupport(ruleContext, ":cc_toolchain").getFdoSupport()) { - @Override - protected Artifact getInterfaceSoBuilder() { - return interfaceSoBuilder; - } }; builder.addCompilationInputs( (i & 1) == 0 ? ImmutableList.of(oFile) : ImmutableList.of(oFile2)); @@ -533,7 +518,7 @@ public class CppLinkActionTest extends BuildViewTestCase { assertThat(commandLine).hasSize(6); assertThat(commandLine.get(0)).endsWith("custom/crosstool/scripts/link_dynamic_library.sh"); assertThat(commandLine.get(1)).isEqualTo("yes"); - assertThat(commandLine.get(2)).isEqualTo("tools/interface_so_builder"); + assertThat(commandLine.get(2)).endsWith("tools/cpp/build_interface_so"); assertThat(commandLine.get(3)).endsWith("foo.so"); assertThat(commandLine.get(4)).isEqualTo("FakeInterfaceOutput.ifso"); assertThat(commandLine.get(5)).isEqualTo("dynamic_library_linker_tool"); diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java index 815b4f0889..3f71f6fe42 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java +++ b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java @@ -31,7 +31,6 @@ public class TestConstants { * A list of all embedded binaries that go into the regular Bazel binary. */ public static final ImmutableList<String> EMBEDDED_TOOLS = ImmutableList.of( - "build_interface_so", "build-runfiles", "linux-sandbox", "process-wrapper", diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD index c7df6cfc70..6dd2a6052f 100644 --- a/tools/cpp/BUILD +++ b/tools/cpp/BUILD @@ -190,6 +190,12 @@ filegroup( ) filegroup( + name = "interface_library_builder", + srcs = ["build_interface_so"], + visibility = ["//visibility:public"], +) + +filegroup( name = "link_dynamic_library", srcs = ["link_dynamic_library.sh"], ) diff --git a/src/main/tools/build_interface_so b/tools/cpp/build_interface_so index 626e707c6c..626e707c6c 100755..100644 --- a/src/main/tools/build_interface_so +++ b/tools/cpp/build_interface_so |