aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/RuleClass.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RuleClass.java22
1 files changed, 21 insertions, 1 deletions
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 8064936556..9accac3899 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
@@ -30,6 +30,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Ordering;
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.EventHandler;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.BuildType.SelectorList;
@@ -103,6 +104,9 @@ import javax.annotation.concurrent.Immutable;
public final class RuleClass {
public static final Function<? super Rule, Map<String, Label>> NO_EXTERNAL_BINDINGS =
Functions.<Map<String, Label>>constant(ImmutableMap.<String, Label>of());
+
+ private static final PathFragment THIRD_PARTY_PREFIX = new PathFragment("third_party");
+
/**
* A constraint for the package name of the Rule instances.
*/
@@ -1540,7 +1544,7 @@ public final class RuleClass {
*/
private static void checkThirdPartyRuleHasLicense(Rule rule,
Package.Builder pkgBuilder, EventHandler eventHandler) {
- if (rule.getLabel().getPackageName().startsWith("third_party/")) {
+ if (isThirdPartyPackage(rule.getLabel().getPackageIdentifier())) {
License license = rule.getLicense();
if (license == null) {
license = pkgBuilder.getDefaultLicense();
@@ -1778,4 +1782,20 @@ public final class RuleClass {
public boolean outputsDefaultExecutable() {
return outputsDefaultExecutable;
}
+
+ public static boolean isThirdPartyPackage(PackageIdentifier packageIdentifier) {
+ if (!packageIdentifier.getRepository().isMain()) {
+ return false;
+ }
+
+ if (!packageIdentifier.getPackageFragment().startsWith(THIRD_PARTY_PREFIX)) {
+ return false;
+ }
+
+ if (packageIdentifier.getPackageFragment().segmentCount() <= 1) {
+ return false;
+ }
+
+ return true;
+ }
}