diff options
author | plf <plf@google.com> | 2018-07-26 01:57:39 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-26 01:59:17 -0700 |
commit | 071a44104e82a08425da90ddc78db148d6951e03 (patch) | |
tree | cb88152e4c7012a2e91159716ebddae5edd8284a /src/main/java/com/google/devtools/build/lib/bazel | |
parent | 9b29a1bd7bbe37500b28a6508cb82ca1943c75b5 (diff) |
C++: Removes calls to setCcLinkparamsStore of CcLinkingInfo.Builder
This is in preparation for deleting CcLinkParamsStore. Not all calls to
setCcLinkparamsStore have been removed in this CL.
Roll forward with bzl change in separate CL (unknown commit) and giving a proper error in Skylark instead of a crash when CcLinkingInfo is not built correctly.
RELNOTES:none
PiperOrigin-RevId: 206122870
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/bazel')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java | 33 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java | 27 |
2 files changed, 28 insertions, 32 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java index 6f2fbff664..f6573077c7 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java @@ -21,7 +21,9 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; +import com.google.common.collect.Streams; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.analysis.AnalysisUtils; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.Runfiles; @@ -42,9 +44,6 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.TargetUtils; -import com.google.devtools.build.lib.rules.cpp.AbstractCcLinkParamsStore; -import com.google.devtools.build.lib.rules.cpp.CcLinkParams; -import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore; import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo; import com.google.devtools.build.lib.rules.java.DeployArchiveBuilder; import com.google.devtools.build.lib.rules.java.DeployArchiveBuilder.Compression; @@ -562,20 +561,20 @@ public class BazelJavaSemantics implements JavaSemantics { Artifact gensrcJar, RuleConfiguredTargetBuilder ruleBuilder) { // TODO(plf): Figure out whether we can remove support for C++ dependencies in Bazel. - CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create(); - ccLinkingInfoBuilder.setCcLinkParamsStore( - new CcLinkParamsStore( - new AbstractCcLinkParamsStore() { - @Override - protected void collect( - CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) { - builder.addTransitiveTargets( - javaCommon.targetsTreatedAsDeps(ClasspathType.BOTH), - JavaCcLinkParamsProvider.TO_LINK_PARAMS, - CcLinkParamsStore.TO_LINK_PARAMS); - } - })); - ruleBuilder.addNativeDeclaredProvider(ccLinkingInfoBuilder.build()); + ImmutableList<? extends TransitiveInfoCollection> deps = + javaCommon.targetsTreatedAsDeps(ClasspathType.BOTH); + ImmutableList<CcLinkingInfo> ccLinkingInfos = + ImmutableList.<CcLinkingInfo>builder() + .addAll(AnalysisUtils.getProviders(deps, CcLinkingInfo.PROVIDER)) + .addAll( + Streams.stream(AnalysisUtils.getProviders(deps, JavaCcLinkParamsProvider.class)) + .map(JavaCcLinkParamsProvider::getCcLinkingInfo) + .collect(ImmutableList.toImmutableList())) + .build(); + + // TODO(plf): return empty CcLinkingInfo because deps= in Java targets should not contain C++ + // targets. We need to make sure that no one uses this functionality, though. + ruleBuilder.addNativeDeclaredProvider(CcLinkingInfo.merge(ccLinkingInfos)); } // TODO(dmarting): simplify that logic when we remove the legacy Bazel java_test behavior. diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java index 51fe643793..9a71ae9f55 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java @@ -18,9 +18,11 @@ import static java.nio.charset.StandardCharsets.ISO_8859_1; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Streams; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ParamFileInfo; import com.google.devtools.build.lib.actions.ParameterFile; +import com.google.devtools.build.lib.analysis.AnalysisUtils; import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.Runfiles; @@ -40,9 +42,6 @@ import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.In import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; -import com.google.devtools.build.lib.rules.cpp.AbstractCcLinkParamsStore; -import com.google.devtools.build.lib.rules.cpp.CcLinkParams; -import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore; import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo; import com.google.devtools.build.lib.rules.python.PyCcLinkParamsProvider; import com.google.devtools.build.lib.rules.python.PyCommon; @@ -365,18 +364,16 @@ public class BazelPythonSemantics implements PythonSemantics { @Override public CcLinkingInfo buildCcLinkingInfoProvider( Iterable<? extends TransitiveInfoCollection> deps) { - CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create(); - AbstractCcLinkParamsStore ccLinkParamsStore = - new AbstractCcLinkParamsStore() { - @Override - protected void collect( - CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) { - builder.addTransitiveTargets( - deps, CcLinkParamsStore.TO_LINK_PARAMS, PyCcLinkParamsProvider.TO_LINK_PARAMS); - } - }; + ImmutableList<CcLinkingInfo> ccLinkingInfos = + ImmutableList.<CcLinkingInfo>builder() + .addAll(AnalysisUtils.getProviders(deps, CcLinkingInfo.PROVIDER)) + .addAll( + Streams.stream(AnalysisUtils.getProviders(deps, PyCcLinkParamsProvider.PROVIDER)) + .map(PyCcLinkParamsProvider::getCcLinkingInfo) + .collect(ImmutableList.toImmutableList())) + .build(); + // TODO(plf): return empty CcLinkingInfo. - ccLinkingInfoBuilder.setCcLinkParamsStore(new CcLinkParamsStore(ccLinkParamsStore)); - return ccLinkingInfoBuilder.build(); + return CcLinkingInfo.merge(ccLinkingInfos); } } |