aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
diff options
context:
space:
mode:
authorGravatar plf <plf@google.com>2018-06-08 05:02:00 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-08 05:03:09 -0700
commit6c87715b8ac6b32e636ba307440e2b7362b10a48 (patch)
tree84ee3de5dfb33c8372eb2f95729f1a8606465857 /src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
parent2b86beeb09dfc07bb95fef5617d39ac944605551 (diff)
C++: Refactors PyWrapCc to make it easier to migrate to Skylark
Rolling forward https://github.com/bazelbuild/bazel/commit/6afc2eb67675e928bc8fa10c5d1745223186b6e0. This CL was only rolled back to make it easier to rollback https://github.com/bazelbuild/bazel/commit/d0982b905d93e219a0caccdcf5d6ae1e219387c2. RELNOTES:none PiperOrigin-RevId: 199779304
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java40
1 files changed, 13 insertions, 27 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
index 41e19c497c..b8c449529f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
@@ -24,10 +24,7 @@ import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.RunfilesSupport;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
-import com.google.devtools.build.lib.rules.cpp.AbstractCcLinkParamsStore;
import com.google.devtools.build.lib.rules.cpp.CcCommon.CcFlagsSupplier;
-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.syntax.Type;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -60,7 +57,6 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
static RuleConfiguredTargetBuilder init(RuleContext ruleContext, PythonSemantics semantics,
PyCommon common) throws InterruptedException {
ruleContext.initConfigurationMakeVariableContext(new CcFlagsSupplier(ruleContext));
- AbstractCcLinkParamsStore ccLinkParamsStore = initializeCcLinkParamStore(ruleContext);
List<Artifact> srcs = common.validateSrcs();
List<Artifact> allOutputs =
@@ -80,9 +76,10 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
return null;
}
- Artifact realExecutable =
- semantics.createExecutable(ruleContext, common, ccLinkParamsStore, imports);
- Runfiles commonRunfiles = collectCommonRunfiles(ruleContext, common, semantics);
+ CcLinkingInfo ccLinkingInfo =
+ semantics.buildCcLinkingInfoProvider(ruleContext.getPrerequisites("deps", Mode.TARGET));
+
+ Runfiles commonRunfiles = collectCommonRunfiles(ruleContext, common, semantics, ccLinkingInfo);
Runfiles.Builder defaultRunfilesBuilder = new Runfiles.Builder(
ruleContext.getWorkspaceName(), ruleContext.getConfiguration().legacyExternalRunfiles())
@@ -124,19 +121,22 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
semantics.postInitBinary(ruleContext, runfilesSupport, common);
- CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create();
- ccLinkingInfoBuilder.setCcLinkParamsStore(new CcLinkParamsStore(ccLinkParamsStore));
+ Artifact realExecutable =
+ semantics.createExecutable(ruleContext, common, ccLinkingInfo, imports);
return builder
.setFilesToBuild(common.getFilesToBuild())
.add(RunfilesProvider.class, runfilesProvider)
.setRunfilesSupport(runfilesSupport, realExecutable)
- .addNativeDeclaredProvider(ccLinkingInfoBuilder.build())
.add(PythonImportsProvider.class, new PythonImportsProvider(imports));
}
- private static Runfiles collectCommonRunfiles(RuleContext ruleContext, PyCommon common,
- PythonSemantics semantics) {
+ private static Runfiles collectCommonRunfiles(
+ RuleContext ruleContext,
+ PyCommon common,
+ PythonSemantics semantics,
+ CcLinkingInfo ccLinkingInfo)
+ throws InterruptedException {
Runfiles.Builder builder = new Runfiles.Builder(
ruleContext.getWorkspaceName(), ruleContext.getConfiguration().legacyExternalRunfiles());
builder.addArtifact(common.getExecutable());
@@ -152,21 +152,7 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
|| ruleContext.attributes().get("legacy_create_init", Type.BOOLEAN)) {
builder.setEmptyFilesSupplier(PythonUtils.GET_INIT_PY_FILES);
}
- semantics.collectRunfilesForBinary(ruleContext, builder, common);
+ semantics.collectRunfilesForBinary(ruleContext, builder, common, ccLinkingInfo);
return builder.build();
}
-
- private static AbstractCcLinkParamsStore initializeCcLinkParamStore(
- final RuleContext ruleContext) {
- return new AbstractCcLinkParamsStore() {
- @Override
- protected void collect(
- CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) {
- builder.addTransitiveTargets(
- ruleContext.getPrerequisites("deps", Mode.TARGET),
- PyCcLinkParamsProvider.TO_LINK_PARAMS,
- CcLinkParamsStore.TO_LINK_PARAMS);
- }
- };
- }
}