From 517bc6f698eca41356909499c98f91bc69141f2f Mon Sep 17 00:00:00 2001 From: Greg Estren Date: Thu, 12 Nov 2015 20:23:22 +0000 Subject: Use the new BuildConfiguration.equalsOrIsSupersetOf in CcLibraryHelper. Also add a check for null configurations. -- MOS_MIGRATED_REVID=107709170 --- .../devtools/build/lib/analysis/config/BuildConfiguration.java | 3 ++- .../google/devtools/build/lib/rules/cpp/CcLibraryHelper.java | 10 +++------- 2 files changed, 5 insertions(+), 8 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java index 1ec1858d77..930f1c5ece 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java @@ -1094,7 +1094,8 @@ public final class BuildConfiguration { */ public boolean equalsOrIsSupersetOf(BuildConfiguration other) { return this.equals(other) - || (outputRoots.equals(other.outputRoots) + || (other != null + && outputRoots.equals(other.outputRoots) && actionsEnabled == other.actionsEnabled && fragments.values().containsAll(other.fragments.values()) && buildOptions.getOptions().containsAll(other.buildOptions.getOptions())); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java index cce02514eb..e0ec3245c5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java @@ -394,13 +394,9 @@ public final class CcLibraryHelper { */ public CcLibraryHelper addDeps(Iterable deps) { for (TransitiveInfoCollection dep : deps) { - BuildConfiguration depConfig = dep.getConfiguration(); - if (depConfig != null && depConfig.hasFragment(CppConfiguration.class)) { - // We can't just check for configuration equality because the dep configuration may - // not have all the fragments that rule's configuration does. - Preconditions.checkState(depConfig.getFragment(CppConfiguration.class).equals( - configuration.getFragment(CppConfiguration.class))); - } + Preconditions.checkState(dep.getConfiguration() == null + || configuration.equalsOrIsSupersetOf(dep.getConfiguration()), + "dep " + dep.getLabel() + " has a different config than " + ruleContext.getLabel()); this.deps.add(dep); } return this; -- cgit v1.2.3