aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
diff options
context:
space:
mode:
authorGravatar Michajlo Matijkiw <michajlo@google.com>2015-05-29 14:51:28 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2015-06-01 15:48:24 +0000
commit4d359804145178dee2067a8023253626d9b12379 (patch)
treec921395ed876dc13c6b8beab1387e6a24526f2d0 /src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
parentc0100e9186e02ad0914c6254addd67058ff31705 (diff)
Attach runfiles middlemen to py-binary data runfiles
-- MOS_MIGRATED_REVID=94758273
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.java24
1 files changed, 17 insertions, 7 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 e91f7f256c..337d63b1a5 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
@@ -63,11 +63,11 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
}
semantics.createExecutable(ruleContext, common, ccLinkParamsStore);
- Runfiles.Builder runfilesBuilder = collectCommonRunfiles(ruleContext, common);
- semantics.collectRunfilesForBinary(ruleContext, runfilesBuilder, common);
- Runfiles dataRunfiles = runfilesBuilder.build();
- semantics.collectDefaultRunfilesForBinary(ruleContext, runfilesBuilder);
- Runfiles defaultRunfiles = runfilesBuilder.build();
+ Runfiles commonRunfiles = collectCommonRunfiles(ruleContext, common, semantics);
+
+ Runfiles.Builder defaultRunfilesBuilder = new Runfiles.Builder().merge(commonRunfiles);
+ semantics.collectDefaultRunfilesForBinary(ruleContext, defaultRunfilesBuilder);
+ Runfiles defaultRunfiles = defaultRunfilesBuilder.build();
RunfilesSupport runfilesSupport = RunfilesSupport.withExecutable(ruleContext, defaultRunfiles,
common.getExecutable(), ruleContext.shouldCreateRunfilesSymlinks());
@@ -76,6 +76,14 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
return null;
}
+ // Only include common runfiles and middleman. Default runfiles added by semantics are
+ // excluded. The middleman is necessary to ensure the runfiles trees are generated for all
+ // dependency binaries.
+ Runfiles dataRunfiles = new Runfiles.Builder()
+ .merge(commonRunfiles)
+ .addArtifact(runfilesSupport.getRunfilesMiddleman())
+ .build();
+
RunfilesProvider runfilesProvider = RunfilesProvider.withData(defaultRunfiles, dataRunfiles);
RuleConfiguredTargetBuilder builder =
@@ -90,7 +98,8 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
.add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore));
}
- private static Runfiles.Builder collectCommonRunfiles(RuleContext ruleContext, PyCommon common) {
+ private static Runfiles collectCommonRunfiles(RuleContext ruleContext, PyCommon common,
+ PythonSemantics semantics) {
Runfiles.Builder builder = new Runfiles.Builder();
builder.addArtifact(common.getExecutable());
if (common.getConvertedFiles() != null) {
@@ -101,7 +110,8 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
builder.addRunfiles(ruleContext, RunfilesProvider.DEFAULT_RUNFILES);
builder.add(ruleContext, PythonRunfilesProvider.TO_RUNFILES);
builder.setEmptyFilesSupplier(PythonUtils.GET_INIT_PY_FILES);
- return builder;
+ semantics.collectRunfilesForBinary(ruleContext, builder, common);
+ return builder.build();
}
private static CcLinkParamsStore initializeCcLinkParamStore(final RuleContext ruleContext) {