aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar plf <plf@google.com>2018-07-16 07:19:33 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-16 07:21:37 -0700
commit020ac7ef02f4de0a85d73737e4316c5fc778f97e (patch)
tree5385a3d2bef707d9adde53ab28968b12e62f74cb
parent1281a024b2b0bfeed2015e2257e0a170a703df08 (diff)
C++: Remove CcDynamicLibrariesForRuntime.
This was providing runtime libraries. This provider is redundant because the same libraries are in CcLinkParamsStore. Note to sheriff: Shouldn't break anything. If any, breakages would most likely be in Go test rules. I will look at the nightly tomorrow anyway. The breakages in the linked TGP re-run are not caused by this change, later re-runs have unrelated changes. TESTED=[] RELNOTES:none PiperOrigin-RevId: 204738136
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java11
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/LibraryLinkingTest.java5
7 files changed, 42 insertions, 18 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 47bc2b0ed3..36aca5f7df 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -886,10 +886,12 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
ccCompilationInfoBuilder.setCcCompilationContext(ccCompilationContext);
CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create();
- ccLinkingInfoBuilder.setCcDynamicLibrariesForRuntime(
- new CcDynamicLibrariesForRuntime(
- collectDynamicLibrariesForRuntimeArtifacts(
- ruleContext, linkingOutputs.getDynamicLibrariesForRuntime())));
+ if (cppConfiguration.enableCcDynamicLibrariesForRuntime()) {
+ ccLinkingInfoBuilder.setCcDynamicLibrariesForRuntime(
+ new CcDynamicLibrariesForRuntime(
+ collectDynamicLibrariesForRuntimeArtifacts(
+ ruleContext, linkingOutputs.getDynamicLibrariesForRuntime())));
+ }
builder
.setFilesToBuild(filesToBuild)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
index e2448cd425..2c0e64e638 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
@@ -531,10 +531,11 @@ public final class CcLinkingHelper {
}
CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create();
- ccLinkingInfoBuilder.setCcDynamicLibrariesForRuntime(
- collectDynamicLibrariesForRuntimeArtifacts(
- ccLinkingOutputs.getDynamicLibrariesForRuntime()));
-
+ if (cppConfiguration.enableCcDynamicLibrariesForRuntime()) {
+ ccLinkingInfoBuilder.setCcDynamicLibrariesForRuntime(
+ collectDynamicLibrariesForRuntimeArtifacts(
+ ccLinkingOutputs.getDynamicLibrariesForRuntime()));
+ }
CppConfiguration cppConfiguration = ruleContext.getFragment(CppConfiguration.class);
boolean forcePic = cppConfiguration.forcePic();
ccLinkingInfoBuilder.setCcLinkParamsStore(
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 bfb6528ad2..375f735c72 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
@@ -1161,6 +1161,11 @@ public final class CppConfiguration extends BuildConfiguration.Fragment
return cppOptions.useLLVMCoverageMapFormat;
}
+ /** Returns true if the deprecated CcDynamicLibrariesForRuntime class should be used */
+ public boolean enableCcDynamicLibrariesForRuntime() {
+ return cppOptions.enableCcDynamicLibrariesForRuntime;
+ }
+
private void checkForToolchainSkylarkApiAvailability() throws EvalException {
if (!cppOptions.enableLegacyToolchainSkylarkApi) {
throw new EvalException(null, "Information about the C++ toolchain API is not accessible "
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 0744f005d8..2ecb33e6d6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -803,6 +803,17 @@ public class CppOptions extends FragmentOptions {
+ "breaking changes.")
public boolean enableCcSkylarkApi;
+ @Option(
+ name = "experimental_enable_cc_dynlibs_for_runtime",
+ defaultValue = "true",
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS, OptionEffectTag.EAGERNESS_TO_EXIT},
+ metadataTags = {OptionMetadataTag.EXPERIMENTAL},
+ help =
+ "If false, Blaze will not propagate runtime libs through CcDynamicLibrariesForRuntime "
+ + "field of CcLinkingInfo. See b/111289526.")
+ public boolean enableCcDynamicLibrariesForRuntime;
+
@Override
public FragmentOptions getHost() {
CppOptions host = (CppOptions) getDefault();
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
index 49b14ea565..580c4e7f7e 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -119,8 +119,9 @@ public class CcCommonTest extends BuildViewTestCase {
assertThat(
emptylib
.get(CcLinkingInfo.PROVIDER)
- .getCcDynamicLibrariesForRuntime()
- .getDynamicLibrariesForRuntimeArtifacts()
+ .getCcLinkParamsStore()
+ .get(/* linkingStatically= */ false, /* linkShared= */ false)
+ .getDynamicLibrariesForRuntime()
.isEmpty())
.isTrue();
}
@@ -232,8 +233,9 @@ public class CcCommonTest extends BuildViewTestCase {
assertThat(
statically
.get(CcLinkingInfo.PROVIDER)
- .getCcDynamicLibrariesForRuntime()
- .getDynamicLibrariesForRuntimeArtifacts()
+ .getCcLinkParamsStore()
+ .get(/* linkingStatically= */ false, /* linkShared= */ false)
+ .getDynamicLibrariesForRuntime()
.isEmpty())
.isTrue();
Artifact staticallyDotA = getOnlyElement(getFilesToBuild(statically));
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index 6b128f17fb..b3c23cd370 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -219,8 +219,9 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase {
assertThat(
hello
.get(CcLinkingInfo.PROVIDER)
- .getCcDynamicLibrariesForRuntime()
- .getDynamicLibrariesForRuntimeArtifacts())
+ .getCcLinkParamsStore()
+ .get(/* linkingStatically= */ false, /* linkShared= */ false)
+ .getDynamicLibrariesForRuntime())
.containsExactly(implSharedObjectLink);
}
@@ -284,8 +285,9 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase {
assertThat(
hello
.get(CcLinkingInfo.PROVIDER)
- .getCcDynamicLibrariesForRuntime()
- .getDynamicLibrariesForRuntimeArtifacts())
+ .getCcLinkParamsStore()
+ .get(/* linkingStatically= */ false, /* linkShared= */ false)
+ .getDynamicLibrariesForRuntime())
.containsExactly(implSharedObjectLink);
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LibraryLinkingTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LibraryLinkingTest.java
index 6a98bc478c..130c5ff8db 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LibraryLinkingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LibraryLinkingTest.java
@@ -111,8 +111,9 @@ public final class LibraryLinkingTest extends BuildViewTestCase {
Iterables.getOnlyElement(
ccLib
.get(CcLinkingInfo.PROVIDER)
- .getCcDynamicLibrariesForRuntime()
- .getDynamicLibrariesForRuntimeArtifacts());
+ .getCcLinkParamsStore()
+ .get(/* linkingStatically= */ false, /* linkShared= */ false)
+ .getDynamicLibrariesForRuntime());
// This artifact is generated by a SolibSymlinkAction, so we need to go back two levels.
CppLinkAction solibLink =
(CppLinkAction) getGeneratingAction(getGeneratingAction(soLib).getPrimaryInput());