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
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 2642687..1606c0e 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 @@ 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 3c137f9..495d5eb 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 @@ * <p>For example "//pkg:target" -> "pkg/<fragment>/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 c6a0f4f..dc91ecb 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 @@ 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 48e7f98..8965cb5 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 @@ * {@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 e906c11..418130b 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.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 @@ 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 f82c9fe..1e48a66 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 @@ @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 9d57a44..a1050ae 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 @@ 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 @@ // 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 @@ 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 @@ 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 65f0ce8..b5a6990 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 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 @@ + "<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 6445f48..a20ea18 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 @@ 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 @@ } 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 @@ } /** - * 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 @@ 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 6b89a6e..25332b3 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 @@ * 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 @@ } }); + 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 @@ /** * 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 @@ } /** - * 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 610a27e..13e5578 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 @@ } 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 a7161f8..8f29d09 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 @@ 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 228af69..6f2fe22 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 @@ * 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 3a01bc3..b05e6ae 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 @@ /** * 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 @@ 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 @@ * 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 f00606d..4383505 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 @@ // 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 f9c5d52..30eac97 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 @@ // 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 971ccf7..29d9a99 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 @@ 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 @@ 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 51c2b52..a428ad3 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 @@ 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 @@ // 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 @@ 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 40b1b8b..f5c579d 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 @@ // 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 aa138ff..59ec2d5 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 @@ this.lipoContextCollector = cppOptions.lipoCollector; - this.crosstoolTopPathFragment = crosstoolTop.getPackageIdentifier().getPathFragment(); + this.crosstoolTopPathFragment = crosstoolTop.getPackageIdentifier().getSourceRoot(); try { this.staticRuntimeLibsLabel = @@ -1009,7 +1009,7 @@ 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 6700f3b..9233bd4 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 @@ 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 36e2794..e8115e8 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 @@ } 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 92aac6f..c2ad7d9 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 @@ 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 37271b8..3331115 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 @@ 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 89104f9..c127140 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 @@ 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 f41b101..3e15538 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 @@ 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 ad2f501..00d0300 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 @@ // 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 604ef07..7ebb7b0 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 @@ @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();