aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-12-10 11:34:29 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-12-10 12:41:41 +0000
commite19ee2743966069c6dcce375fe89b07835c34723 (patch)
tree076446231d61b7467fe20fb620bc022d140cb309 /src
parentd4b78d0f7c2d3e6714f82538eca30e2414e97fdc (diff)
Shuffle around all the constants related to the name of the //external package and the prefix of external packages in the execroot.
This is in preparation for renaming that path segment from "external" to "bazel-external" so that we can provide a symlink to it from the source tree so that the source tree looks like the execroot. -- MOS_MIGRATED_REVID=109882753
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/Label.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Package.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java2
11 files changed, 38 insertions, 41 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index c1ff11f122..c10c410a7e 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -125,7 +125,6 @@ import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule;
import com.google.devtools.build.lib.rules.repository.NewLocalRepositoryRule;
import com.google.devtools.build.lib.rules.repository.WorkspaceBaseRule;
import com.google.devtools.build.lib.util.ResourceFileLoader;
-import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
@@ -133,8 +132,6 @@ import java.io.IOException;
* A rule class provider implementing the rules Bazel knows.
*/
public class BazelRuleClassProvider {
- private static final PathFragment EXTERNAL = new PathFragment("external");
-
/**
* Used by the build encyclopedia generator.
*/
@@ -163,7 +160,7 @@ public class BazelRuleClassProvider {
private void validateDirectPrerequisiteVisibility(
RuleContext.Builder context, ConfiguredTarget prerequisite, String attrName) {
Rule rule = context.getRule();
- if (rule.getLabel().getPackageFragment().equals(EXTERNAL)) {
+ if (rule.getLabel().getPackageFragment().equals(Label.EXTERNAL_PACKAGE_NAME)) {
// //external: labels are special. They have access to everything and visibility is checked
// at the edge that points to the //external: label.
return;
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index b3b31f42a1..ef5d9f465d 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -41,7 +41,12 @@ import java.io.Serializable;
@SkylarkModule(name = "Label", doc = "A BUILD target identifier.")
@Immutable @ThreadSafe
public final class Label implements Comparable<Label>, Serializable, SkylarkPrintableValue {
- private static final PathFragment EXTERNAL = new PathFragment("external");
+ public static final PathFragment EXTERNAL_PACKAGE_NAME = new PathFragment("external");
+
+ public static final PackageIdentifier EXTERNAL_PACKAGE_IDENTIFIER =
+ PackageIdentifier.createInDefaultRepo(EXTERNAL_PACKAGE_NAME);
+
+ public static final String EXTERNAL_PATH_PREFIX = "external";
/**
* Factory for Labels from absolute string form. e.g.
@@ -380,7 +385,7 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkPrin
if (packageIdentifier.getRepository().isDefault()
|| !relative.packageIdentifier.getRepository().isDefault()
- || relative.packageIdentifier.getPackageFragment().equals(EXTERNAL)) {
+ || relative.packageIdentifier.getPackageFragment().equals(EXTERNAL_PACKAGE_NAME)) {
return relative;
} else {
try {
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
index e992366f22..7ce70db0a1 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
@@ -48,10 +48,10 @@ import javax.annotation.concurrent.Immutable;
*/
@Immutable
public final class PackageIdentifier implements Comparable<PackageIdentifier>, Serializable {
- public static final String EXTERNAL_PREFIX = "external";
private static final Interner<PackageIdentifier> INTERNER = Interners.newWeakInterner();
+
public static PackageIdentifier create(String repository, PathFragment pkgName)
throws LabelSyntaxException {
return create(RepositoryName.create(repository), pkgName);
@@ -145,7 +145,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
* was invalid.
*/
public static Pair<RepositoryName, PathFragment> fromPathFragment(PathFragment path) {
- if (path.segmentCount() < 2 || !path.getSegment(0).equals(EXTERNAL_PREFIX)) {
+ if (path.segmentCount() < 2 || !path.getSegment(0).equals(Label.EXTERNAL_PATH_PREFIX)) {
return null;
}
try {
@@ -221,7 +221,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
public PathFragment getPathFragment() {
return isDefault()
? PathFragment.EMPTY_FRAGMENT
- : new PathFragment(EXTERNAL_PREFIX).getRelative(strippedName());
+ : new PathFragment(Label.EXTERNAL_PATH_PREFIX).getRelative(strippedName());
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java
index 2eaa945461..3fe711c1da 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.packages;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.BuildType.SelectorList;
@@ -32,8 +33,12 @@ import javax.annotation.Nullable;
*/
public abstract class AbstractAttributeMapper implements AttributeMap {
- private static final PathFragment VISIBILITY = new PathFragment("visibility");
- private static final PathFragment EXTERNAL = new PathFragment("external");
+ /**
+ * Package names that aren't made relative to the current repository because they mean special
+ * things to Bazel.
+ */
+ private static final ImmutableSet<PathFragment> ABSOLUTE_PACKAGE_NAMES = ImmutableSet.of(
+ new PathFragment("visibility"), Label.EXTERNAL_PACKAGE_NAME);
private final Package pkg;
private final RuleClass ruleClass;
@@ -168,8 +173,7 @@ public abstract class AbstractAttributeMapper implements AttributeMap {
// generally tools, which go to the main repository.
absoluteLabel = label;
} else if (label.getPackageIdentifier().getRepository().isDefault()
- && (VISIBILITY.equals(label.getPackageIdentifier().getPackageFragment())
- || EXTERNAL.equals(label.getPackageIdentifier().getPackageFragment()))) {
+ && ABSOLUTE_PACKAGE_NAMES.contains(label.getPackageIdentifier().getPackageFragment())) {
// //visibility: and //external: labels must also be special-cased :(
absoluteLabel = label;
} else {
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 a9ad155b11..4dcd817937 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
@@ -61,16 +61,6 @@ import java.util.Set;
*/
public class Package {
- public static PackageIdentifier EXTERNAL_PACKAGE_IDENTIFIER;
-
- static {
- try {
- Package.EXTERNAL_PACKAGE_IDENTIFIER = PackageIdentifier.parse("//external");
- } catch (LabelSyntaxException e) {
- throw new IllegalStateException();
- }
- }
-
/**
* Common superclass for all name-conflict exceptions.
*/
@@ -728,7 +718,7 @@ public class Package {
}
public static LegacyBuilder newExternalPackageBuilder(Path workspacePath, String runfilesPrefix) {
- LegacyBuilder b = new LegacyBuilder(EXTERNAL_PACKAGE_IDENTIFIER, runfilesPrefix);
+ LegacyBuilder b = new LegacyBuilder(Label.EXTERNAL_PACKAGE_IDENTIFIER, runfilesPrefix);
b.setFilename(workspacePath);
b.setMakeEnv(new MakeEnvironment.Builder());
return b;
@@ -811,7 +801,7 @@ public class Package {
/** Determine if we are in the WORKSPACE file or not */
public boolean isWorkspace() {
- return pkg.getPackageIdentifier().equals(EXTERNAL_PACKAGE_IDENTIFIER);
+ return pkg.getPackageIdentifier().equals(Label.EXTERNAL_PACKAGE_IDENTIFIER);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java
index d13ca101a2..44e0eb9a3e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.lib.rules.repository;
import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.RuleDefinition;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
@@ -369,7 +370,7 @@ public abstract class RepositoryFunction {
@Nullable
public static Package getExternalPackage(Environment env)
throws RepositoryFunctionException {
- SkyKey packageKey = PackageValue.key(Package.EXTERNAL_PACKAGE_IDENTIFIER);
+ SkyKey packageKey = PackageValue.key(Label.EXTERNAL_PACKAGE_IDENTIFIER);
PackageValue packageValue;
try {
packageValue = (PackageValue) env.getValueOrThrow(packageKey,
@@ -377,7 +378,7 @@ public abstract class RepositoryFunction {
} catch (NoSuchPackageException e) {
throw new RepositoryFunctionException(
new BuildFileNotFoundException(
- Package.EXTERNAL_PACKAGE_IDENTIFIER, "Could not load //external package"),
+ Label.EXTERNAL_PACKAGE_IDENTIFIER, "Could not load //external package"),
Transience.PERSISTENT);
}
if (packageValue == null) {
@@ -388,7 +389,7 @@ public abstract class RepositoryFunction {
if (externalPackage.containsErrors()) {
throw new RepositoryFunctionException(
new BuildFileContainsErrorsException(
- Package.EXTERNAL_PACKAGE_IDENTIFIER, "Could not load //external package"),
+ Label.EXTERNAL_PACKAGE_IDENTIFIER, "Could not load //external package"),
Transience.PERSISTENT);
}
return externalPackage;
@@ -425,7 +426,7 @@ public abstract class RepositoryFunction {
if (rule == null) {
throw new RepositoryFunctionException(
new BuildFileContainsErrorsException(
- Package.EXTERNAL_PACKAGE_IDENTIFIER,
+ Label.EXTERNAL_PACKAGE_IDENTIFIER,
"The repository named '" + repositoryName + "' could not be resolved"),
Transience.PERSISTENT);
}
@@ -469,7 +470,7 @@ public abstract class RepositoryFunction {
public static Path getExternalRepositoryDirectory(BlazeDirectories directories) {
return directories
.getOutputBase()
- .getRelative(Package.EXTERNAL_PACKAGE_IDENTIFIER.getPackageFragment());
+ .getRelative(Label.EXTERNAL_PATH_PREFIX);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
index f21e4ca0c9..59bc07faaa 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
@@ -14,7 +14,7 @@
package com.google.devtools.build.lib.skyframe;
import com.google.common.base.Preconditions;
-import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
@@ -92,7 +92,7 @@ public class ExternalFilesHelper {
// files is small.
// TODO(kchodorow): check that the path is under output_base/external before adding the dep.
PackageValue pkgValue = (PackageValue) env.getValue(PackageValue.key(
- PackageIdentifier.createInDefaultRepo(PackageIdentifier.EXTERNAL_PREFIX)));
+ Label.EXTERNAL_PACKAGE_IDENTIFIER));
if (pkgValue == null) {
return;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
index ce1b4c3a20..34b4907f30 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
@@ -394,10 +394,10 @@ public class PackageFunction implements SkyFunction {
}
}
- if (packageId.equals(Package.EXTERNAL_PACKAGE_IDENTIFIER)) {
+ if (packageId.equals(Label.EXTERNAL_PACKAGE_IDENTIFIER)) {
return getExternalPackage(env, packageLookupValue.getRoot());
}
- SkyKey externalPackageKey = PackageValue.key(Package.EXTERNAL_PACKAGE_IDENTIFIER);
+ SkyKey externalPackageKey = PackageValue.key(Label.EXTERNAL_PACKAGE_IDENTIFIER);
PackageValue externalPackage = (PackageValue) env.getValue(externalPackageKey);
if (externalPackage == null) {
return null;
@@ -405,7 +405,7 @@ public class PackageFunction implements SkyFunction {
Package externalPkg = externalPackage.getPackage();
if (externalPkg.containsErrors()) {
throw new PackageFunctionException(
- new BuildFileContainsErrorsException(Package.EXTERNAL_PACKAGE_IDENTIFIER),
+ new BuildFileContainsErrorsException(Label.EXTERNAL_PACKAGE_IDENTIFIER),
Transience.PERSISTENT);
}
@@ -947,7 +947,7 @@ public class PackageFunction implements SkyFunction {
private static class BadWorkspaceFileException extends NoSuchPackageException {
private BadWorkspaceFileException(String message) {
super(
- Package.EXTERNAL_PACKAGE_IDENTIFIER,
+ Label.EXTERNAL_PACKAGE_IDENTIFIER,
"Error encountered while dealing with the WORKSPACE file: " + message);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
index 36350f5c31..9a53dd317b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
@@ -14,11 +14,11 @@
package com.google.devtools.build.lib.skyframe;
import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelValidator;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.packages.BuildFileNotFoundException;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
-import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.vfs.Path;
@@ -57,7 +57,7 @@ public class PackageLookupFunction implements SkyFunction {
if (!packageKey.getRepository().equals(PackageIdentifier.MAIN_REPOSITORY_NAME)
&& !packageKey.getRepository().isDefault()) {
return computeExternalPackageLookupValue(skyKey, env, packageKey);
- } else if (packageKey.equals(Package.EXTERNAL_PACKAGE_IDENTIFIER)) {
+ } else if (packageKey.equals(Label.EXTERNAL_PACKAGE_IDENTIFIER)) {
return computeWorkspaceLookupValue(env, packageKey);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
index a1bb468638..84db2d3c8f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.skyframe;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Package.LegacyBuilder;
import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.RuleClassProvider;
@@ -106,7 +106,7 @@ public class WorkspaceFileFunction implements SkyFunction {
// Load skylark imports
PackageFunction.SkylarkImportResult importResult;
importResult = PackageFunction.fetchImportsFromBuildFile(repoWorkspace,
- PackageIdentifier.createInDefaultRepo("external"),
+ Label.EXTERNAL_PACKAGE_IDENTIFIER,
parser.getBuildFileAST(),
skyEnvironment,
null);
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
index 4c25cbefeb..9c213b29df 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
@@ -161,7 +161,7 @@ public class RuleFactoryTest extends PackageLoadingTestCase {
public void testBuildRuleFailsInWorkspaceFile() throws Exception {
Path myPkgPath = scratch.resolve("/foo/workspace/WORKSPACE");
Package.Builder pkgBuilder =
- new Package.Builder(Package.EXTERNAL_PACKAGE_IDENTIFIER, "TESTING")
+ new Package.Builder(Label.EXTERNAL_PACKAGE_IDENTIFIER, "TESTING")
.setFilename(myPkgPath)
.setMakeEnv(new MakeEnvironment.Builder());