diff options
author | Kristina Chodorow <kchodorow@google.com> | 2016-01-11 15:28:02 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-01-11 20:03:04 +0000 |
commit | 3680a58b5caa1552254790dd54ec7ae28a7e3bcc (patch) | |
tree | 5ba90723eb947f23caf08dace33899cbe482ab2c /src/main/java/com/google/devtools/build/lib/packages | |
parent | eaf8930fd1062590011b55321f551ce8b01fc57c (diff) |
Allow overridding any rule in the WORKSPACE file
...instead of throwing an uncaught exception and printing a stack trace. Fixes #409.
--
MOS_MIGRATED_REVID=111850179
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java | 16 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/Package.java | 2 |
2 files changed, 1 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java b/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java index 8ea4ceec26..8570899691 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/packages/ExternalPackageBuilder.java @@ -18,7 +18,6 @@ import com.google.common.base.Verify; import com.google.common.collect.Maps; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; -import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.events.StoredEventHandler; import com.google.devtools.build.lib.syntax.FuncallExpression; @@ -31,19 +30,6 @@ import java.util.Map; */ public class ExternalPackageBuilder { - private Map<PackageIdentifier.RepositoryName, Rule> repositoryMap = Maps.newLinkedHashMap(); - - void build(Package.Builder pkg) { - for (Rule rule : repositoryMap.values()) { - try { - pkg.addRule(rule); - } catch (Package.NameConflictException e) { - throw new IllegalStateException( - "Got a name conflict for " + rule + ", which can't happen: " + e.getMessage(), e); - } - } - } - public ExternalPackageBuilder createAndAddRepositoryRule( Package.Builder pkg, RuleClass ruleClass, @@ -57,7 +43,7 @@ public class ExternalPackageBuilder { Rule tempRule = RuleFactory.createRule(pkg, ruleClass, kwargs, eventHandler, ast, ast.getLocation(), null); pkg.addEvents(eventHandler.getEvents()); - repositoryMap.put(PackageIdentifier.RepositoryName.create("@" + tempRule.getName()), tempRule); + overwriteRule(pkg, tempRule); for (Map.Entry<String, Label> entry : ruleClass.getExternalBindingsFunction().apply(tempRule).entrySet()) { Label nameLabel = Label.parseAbsolute("//external:" + entry.getKey()); diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java index f6ec1e86eb..ecf1df70dc 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Package.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java @@ -1288,8 +1288,6 @@ public class Package { return pkg; } - externalPackageData.build(this); - // Freeze targets and distributions. targets = ImmutableMap.copyOf(targets); defaultDistributionSet = |