diff options
author | janakr <janakr@google.com> | 2018-06-07 15:05:17 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-07 15:06:31 -0700 |
commit | 6afc2eb67675e928bc8fa10c5d1745223186b6e0 (patch) | |
tree | b5ad8053993f7c414aae51d0c971bc24fb6c6ac3 /src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java | |
parent | 5e893626640351de0f12e36bb14d80af0ff1e036 (diff) |
Automated rollback of commit f137cea0ac74334013e7b064e59d1624cf032ac4.
*** Reason for rollback ***
See linked bug.
*** Original change description ***
C++: Refactors PyWrapCc to make it easier to migrate to Skylark
RELNOTES:none
PiperOrigin-RevId: 199702630
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 | 39 |
1 files changed, 26 insertions, 13 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 b8c449529f..07a1213bca 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,7 +24,10 @@ 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; @@ -57,6 +60,7 @@ 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 = @@ -76,10 +80,9 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory { return null; } - CcLinkingInfo ccLinkingInfo = - semantics.buildCcLinkingInfoProvider(ruleContext.getPrerequisites("deps", Mode.TARGET)); - - Runfiles commonRunfiles = collectCommonRunfiles(ruleContext, common, semantics, ccLinkingInfo); + Artifact realExecutable = + semantics.createExecutable(ruleContext, common, ccLinkParamsStore, imports); + Runfiles commonRunfiles = collectCommonRunfiles(ruleContext, common, semantics); Runfiles.Builder defaultRunfilesBuilder = new Runfiles.Builder( ruleContext.getWorkspaceName(), ruleContext.getConfiguration().legacyExternalRunfiles()) @@ -121,22 +124,19 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory { semantics.postInitBinary(ruleContext, runfilesSupport, common); - Artifact realExecutable = - semantics.createExecutable(ruleContext, common, ccLinkingInfo, imports); + CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create(); + ccLinkingInfoBuilder.setCcLinkParamsStore(new CcLinkParamsStore(ccLinkParamsStore)); 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, - CcLinkingInfo ccLinkingInfo) - throws InterruptedException { + private static Runfiles collectCommonRunfiles(RuleContext ruleContext, PyCommon common, + PythonSemantics semantics) { Runfiles.Builder builder = new Runfiles.Builder( ruleContext.getWorkspaceName(), ruleContext.getConfiguration().legacyExternalRunfiles()); builder.addArtifact(common.getExecutable()); @@ -152,7 +152,20 @@ 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, ccLinkingInfo); + semantics.collectRunfilesForBinary(ruleContext, builder, common); 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), + CcLinkParamsStore.TO_LINK_PARAMS); + } + }; + } } |