Make the interface dynamic library builder a regular label instead of a magic artifact.
--
PiperOrigin-RevId: 147830857
MOS_MIGRATED_REVID=147830857
diff --git a/src/BUILD b/src/BUILD
index d1887a9..c00823e 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -28,7 +28,6 @@
"//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 @@
"//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 9f9a655..3c02666 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 @@
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 10a9216..1f12d2c 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.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 @@
@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 5aed23d..7a768c9 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.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 @@
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 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 @@
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 @@
}
@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 16408d1..5ff1698 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 @@
"FDO_DIR", cppConfiguration.getFdoInstrument().getPathString()));
}
- Artifact linkDynamicLibraryTool = getLinkDynamicLibraryTool(ruleContext);
-
CcToolchainProvider provider =
new CcToolchainProvider(
cppConfiguration,
@@ -210,6 +208,7 @@
strip,
objcopy,
fullInputsForLink(ruleContext, link),
+ ruleContext.getPrerequisiteArtifact("$interface_library_builder", Mode.HOST),
dwp,
libcLink,
staticRuntimeLinkInputs,
@@ -223,7 +222,7 @@
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 @@
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 @@
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 4145ebd..8f2f767 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 @@
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 @@
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 @@
NestedSet<Artifact> strip,
NestedSet<Artifact> objCopy,
NestedSet<Artifact> link,
+ Artifact interfaceSoBuilder,
NestedSet<Artifact> dwp,
NestedSet<Artifact> libcLink,
NestedSet<Artifact> staticRuntimeLinkInputs,
@@ -112,6 +115,7 @@
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 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 786add8..877865d 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 @@
.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 9441fbe..1db3f3a 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 @@
}
/**
- * 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 d1fed5d..3e0b716 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 @@
* @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 @@
* @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 @@
* @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 @@
* @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 @@
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 @@
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 bb22ec2..9ad6ba3 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 @@
/**
- * 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 c84cf27..0e2c828 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.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 @@
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 @@
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 @@
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 e587f8f..1a04d15 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 @@
this.skyframeBuildView = new SkyframeBuildView(
directories,
this,
- binTools,
(ConfiguredRuleClassProvider) ruleClassProvider);
this.artifactFactory.set(skyframeBuildView.getArtifactFactory());
this.externalFilesHelper = new ExternalFilesHelper(
diff --git a/src/main/tools/build_interface_so b/src/main/tools/build_interface_so
deleted file mode 100755
index 626e707..0000000
--- a/src/main/tools/build_interface_so
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-if [[ $# != 2 ]]; then
- echo "Usage: $0 <so> <interface so>" 1>&2
- exit 1
-fi
-
-exec cp $1 $2
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 7f26b3e..c7219ae 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 @@
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 664a516..50e591b 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 @@
}
@Override
- public Artifact getEmbeddedToolArtifact(String embeddedPath) {
- return original.getEmbeddedToolArtifact(embeddedPath);
- }
-
- @Override
public MiddlemanFactory getMiddlemanFactory() {
return original.getMiddlemanFactory();
}
@@ -316,11 +311,6 @@
}
@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 72b756d..0e68cfa 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 @@
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 @@
reporter.handle(e);
}
};
- return view.getRuleContextForTesting(target, eventHandler, masterConfig, binTools);
+ return view.getRuleContextForTesting(target, eventHandler, masterConfig);
}
/**
@@ -1630,11 +1630,6 @@
}
@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 cc063b1..9eb703c 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 @@
" 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 1441289..80dceea 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 @@
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 @@
"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 2b678f0..c6cf10c 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 @@
}
@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 @@
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 @@
(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 @@
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 @@
(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 @@
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 815b4f0..3f71f6f 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 @@
* 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",