diff options
author | plf <plf@google.com> | 2018-06-08 05:02:00 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-08 05:03:09 -0700 |
commit | 6c87715b8ac6b32e636ba307440e2b7362b10a48 (patch) | |
tree | 84ee3de5dfb33c8372eb2f95729f1a8606465857 /src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java | |
parent | 2b86beeb09dfc07bb95fef5617d39ac944605551 (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.java | 40 |
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); - } - }; - } } |