aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2016-09-09 14:10:44 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-09-09 14:18:25 +0000
commitbd016c982da39d86f20e080eaf448828d05648fa (patch)
tree42e63d0ef2625de149a056a0165355f9e84dfb32 /src/main/java/com/google
parentd07177d0e628bd86a212eb6b68da2de2b02572fa (diff)
Make the code that is using execRoot paths use execRoot paths
Chipping away at making the big CL for #1262 smaller. Only runfiles paths are different right now, so this makes getPathUnderExecRoot and getSourceRoot return the same thing. Also corrected a couple places where Label.EXTERNAL_PATH_PREFIX and Label.EXTERNAL_PACKAGE_NAME were being used incorrectly. -- MOS_MIGRATED_REVID=132671081
Diffstat (limited to 'src/main/java/com/google')
-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.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java9
-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.java2
-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/java/Jvm.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java2
11 files changed, 38 insertions, 27 deletions
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 80f9a58b4b..3d86e63e58 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
@@ -83,8 +83,7 @@ public class BazelPythonSemantics implements PythonSemantics {
@Override
public List<PathFragment> getImports(RuleContext ruleContext) {
List<PathFragment> result = new ArrayList<>();
- PathFragment packageFragment = ruleContext.getLabel().getPackageIdentifier()
- .getPathUnderExecRoot();
+ PathFragment packageFragment = ruleContext.getLabel().getPackageIdentifier().getRunfilesPath();
// 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 a1050ae3b3..44cf5f196e 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,14 @@ class SymlinkForest {
PackageIdentifier dir = entry.getKey();
if (!dir.getRepository().isMain()) {
FileSystemUtils.createDirectoryAndParents(
- workspace.getRelative(dir.getRepository().getSourceRoot()));
+ workspace.getRelative(dir.getRepository().getPathUnderExecRoot()));
}
if (entry.getValue().size() > 1) {
if (LOG_FINER) {
- LOG.finer("mkdir " + workspace.getRelative(dir.getSourceRoot()));
+ LOG.finer("mkdir " + workspace.getRelative(dir.getPathUnderExecRoot()));
}
- FileSystemUtils.createDirectoryAndParents(workspace.getRelative(dir.getSourceRoot()));
+ FileSystemUtils.createDirectoryAndParents(
+ workspace.getRelative(dir.getPathUnderExecRoot()));
}
}
@@ -158,9 +159,9 @@ class SymlinkForest {
Path root = roots.iterator().next(); // lone root in set
if (LOG_FINER) {
LOG.finer("ln -s " + root.getRelative(dir.getSourceRoot()) + " "
- + workspace.getRelative(dir.getSourceRoot()));
+ + workspace.getRelative(dir.getPathUnderExecRoot()));
}
- workspace.getRelative(dir.getSourceRoot())
+ workspace.getRelative(dir.getPathUnderExecRoot())
.createSymbolicLink(root.getRelative(dir.getSourceRoot()));
}
}
@@ -202,7 +203,7 @@ class SymlinkForest {
if (!pkgId.getPackageFragment().equals(PathFragment.EMPTY_FRAGMENT)) {
continue;
}
- Path execrootDirectory = workspace.getRelative(pkgId.getSourceRoot());
+ Path execrootDirectory = workspace.getRelative(pkgId.getPathUnderExecRoot());
// If there were no subpackages, this directory might not exist yet.
if (!execrootDirectory.exists()) {
FileSystemUtils.createDirectoryAndParents(execrootDirectory);
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 a20ea18883..905866f077 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
@@ -123,12 +123,16 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
return repository.getSourceRoot().getRelative(pkgName);
}
+ public PathFragment getPathUnderExecRoot() {
+ return getSourceRoot();
+ }
+
/**
* Returns the runfiles/execRoot path for this repository (relative to the x.runfiles/main-repo/
* directory).
*/
- public PathFragment getPathUnderExecRoot() {
- return getRepository().getPathUnderExecRoot().getRelative(getPackageFragment());
+ public PathFragment getRunfilesPath() {
+ return repository.getRunfilesPath().getRelative(pkgName);
}
public PackageIdentifier makeAbsolute() {
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 25332b3dcb..ba0f6b407b 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
@@ -210,16 +210,24 @@ public final class RepositoryName implements Serializable {
*/
public PathFragment getSourceRoot() {
return isDefault() || isMain()
+ ? PathFragment.EMPTY_FRAGMENT : Label.EXTERNAL_PACKAGE_NAME.getRelative(strippedName());
+ }
+
+ /**
+ * Returns the runfiles/execRoot path for this repository. 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 getPathUnderExecRoot() {
+ return isDefault() || isMain()
? PathFragment.EMPTY_FRAGMENT
: new PathFragment(Label.EXTERNAL_PATH_PREFIX).getRelative(strippedName());
}
/**
- * 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.
+ * Returns the runfiles path relative to the x.runfiles/main-repo directory.
*/
- public PathFragment getPathUnderExecRoot() {
+ // TODO(kchodorow): remove once execroot is reorg-ed.
+ public PathFragment getRunfilesPath() {
return isDefault() || isMain()
? PathFragment.EMPTY_FRAGMENT : new PathFragment("..").getRelative(strippedName());
}
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 a02a0038d0..c7f11d8f29 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
@@ -357,14 +357,15 @@ 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().getSourceRoot();
+ PathFragment rulePackage = ruleContext.getLabel().getPackageIdentifier()
+ .getPathUnderExecRoot();
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().getSourceRoot();
+ PathFragment packageDir = src.getLabel().getPackageIdentifier().getPathUnderExecRoot();
for (Artifact a : src.getProvider(FileProvider.class).getFilesToBuild()) {
result.add(packageDir);
// Attempt to gather subdirectories that might contain include files.
@@ -376,7 +377,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()
- .getSourceRoot();
+ .getPathUnderExecRoot();
// For now, anything with an 'includes' needs a blanket declaration
result.add(packageFragment.getRelative("**"));
}
@@ -386,7 +387,7 @@ public final class CcCommon {
List<PathFragment> getSystemIncludeDirs() {
List<PathFragment> result = new ArrayList<>();
PackageIdentifier packageIdentifier = ruleContext.getLabel().getPackageIdentifier();
- PathFragment packageFragment = packageIdentifier.getSourceRoot();
+ PathFragment packageFragment = packageIdentifier.getPathUnderExecRoot();
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 6de8ad144d..70d74afcb3 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
@@ -1098,7 +1098,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().getSourceRoot();
+ ruleContext.getLabel().getPackageIdentifier().getRepository().getPathUnderExecRoot();
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 d076040987..471815a2bd 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
@@ -358,7 +358,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
this.lipoContextCollector = cppOptions.lipoCollector;
- this.crosstoolTopPathFragment = crosstoolTop.getPackageIdentifier().getSourceRoot();
+ this.crosstoolTopPathFragment = crosstoolTop.getPackageIdentifier().getPathUnderExecRoot();
try {
this.staticRuntimeLibsLabel =
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 ee2b08d68a..49eefe9413 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
@@ -88,7 +88,7 @@ public class CppHelper {
if (stl != null) {
// TODO(bazel-team): Clean this up.
contextBuilder.addSystemIncludeDir(
- stl.getLabel().getPackageIdentifier().getSourceRoot().getRelative("gcc3"));
+ stl.getLabel().getPackageIdentifier().getPathUnderExecRoot().getRelative("gcc3"));
contextBuilder.mergeDependentContext(stl.getProvider(CppCompilationContext.class));
}
}
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 3331115052..37271b8b48 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().getPathUnderExecRoot().getRelative(BIN_JAVA);
+ return jvmLabel.getPackageIdentifier().getRepository().getRunfilesPath().getRelative(BIN_JAVA);
}
@Override
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 cb01f3120c..4e6628d482 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
@@ -347,10 +347,8 @@ public abstract class RepositoryFunction {
return value;
}
- public static Path getExternalRepositoryDirectory(BlazeDirectories directories) {
- return directories
- .getOutputBase()
- .getRelative(Label.EXTERNAL_PATH_PREFIX);
+ protected static Path getExternalRepositoryDirectory(BlazeDirectories directories) {
+ return directories.getOutputBase().getRelative(Label.EXTERNAL_PACKAGE_NAME);
}
/**
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 b1b6259e90..664cf9888a 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
@@ -137,7 +137,7 @@ public class ExternalFilesHelper {
return FileType.EXTERNAL_MUTABLE;
}
if (rootedPath.asPath().startsWith(outputBase)) {
- Path externalRepoDir = outputBase.getRelative(Label.EXTERNAL_PATH_PREFIX);
+ Path externalRepoDir = outputBase.getRelative(Label.EXTERNAL_PACKAGE_NAME);
if (rootedPath.asPath().startsWith(externalRepoDir)) {
anyNonOutputExternalFilesSeen = true;
return FileType.EXTERNAL_REPO;