aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2016-07-27 16:34:27 +0000
committerGravatar Adam Michael <ajmichael@google.com>2016-07-28 18:36:29 -0400
commita1a31ff6d16811dc72df32861bd1c1a98e104f02 (patch)
treeea94d4c1e7fa41f38be174a73f618152e18f1d65 /src/main/java/com/google
parentb6b1a3f0670c7e62cec408b06a13ae02bbe1b42f (diff)
Rename some PackageId and RepositoryName fields/methods in prep for deep execroot change
This is in prep for making the execution root path for external repositories ../repo_name (instead of external/repo_name). Right now, the getRunfilesPath() returns that path, so that is renamed getExecRoot() (since the runfiles are really just a reflection of the execRoot structure). getSourceRoot() replaces getPathFragment, which has always been a confusing name (it's not clear from the name what the difference is between it and getPackageFragment()). It returns the relative path to source files for external repositories (external/repo_name). Also renamed/moved to more sensible class a few static RepositoryName fields. -- MOS_MIGRATED_REVID=128594419
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRule.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/Label.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java38
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/InputFile.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Package.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java2
28 files changed, 78 insertions, 77 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
index 2642687713..1606c0e783 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
@@ -342,7 +342,7 @@ public class ArtifactFactory implements ArtifactResolver, ArtifactSerializer, Ar
return null;
}
- RepositoryName repoName = PackageIdentifier.MAIN_REPOSITORY_NAME;
+ RepositoryName repoName = RepositoryName.MAIN;
Pair<RepositoryName, PathFragment> repo = RepositoryName.fromPathFragment(dir);
if (repo != null) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
index 3c137f915e..495d5ebdd4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
@@ -123,7 +123,7 @@ public final class AnalysisUtils {
* <p>For example "//pkg:target" -> "pkg/&lt;fragment&gt;/target.
*/
public static PathFragment getUniqueDirectory(Label label, PathFragment fragment) {
- return label.getPackageIdentifier().getPathFragment().getRelative(fragment)
+ return label.getPackageIdentifier().getSourceRoot().getRelative(fragment)
.getRelative(label.getName());
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index c6a0f4f980..dc91ecb06b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -144,7 +144,7 @@ public final class ConfiguredTargetFactory {
ArtifactOwner owner =
new ConfiguredTargetKey(rule.getLabel(), configuration.getArtifactOwnerConfiguration());
PathFragment rootRelativePath =
- outputFile.getLabel().getPackageIdentifier().getPathFragment().getRelative(
+ outputFile.getLabel().getPackageIdentifier().getSourceRoot().getRelative(
outputFile.getLabel().getName());
Artifact result = isFileset
? artifactFactory.getFilesetArtifact(rootRelativePath, root, owner)
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 48e7f98d6d..8965cb596a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -582,7 +582,7 @@ public final class RuleContext extends TargetContext
* {@link #getUniqueDirectoryArtifact(String, PathFragment, Root)}) ensures that this is the case.
*/
public PathFragment getPackageDirectory() {
- return getLabel().getPackageIdentifier().getPathFragment();
+ return getLabel().getPackageIdentifier().getSourceRoot();
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRule.java
index e906c11e17..418130b9eb 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRule.java
@@ -38,7 +38,6 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
-import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.syntax.Type;
@@ -204,7 +203,7 @@ public class GenRule implements RuleConfiguredTargetFactory {
dir = ruleContext.getConfiguration().getGenfilesFragment();
}
PathFragment relPath =
- ruleContext.getRule().getLabel().getPackageIdentifier().getPathFragment();
+ ruleContext.getRule().getLabel().getPackageIdentifier().getSourceRoot();
return dir.getRelative(relPath).getPathString();
}
} else {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java
index f82c9fef76..1e48a66bc5 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java
@@ -72,7 +72,8 @@ public class BazelPythonSemantics implements PythonSemantics {
@Override
public List<PathFragment> getImports(RuleContext ruleContext) {
List<PathFragment> result = new ArrayList<>();
- PathFragment packageFragment = ruleContext.getLabel().getPackageIdentifier().getRunfilesPath();
+ PathFragment packageFragment = ruleContext.getLabel().getPackageIdentifier()
+ .getPathUnderExecRoot();
// Python scripts start with x.runfiles/ as the module space, so everything must be manually
// adjusted to be relative to the workspace name.
packageFragment = new PathFragment(ruleContext.getWorkspaceName())
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java b/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java
index 9d57a44466..a1050ae3b3 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java
@@ -134,13 +134,13 @@ class SymlinkForest {
PackageIdentifier dir = entry.getKey();
if (!dir.getRepository().isMain()) {
FileSystemUtils.createDirectoryAndParents(
- workspace.getRelative(dir.getRepository().getPathFragment()));
+ workspace.getRelative(dir.getRepository().getSourceRoot()));
}
if (entry.getValue().size() > 1) {
if (LOG_FINER) {
- LOG.finer("mkdir " + workspace.getRelative(dir.getPathFragment()));
+ LOG.finer("mkdir " + workspace.getRelative(dir.getSourceRoot()));
}
- FileSystemUtils.createDirectoryAndParents(workspace.getRelative(dir.getPathFragment()));
+ FileSystemUtils.createDirectoryAndParents(workspace.getRelative(dir.getSourceRoot()));
}
}
@@ -157,11 +157,11 @@ class SymlinkForest {
// This is the top-most dir that can be linked to a single root. Make it so.
Path root = roots.iterator().next(); // lone root in set
if (LOG_FINER) {
- LOG.finer("ln -s " + root.getRelative(dir.getPathFragment()) + " "
- + workspace.getRelative(dir.getPathFragment()));
+ LOG.finer("ln -s " + root.getRelative(dir.getSourceRoot()) + " "
+ + workspace.getRelative(dir.getSourceRoot()));
}
- workspace.getRelative(dir.getPathFragment())
- .createSymbolicLink(root.getRelative(dir.getPathFragment()));
+ workspace.getRelative(dir.getSourceRoot())
+ .createSymbolicLink(root.getRelative(dir.getSourceRoot()));
}
}
// Make links for dirs within packages, skip parent-only dirs.
@@ -173,11 +173,11 @@ class SymlinkForest {
if (pkgId != null) {
Path root = packageRoots.get(pkgId);
try {
- Path absdir = root.getRelative(dir.getPathFragment());
+ Path absdir = root.getRelative(dir.getSourceRoot());
if (absdir.isDirectory()) {
if (LOG_FINER) {
LOG.finer("ln -s " + absdir + "/* "
- + workspace.getRelative(dir.getPathFragment()) + "/");
+ + workspace.getRelative(dir.getSourceRoot()) + "/");
}
for (Path target : absdir.getDirectoryEntries()) {
PathFragment p = target.relativeTo(root);
@@ -202,14 +202,14 @@ class SymlinkForest {
if (!pkgId.getPackageFragment().equals(PathFragment.EMPTY_FRAGMENT)) {
continue;
}
- Path execrootDirectory = workspace.getRelative(pkgId.getPathFragment());
+ Path execrootDirectory = workspace.getRelative(pkgId.getSourceRoot());
// If there were no subpackages, this directory might not exist yet.
if (!execrootDirectory.exists()) {
FileSystemUtils.createDirectoryAndParents(execrootDirectory);
}
// For the top-level directory, generate symlinks to everything in the directory instead of
// the directory itself.
- Path sourceDirectory = entry.getValue().getRelative(pkgId.getPathFragment());
+ Path sourceDirectory = entry.getValue().getRelative(pkgId.getSourceRoot());
for (Path target : sourceDirectory.getDirectoryEntries()) {
String baseName = target.getBaseName();
Path execPath = execrootDirectory.getRelative(baseName);
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 65f0ce867d..b5a699023e 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
@@ -105,7 +105,7 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkPrin
*/
public static Label parseAbsolute(String absName, boolean defaultToMain)
throws LabelSyntaxException {
- String repo = defaultToMain ? "@" : PackageIdentifier.DEFAULT_REPOSITORY;
+ String repo = defaultToMain ? "@" : RepositoryName.DEFAULT_REPOSITORY;
int packageStartPos = absName.indexOf("//");
if (packageStartPos > 0) {
repo = absName.substring(0, packageStartPos);
@@ -336,7 +336,7 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkPrin
+ "<pre class=language-python>Label(\"@repo//pkg/foo:abc\").workspace_root =="
+ " \"external/repo\"</pre>")
public String getWorkspaceRoot() {
- return packageIdentifier.getRepository().getPathFragment().toString();
+ return packageIdentifier.getRepository().getSourceRoot().toString();
}
/**
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 6445f48b32..a20ea18883 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
@@ -47,27 +47,15 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
return INTERNER.intern(new PackageIdentifier(repository, pkgName));
}
- public static final String DEFAULT_REPOSITORY = "";
- public static final RepositoryName DEFAULT_REPOSITORY_NAME;
- public static final RepositoryName MAIN_REPOSITORY_NAME;
- public static final PackageIdentifier EMPTY_PACKAGE_ID;
-
- static {
- try {
- DEFAULT_REPOSITORY_NAME = RepositoryName.create(DEFAULT_REPOSITORY);
- MAIN_REPOSITORY_NAME = RepositoryName.create("@");
- EMPTY_PACKAGE_ID = createInMainRepo(PathFragment.EMPTY_FRAGMENT);
- } catch (LabelSyntaxException e) {
- throw new IllegalStateException(e);
- }
- }
+ public static final PackageIdentifier EMPTY_PACKAGE_ID = createInMainRepo(
+ PathFragment.EMPTY_FRAGMENT);
public static PackageIdentifier createInMainRepo(String name) {
return createInMainRepo(new PathFragment(name));
}
public static PackageIdentifier createInMainRepo(PathFragment name) {
- return create(MAIN_REPOSITORY_NAME, name);
+ return create(RepositoryName.MAIN, name);
}
/**
@@ -99,10 +87,10 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
} else if (input.startsWith("@")) {
throw new LabelSyntaxException("starts with a '@' but does not contain '//'");
} else if (packageStartPos == 0) {
- repo = PackageIdentifier.DEFAULT_REPOSITORY;
+ repo = RepositoryName.DEFAULT_REPOSITORY;
packageName = input.substring(2);
} else {
- repo = PackageIdentifier.DEFAULT_REPOSITORY;
+ repo = RepositoryName.DEFAULT_REPOSITORY;
packageName = input;
}
@@ -128,19 +116,19 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
}
/**
- * Returns a relative path that should be unique across all remote and packages, based on the
- * repository and package names.
+ * Returns a relative path to the source code for this package. Returns pkgName if this is in the
+ * main repository or external/[repository name]/[pkgName] if not.
*/
- public PathFragment getPathFragment() {
- return repository.getPathFragment().getRelative(pkgName);
+ public PathFragment getSourceRoot() {
+ return repository.getSourceRoot().getRelative(pkgName);
}
/**
- * Returns the runfiles path for this repository (relative to the x.runfiles/main-repo/
+ * Returns the runfiles/execRoot path for this repository (relative to the x.runfiles/main-repo/
* directory).
*/
- public PathFragment getRunfilesPath() {
- return getRepository().getRunfilesPath().getRelative(getPackageFragment());
+ public PathFragment getPathUnderExecRoot() {
+ return getRepository().getPathUnderExecRoot().getRelative(getPackageFragment());
}
public PackageIdentifier makeAbsolute() {
@@ -148,7 +136,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
return this;
}
- return create(MAIN_REPOSITORY_NAME, pkgName);
+ return create(RepositoryName.MAIN, pkgName);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java
index 6b89a6ee7a..25332b3dcb 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java
@@ -35,6 +35,9 @@ import java.util.regex.Pattern;
* A human-readable name for the repository.
*/
public final class RepositoryName implements Serializable {
+ public static final String DEFAULT_REPOSITORY = "";
+ public static final RepositoryName DEFAULT;
+ public static final RepositoryName MAIN;
private static final Pattern VALID_REPO_NAME = Pattern.compile("@[\\w\\-.]*");
/** Helper for serializing {@link RepositoryName}. */
@@ -92,6 +95,15 @@ public final class RepositoryName implements Serializable {
}
});
+ static {
+ try {
+ DEFAULT = RepositoryName.create(RepositoryName.DEFAULT_REPOSITORY);
+ MAIN = RepositoryName.create("@");
+ } catch (LabelSyntaxException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
/**
* Makes sure that name is a valid repository name and creates a new RepositoryName using it.
*
@@ -108,7 +120,7 @@ public final class RepositoryName implements Serializable {
/**
* Extracts the repository name from a PathFragment that was created with
- * {@code PackageIdentifier.getPathFragment}.
+ * {@code PackageIdentifier.getSourceRoot}.
*
* @return a {@code Pair} of the extracted repository name and the path fragment with stripped
* of "external/"-prefix and repository name, or null if none was found or the repository name
@@ -193,20 +205,21 @@ public final class RepositoryName implements Serializable {
}
/**
- * Returns the path at which this repository is mapped within the exec root.
+ * Returns the relative path to the repository source. Returns "" for the main repository and
+ * external/[repository name] for external repositories.
*/
- public PathFragment getPathFragment() {
+ public PathFragment getSourceRoot() {
return isDefault() || isMain()
? PathFragment.EMPTY_FRAGMENT
: new PathFragment(Label.EXTERNAL_PATH_PREFIX).getRelative(strippedName());
}
/**
- * Returns the runfiles path for this repository (relative to the x.runfiles/main-repo/
+ * Returns the runfiles/execRoot path for this repository (relative to the x.runfiles/main-repo/
* directory). If we don't know the name of this repo (i.e., it is in the main repository),
* return an empty path fragment.
*/
- public PathFragment getRunfilesPath() {
+ public PathFragment getPathUnderExecRoot() {
return isDefault() || isMain()
? PathFragment.EMPTY_FRAGMENT : new PathFragment("..").getRelative(strippedName());
}
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
index 610a27e014..13e5578044 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
@@ -644,7 +644,7 @@ public abstract class TargetPattern implements Serializable {
}
if (repository == null) {
- repository = PackageIdentifier.MAIN_REPOSITORY_NAME;
+ repository = RepositoryName.MAIN;
}
if (packagePart.endsWith("/...")) {
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index a7161f811a..8f29d09ae8 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -815,7 +815,7 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
private static PathFragment getOutputFilePath(ConfiguredTarget base, RuleContext ruleContext,
String suffix) {
PathFragment packagePathFragment =
- ruleContext.getLabel().getPackageIdentifier().getPathFragment();
+ ruleContext.getLabel().getPackageIdentifier().getSourceRoot();
String name = base.getLabel().getName();
return new PathFragment(packagePathFragment, new PathFragment(name + suffix));
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/InputFile.java b/src/main/java/com/google/devtools/build/lib/packages/InputFile.java
index 228af69ee3..6f2fe22809 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/InputFile.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/InputFile.java
@@ -104,7 +104,7 @@ public final class InputFile extends FileTarget {
* Returns the exec path of the file, i.e. the path relative to the package source root.
*/
public PathFragment getExecPath() {
- return label.getPackageIdentifier().getPathFragment().getRelative(label.getName());
+ return label.getPackageIdentifier().getSourceRoot().getRelative(label.getName());
}
@Override
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 3a01bc3bf8..b05e6ae846 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
@@ -103,7 +103,7 @@ public class Package {
/**
* The root of the source tree in which this package was found. It is an invariant that
- * {@code sourceRoot.getRelative(packageId.getPathFragment()).equals(packageDirectory)}.
+ * {@code sourceRoot.getRelative(packageId.getSourceRoot()).equals(packageDirectory)}.
*/
private Path sourceRoot;
@@ -292,9 +292,9 @@ public class Package {
this.filename = builder.getFilename();
this.packageDirectory = filename.getParentDirectory();
- this.sourceRoot = getSourceRoot(filename, packageIdentifier.getPathFragment());
+ this.sourceRoot = getSourceRoot(filename, packageIdentifier.getSourceRoot());
if ((sourceRoot == null
- || !sourceRoot.getRelative(packageIdentifier.getPathFragment()).equals(packageDirectory))
+ || !sourceRoot.getRelative(packageIdentifier.getSourceRoot()).equals(packageDirectory))
&& !filename.getBaseName().equals("WORKSPACE")) {
throw new IllegalArgumentException(
"Invalid BUILD file name for package '" + packageIdentifier + "': " + filename);
@@ -345,7 +345,7 @@ public class Package {
* Returns the source root (a directory) beneath which this package's BUILD file was found.
*
* <p> Assumes invariant:
- * {@code getSourceRoot().getRelative(packageId.getPathFragment()).equals(getPackageDirectory())}
+ * {@code getSourceRoot().getRelative(packageId.getSourceRoot()).equals(getPackageDirectory())}
*/
public Path getSourceRoot() {
return sourceRoot;
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java b/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
index f00606daf4..4383505f3b 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
@@ -111,7 +111,7 @@ public class PathPackageLocator implements Serializable {
// is true for the invocation in GlobCache, but not for the locator.getBuildFileForPackage()
// invocation in Parser#include().
Path buildFile = outputBase.getRelative(
- packageIdentifier.getPathFragment()).getRelative("BUILD");
+ packageIdentifier.getSourceRoot()).getRelative("BUILD");
FileStatus stat = cache.get().statNullable(buildFile, Symlinks.FOLLOW);
if (stat != null && stat.isFile()) {
return buildFile;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index f9c5d52a5c..30eac977bd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -479,7 +479,7 @@ public class AndroidCommon {
// ones included in the binary, the path of the artifact has to be unique
// per binary and per library (not only per library).
Artifact artifact = ruleContext.getUniqueDirectoryArtifact("resource_jars",
- container.getLabel().getPackageIdentifier().getPathFragment().getRelative(artifactName),
+ container.getLabel().getPackageIdentifier().getSourceRoot().getRelative(artifactName),
ruleContext.getBinOrGenfilesDirectory());
return artifact;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java b/src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java
index 971ccf7dfb..29d9a99369 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java
@@ -164,7 +164,7 @@ public final class LocalResourceContainer {
for (TransitiveInfoCollection target : targets) {
for (Artifact file : target.getProvider(FileProvider.class).getFilesToBuild()) {
PathFragment packageFragment = file.getArtifactOwner().getLabel()
- .getPackageIdentifier().getPathFragment();
+ .getPackageIdentifier().getSourceRoot();
PathFragment packageRelativePath =
file.getRootRelativePath().relativeTo(packageFragment);
if (packageRelativePath.startsWith(assetsDir)) {
@@ -193,7 +193,7 @@ public final class LocalResourceContainer {
for (FileProvider target : targets) {
for (Artifact file : target.getFilesToBuild()) {
PathFragment packageFragment = file.getArtifactOwner().getLabel()
- .getPackageIdentifier().getPathFragment();
+ .getPackageIdentifier().getSourceRoot();
PathFragment packageRelativePath =
file.getRootRelativePath().relativeTo(packageFragment);
PathFragment resourceDir = findResourceDir(file);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index 51c2b52c4a..a428ad3a6a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -359,14 +359,14 @@ public final class CcCommon {
List<PathFragment> result = new ArrayList<>();
// The package directory of the rule contributes includes. Note that this also covers all
// non-subpackage sub-directories.
- PathFragment rulePackage = ruleContext.getLabel().getPackageIdentifier().getPathFragment();
+ PathFragment rulePackage = ruleContext.getLabel().getPackageIdentifier().getSourceRoot();
result.add(rulePackage);
// Gather up all the dirs from the rule's srcs as well as any of the srcs outputs.
if (hasAttribute("srcs", BuildType.LABEL_LIST)) {
for (TransitiveInfoCollection src :
ruleContext.getPrerequisitesIf("srcs", Mode.TARGET, FileProvider.class)) {
- PathFragment packageDir = src.getLabel().getPackageIdentifier().getPathFragment();
+ PathFragment packageDir = src.getLabel().getPackageIdentifier().getSourceRoot();
for (Artifact a : src.getProvider(FileProvider.class).getFilesToBuild()) {
result.add(packageDir);
// Attempt to gather subdirectories that might contain include files.
@@ -378,7 +378,7 @@ public final class CcCommon {
// Add in any 'includes' attribute values as relative path fragments
if (ruleContext.getRule().isAttributeValueExplicitlySpecified("includes")) {
PathFragment packageFragment = ruleContext.getLabel().getPackageIdentifier()
- .getPathFragment();
+ .getSourceRoot();
// For now, anything with an 'includes' needs a blanket declaration
result.add(packageFragment.getRelative("**"));
}
@@ -388,7 +388,7 @@ public final class CcCommon {
List<PathFragment> getSystemIncludeDirs() {
List<PathFragment> result = new ArrayList<>();
PackageIdentifier packageIdentifier = ruleContext.getLabel().getPackageIdentifier();
- PathFragment packageFragment = packageIdentifier.getPathFragment();
+ PathFragment packageFragment = packageIdentifier.getSourceRoot();
for (String includesAttr : ruleContext.attributes().get("includes", Type.STRING_LIST)) {
includesAttr = ruleContext.expandMakeVariables("includes", includesAttr);
if (includesAttr.startsWith("/")) {
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 40b1b8b7df..f5c579d1b8 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
@@ -1095,7 +1095,7 @@ public final class CcLibraryHelper {
// before the genfilesFragment to preferably pick up source files. Otherwise
// we might pick up stale generated files.
PathFragment repositoryPath =
- ruleContext.getLabel().getPackageIdentifier().getRepository().getPathFragment();
+ ruleContext.getLabel().getPackageIdentifier().getRepository().getSourceRoot();
contextBuilder.addQuoteIncludeDir(repositoryPath);
contextBuilder.addQuoteIncludeDir(
ruleContext.getConfiguration().getGenfilesFragment().getRelative(repositoryPath));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index aa138ffa24..59ec2d5374 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -355,7 +355,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
this.lipoContextCollector = cppOptions.lipoCollector;
- this.crosstoolTopPathFragment = crosstoolTop.getPackageIdentifier().getPathFragment();
+ this.crosstoolTopPathFragment = crosstoolTop.getPackageIdentifier().getSourceRoot();
try {
this.staticRuntimeLibsLabel =
@@ -1009,7 +1009,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
if (packageEndIndex != -1 && s.startsWith(PACKAGE_START)) {
String packageString = s.substring(PACKAGE_START.length(), packageEndIndex);
try {
- pathPrefix = PackageIdentifier.parse(packageString).getPathFragment();
+ pathPrefix = PackageIdentifier.parse(packageString).getSourceRoot();
} catch (LabelSyntaxException e) {
throw new InvalidConfigurationException("The package '" + packageString + "' is not valid");
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index 6700f3ba54..9233bd4d3e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -91,7 +91,7 @@ public class CppHelper {
if (stl != null) {
// TODO(bazel-team): Clean this up.
contextBuilder.addSystemIncludeDir(
- stl.getLabel().getPackageIdentifier().getPathFragment().getRelative("gcc3"));
+ stl.getLabel().getPackageIdentifier().getSourceRoot().getRelative("gcc3"));
contextBuilder.mergeDependentContext(stl.getProvider(CppCompilationContext.class));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java b/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java
index 36e2794613..e8115e813d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java
@@ -195,7 +195,7 @@ public final class ExtraActionSpec implements TransitiveInfoProvider {
}
private Artifact getRootRelativePath(String template, RuleContext ruleContext) {
- PathFragment extraActionPackageFragment = label.getPackageIdentifier().getPathFragment();
+ PathFragment extraActionPackageFragment = label.getPackageIdentifier().getSourceRoot();
PathFragment extraActionPrefix = extraActionPackageFragment.getRelative(label.getName());
PathFragment rootRelativePath = new PathFragment("extra_actions")
.getRelative(extraActionPrefix)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
index 92aac6f623..c2ad7d91d8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
@@ -121,7 +121,7 @@ public class Filegroup implements RuleConfiguredTargetFactory {
if (attr.isEmpty()) {
return PathFragment.EMPTY_FRAGMENT;
} else {
- return ruleContext.getLabel().getPackageIdentifier().getPathFragment().getRelative(attr);
+ return ruleContext.getLabel().getPackageIdentifier().getSourceRoot().getRelative(attr);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java b/src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java
index 37271b8b48..3331115052 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java
@@ -111,7 +111,7 @@ public final class Jvm extends BuildConfiguration.Fragment {
if (jvmLabel == null || jvmLabel.getPackageIdentifier().getRepository().isMain()) {
return getJavaExecutable();
}
- return jvmLabel.getPackageIdentifier().getRepository().getRunfilesPath().getRelative(BIN_JAVA);
+ return jvmLabel.getPackageIdentifier().getRepository().getPathUnderExecRoot().getRelative(BIN_JAVA);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java b/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
index 89104f9d0e..c127140e1e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
@@ -129,7 +129,7 @@ public final class JvmConfigurationLoader implements ConfigurationFragmentFactor
if (jvmTarget.getLabel().getPackageIdentifier().getRepository().isDefault()) {
javaHomePath = jvmLabel.getPackageFragment();
} else {
- javaHomePath = jvmTarget.getLabel().getPackageIdentifier().getPathFragment();
+ javaHomePath = jvmTarget.getLabel().getPackageIdentifier().getSourceRoot();
}
if ((jvmTarget instanceof Rule) &&
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java
index f41b101c2f..3e15538b79 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java
@@ -315,7 +315,7 @@ final class CompilationAttributes {
builder.addModuleMapsForDirectDeps(moduleMaps.build());
PathFragment packageFragment =
- ruleContext.getLabel().getPackageIdentifier().getPathFragment();
+ ruleContext.getLabel().getPackageIdentifier().getSourceRoot();
if (packageFragment != null) {
builder.setPackageFragment(packageFragment);
}
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 ad2f501612..00d0300336 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
@@ -845,8 +845,8 @@ public class PackageFunction implements SkyFunction {
// The label does not cross a subpackage boundary.
return false;
}
- if (!containingPkg.getPathFragment().startsWith(
- label.getPackageIdentifier().getPathFragment())) {
+ if (!containingPkg.getSourceRoot().startsWith(
+ label.getPackageIdentifier().getSourceRoot())) {
// This label is referencing an imaginary package, because the containing package should
// extend the label's package: if the label is //a/b:c/d, the containing package could be
// //a/b/c or //a/b, but should never be //a. Usually such errors will be caught earlier, but
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java
index 604ef07b0c..7ebb7b0018 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java
@@ -74,7 +74,7 @@ class SkyframePackageLoaderWithValueEnvironment implements PackageProviderForCon
@Override
public void addDependency(Package pkg, String fileName) throws LabelSyntaxException, IOException {
RootedPath fileRootedPath = RootedPath.toRootedPath(pkg.getSourceRoot(),
- pkg.getPackageIdentifier().getPathFragment().getRelative(fileName));
+ pkg.getPackageIdentifier().getSourceRoot().getRelative(fileName));
FileValue result = (FileValue) env.getValue(FileValue.key(fileRootedPath));
if (result != null && !result.exists()) {
throw new IOException();