diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/extra')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java | 11 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java | 24 |
2 files changed, 21 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java index c82cf954f5..5267e7dafd 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java @@ -17,6 +17,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.ActionExecutionContext; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.CommandLineExpansionException; @@ -50,18 +51,20 @@ public final class ExtraActionInfoFileWriteAction extends AbstractFileWriteActio public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) throws IOException, InterruptedException, ExecException { try { - return new ProtoDeterministicWriter(shadowedAction.getExtraActionInfo().build()); + return new ProtoDeterministicWriter( + shadowedAction.getExtraActionInfo(ctx.getActionKeyContext()).build()); } catch (CommandLineExpansionException e) { throw new UserExecException(e); } } @Override - protected String computeKey() throws CommandLineExpansionException { + protected String computeKey(ActionKeyContext actionKeyContext) + throws CommandLineExpansionException { Fingerprint f = new Fingerprint(); f.addString(UUID); - f.addString(shadowedAction.getKey()); - f.addBytes(shadowedAction.getExtraActionInfo().build().toByteArray()); + f.addString(shadowedAction.getKey(actionKeyContext)); + f.addBytes(shadowedAction.getExtraActionInfo(actionKeyContext).build().toByteArray()); return f.hexDigestAndReset(); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java index c613ec5ea0..3d737a1d18 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.RunfilesSupplier; @@ -127,8 +128,10 @@ public final class ExtraActionSpec implements TransitiveInfoProvider { // Multiple actions in the same configured target need to have different names for the artifact // that might be created here, so we append something that should be unique for each action. - String actionUniquifier = actionToShadow.getPrimaryOutput().getExecPath().getBaseName() + "." - + actionToShadow.getKey(); + String actionUniquifier = + actionToShadow.getPrimaryOutput().getExecPath().getBaseName() + + "." + + actionToShadow.getKey(owningRule.getActionKeyContext()); List<String> argv = commandHelper.buildCommandLine(command, extraActionInputs, "." + actionUniquifier + ".extra_action_script.sh", executionInfo); @@ -188,7 +191,8 @@ public final class ExtraActionSpec implements TransitiveInfoProvider { */ private Artifact getExtraActionOutputArtifact( RuleContext ruleContext, Action action, String template) { - String actionId = getActionId(ruleContext.getActionOwner(), action); + String actionId = + getActionId(ruleContext.getActionKeyContext(), ruleContext.getActionOwner(), action); template = template.replace("$(ACTION_ID)", actionId); template = template.replace("$(OWNER_LABEL_DIGEST)", getOwnerDigest(ruleContext)); @@ -224,14 +228,14 @@ public final class ExtraActionSpec implements TransitiveInfoProvider { /** * Creates a unique id for the action shadowed by this extra_action. * - * We need to have a unique id for the extra_action to use. We build this - * from the owner's label and the shadowed action id (which is only - * guaranteed to be unique per target). Together with the subfolder - * matching the original target's package name, we believe this is enough - * of a uniqueness guarantee. + * <p>We need to have a unique id for the extra_action to use. We build this from the owner's + * label and the shadowed action id (which is only guaranteed to be unique per target). Together + * with the subfolder matching the original target's package name, we believe this is enough of a + * uniqueness guarantee. */ @VisibleForTesting - public static String getActionId(ActionOwner owner, Action action) { + public static String getActionId( + ActionKeyContext actionKeyContext, ActionOwner owner, Action action) { Fingerprint f = new Fingerprint(); f.addString(owner.getLabel().toString()); ImmutableList<AspectDescriptor> aspectDescriptors = owner.getAspectDescriptors(); @@ -239,7 +243,7 @@ public final class ExtraActionSpec implements TransitiveInfoProvider { for (AspectDescriptor aspectDescriptor : aspectDescriptors) { f.addString(aspectDescriptor.getDescription()); } - f.addString(action.getKey()); + f.addString(action.getKey(actionKeyContext)); return f.hexDigestAndReset(); } } |