diff options
author | 2016-01-14 11:56:32 +0000 | |
---|---|---|
committer | 2016-01-15 09:22:03 +0000 | |
commit | fc2a01bcedaf85c2a4fd7675f80e877203cc57cb (patch) | |
tree | 5c950de2cad89adb6bebc2f0b7ea9c8793d9d8f8 /src/main/java/com/google/devtools | |
parent | 85834ad350edb675d14daad71e878f74ce417353 (diff) |
Add a few other Label.resolveRepositoryRelative() calls to make select() statements work in remote repositories.
This work is somewhat sisyphean; the principled thing to do would be to just do this resolution when labels are parsed.
Fixes #783.
--
MOS_MIGRATED_REVID=112137996
Diffstat (limited to 'src/main/java/com/google/devtools')
4 files changed, 10 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapper.java index 895f08e67e..65267f62d4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapper.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapper.java @@ -132,7 +132,8 @@ public class ConfiguredAttributeMapper extends AbstractAttributeMapper { continue; } - ConfigMatchingProvider curCondition = Verify.verifyNotNull(configConditions.get(selectorKey)); + ConfigMatchingProvider curCondition = Verify.verifyNotNull(configConditions.get( + rule.getLabel().resolveRepositoryRelative(selectorKey))); conditionLabels.add(curCondition.label()); if (curCondition.matches()) { diff --git a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java index ea2a57e5d8..993113ad8c 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java @@ -125,10 +125,11 @@ public class AggregatingAttributeMapper extends AbstractAttributeMapper { for (Selector<?> selector : selectorList.getSelectors()) { for (Map.Entry<Label, ?> selectorEntry : selector.getEntries().entrySet()) { if (includeSelectKeys && !BuildType.Selector.isReservedLabel(selectorEntry.getKey())) { - observer.acceptLabelAttribute(selectorEntry.getKey(), attribute); + observer.acceptLabelAttribute( + getLabel().resolveRepositoryRelative(selectorEntry.getKey()), attribute); } for (Label value : extractLabels(type, selectorEntry.getValue())) { - observer.acceptLabelAttribute(value, attribute); + observer.acceptLabelAttribute(getLabel().resolveRepositoryRelative(value), attribute); } } } diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java index 8e00db47b6..9ce41f6cd4 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java +++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java @@ -1476,7 +1476,9 @@ public final class RuleClass { for (Attribute attr : rule.getAttributes()) { SelectorList<?> selectors = attributes.getSelectorList(attr.getName(), attr.getType()); if (selectors != null) { - configLabels.addAll(selectors.getKeyLabels()); + for (Label key : selectors.getKeyLabels()) { + configLabels.add(rule.getLabel().resolveRepositoryRelative(key)); + } } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java index bd698d9cb8..70d72331e5 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java @@ -645,7 +645,8 @@ final class ConfiguredTargetFunction implements SkyFunction { for (Label configLabel : attributeMap.getConfigurabilityKeys(a.getName(), a.getType())) { if (!BuildType.Selector.isReservedLabel(configLabel)) { configLabelMap.put(a, LabelAndConfiguration.of( - configLabel, ctgValue.getConfiguration())); + target.getLabel().resolveRepositoryRelative(configLabel), + ctgValue.getConfiguration())); } } } |