aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar dmarting <dmarting@google.com>2017-05-02 14:23:36 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-05-02 15:44:33 +0200
commit7beadb7277453efec7e12b925005e7f0e003b592 (patch)
treeab5ebab351566289fb5f0f1f44023c8b038f40e9 /src/main/java/com/google/devtools/build
parentadb15a606e42dc4feac03353c8b2587c5d3c78c6 (diff)
Automated g4 rollback of commit 38b835097f9ae9a6062172b8a33ec2e2d1edde20.
*** Reason for rollback *** Breaking Bazel build on linux, see http://ci.bazel.io/job/bazel-tests/733/ Repro: bazel build //src/test/java/com/google/devtools/build/lib:packages_test Found by bisecting. *** Original change description *** Only allocate some formerly frequently allocated PathFragment objects once. This reduces both gc churn and retained memory usage. RELNOTES: None PiperOrigin-RevId: 154821457
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/Artifact.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java71
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/Label.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/repository/LocalRepositoryFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java14
19 files changed, 44 insertions, 104 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
index 74c7682f09..7c6a87087b 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
@@ -543,7 +543,8 @@ public class Artifact
*/
public final PathFragment getRunfilesPath() {
PathFragment relativePath = rootRelativePath;
- if (relativePath.startsWith(Label.EXTERNAL_PATH_PREFIX)) {
+ if (relativePath.segmentCount() > 1
+ && relativePath.getSegment(0).equals(Label.EXTERNAL_PATH_PREFIX)) {
// Turn external/repo/foo into ../repo/foo.
relativePath = relativePath.relativeTo(Label.EXTERNAL_PATH_PREFIX);
relativePath = PathFragment.create("..").getRelative(relativePath);
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 681c88b45a..f47b38d006 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
@@ -1260,18 +1260,7 @@ public final class RuleContext extends TargetContext
* <p>For example "pkg/dir/name" -> "pkg/&lt;fragment>/rule/dir/name.
*/
public final PathFragment getUniqueDirectory(String fragment) {
- return getUniqueDirectory(PathFragment.create(fragment));
- }
-
- /**
- * Returns a path fragment qualified by the rule name and unique fragment to
- * disambiguate artifacts produced from the source file appearing in
- * multiple rules.
- *
- * <p>For example "pkg/dir/name" -> "pkg/&lt;fragment>/rule/dir/name.
- */
- public final PathFragment getUniqueDirectory(PathFragment fragment) {
- return AnalysisUtils.getUniqueDirectory(getLabel(), fragment);
+ return AnalysisUtils.getUniqueDirectory(getLabel(), PathFragment.create(fragment));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 3273a6d3e6..9e11f94270 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -1168,7 +1168,7 @@ public final class BuildConfiguration {
INCLUDE(BlazeDirectories.RELATIVE_INCLUDE_DIR),
OUTPUT(false);
- private final PathFragment nameFragment;
+ private final String name;
private final boolean middleman;
/**
@@ -1177,12 +1177,12 @@ public final class BuildConfiguration {
* @param isMiddleman whether the root should be a middleman root or a "normal" derived root.
*/
OutputDirectory(boolean isMiddleman) {
- this.nameFragment = PathFragment.EMPTY_FRAGMENT;
+ this.name = "";
this.middleman = isMiddleman;
}
OutputDirectory(String name) {
- this.nameFragment = PathFragment.create(name);
+ this.name = name;
this.middleman = false;
}
@@ -1198,28 +1198,15 @@ public final class BuildConfiguration {
}
// e.g., [[execroot/repo1]/bazel-out/config/bin]
return INTERNER.intern(
- Root.asDerivedRoot(
- execRoot,
- outputDir.getRelative(nameFragment),
- repositoryName.isMain()));
+ Root.asDerivedRoot(execRoot, outputDir.getRelative(name), repositoryName.isMain()));
}
}
- private final BlazeDirectories directories;
- private final String outputDirName;
-
- // We intern the roots for non-main repositories, so we don't keep around thousands of copies of
- // the same root.
+ // "Cache" of roots, so we don't keep around thousands of copies of the same root.
private static Interner<Root> INTERNER = Interners.newWeakInterner();
- // We precompute the roots for the main repository, since that's the common case.
- private final Root outputDirectoryForMainRepository;
- private final Root binDirectoryForMainRepository;
- private final Root includeDirectoryForMainRepository;
- private final Root genfilesDirectoryForMainRepository;
- private final Root coverageDirectoryForMainRepository;
- private final Root testlogsDirectoryForMainRepository;
- private final Root middlemanDirectoryForMainRepository;
+ private final BlazeDirectories directories;
+ private final String outputDirName;
/** If false, AnalysisEnviroment doesn't register any actions created by the ConfiguredTarget. */
private final boolean actionsEnabled;
@@ -1457,22 +1444,6 @@ public final class BuildConfiguration {
this.mnemonic = buildMnemonic();
this.outputDirName = (options.outputDirectoryName != null)
? options.outputDirectoryName : mnemonic;
-
- this.outputDirectoryForMainRepository =
- OutputDirectory.OUTPUT.getRoot(RepositoryName.MAIN, outputDirName, directories);
- this.binDirectoryForMainRepository =
- OutputDirectory.BIN.getRoot(RepositoryName.MAIN, outputDirName, directories);
- this.includeDirectoryForMainRepository =
- OutputDirectory.INCLUDE.getRoot(RepositoryName.MAIN, outputDirName, directories);
- this.genfilesDirectoryForMainRepository =
- OutputDirectory.GENFILES.getRoot(RepositoryName.MAIN, outputDirName, directories);
- this.coverageDirectoryForMainRepository =
- OutputDirectory.COVERAGE.getRoot(RepositoryName.MAIN, outputDirName, directories);
- this.testlogsDirectoryForMainRepository =
- OutputDirectory.TESTLOGS.getRoot(RepositoryName.MAIN, outputDirName, directories);
- this.middlemanDirectoryForMainRepository =
- OutputDirectory.MIDDLEMAN.getRoot(RepositoryName.MAIN, outputDirName, directories);
-
this.platformName = buildPlatformName();
this.shellExecutable = computeShellExecutable();
@@ -2097,9 +2068,7 @@ public final class BuildConfiguration {
* Returns the output directory for this build configuration.
*/
public Root getOutputDirectory(RepositoryName repositoryName) {
- return repositoryName.equals(RepositoryName.MAIN)
- ? outputDirectoryForMainRepository
- : OutputDirectory.OUTPUT.getRoot(repositoryName, outputDirName, directories);
+ return OutputDirectory.OUTPUT.getRoot(repositoryName, outputDirName, directories);
}
/**
@@ -2118,9 +2087,7 @@ public final class BuildConfiguration {
* repositories (external) but will need to be fixed.
*/
public Root getBinDirectory(RepositoryName repositoryName) {
- return repositoryName.equals(RepositoryName.MAIN)
- ? binDirectoryForMainRepository
- : OutputDirectory.BIN.getRoot(repositoryName, outputDirName, directories);
+ return OutputDirectory.BIN.getRoot(repositoryName, outputDirName, directories);
}
/**
@@ -2134,9 +2101,7 @@ public final class BuildConfiguration {
* Returns the include directory for this build configuration.
*/
public Root getIncludeDirectory(RepositoryName repositoryName) {
- return repositoryName.equals(RepositoryName.MAIN)
- ? includeDirectoryForMainRepository
- : OutputDirectory.INCLUDE.getRoot(repositoryName, outputDirName, directories);
+ return OutputDirectory.INCLUDE.getRoot(repositoryName, outputDirName, directories);
}
/**
@@ -2149,9 +2114,7 @@ public final class BuildConfiguration {
}
public Root getGenfilesDirectory(RepositoryName repositoryName) {
- return repositoryName.equals(RepositoryName.MAIN)
- ? genfilesDirectoryForMainRepository
- : OutputDirectory.GENFILES.getRoot(repositoryName, outputDirName, directories);
+ return OutputDirectory.GENFILES.getRoot(repositoryName, outputDirName, directories);
}
/**
@@ -2160,18 +2123,14 @@ public final class BuildConfiguration {
* needed for Jacoco's coverage reporting tools.
*/
public Root getCoverageMetadataDirectory(RepositoryName repositoryName) {
- return repositoryName.equals(RepositoryName.MAIN)
- ? coverageDirectoryForMainRepository
- : OutputDirectory.COVERAGE.getRoot(repositoryName, outputDirName, directories);
+ return OutputDirectory.COVERAGE.getRoot(repositoryName, outputDirName, directories);
}
/**
* Returns the testlogs directory for this build configuration.
*/
public Root getTestLogsDirectory(RepositoryName repositoryName) {
- return repositoryName.equals(RepositoryName.MAIN)
- ? testlogsDirectoryForMainRepository
- : OutputDirectory.TESTLOGS.getRoot(repositoryName, outputDirName, directories);
+ return OutputDirectory.TESTLOGS.getRoot(repositoryName, outputDirName, directories);
}
/**
@@ -2198,9 +2157,7 @@ public final class BuildConfiguration {
* Returns the internal directory (used for middlemen) for this build configuration.
*/
public Root getMiddlemanDirectory(RepositoryName repositoryName) {
- return repositoryName.equals(RepositoryName.MAIN)
- ? middlemanDirectoryForMainRepository
- : OutputDirectory.MIDDLEMAN.getRoot(repositoryName, outputDirName, directories);
+ return OutputDirectory.MIDDLEMAN.getRoot(repositoryName, outputDirName, directories);
}
public boolean getAllowRuntimeDepsOnNeverLink() {
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 29ccba94c4..ac6d574c93 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
@@ -207,7 +207,7 @@ public class BazelPythonSemantics implements PythonSemantics {
}
private static boolean isUnderWorkspace(PathFragment path) {
- return !path.startsWith(Label.EXTERNAL_PATH_PREFIX);
+ return !path.startsWith(PathFragment.create(Label.EXTERNAL_PATH_PREFIX));
}
private static String getZipRunfilesPath(PathFragment path, PathFragment workspaceName) {
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 ef62fc1be8..4bc5a4caae 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
@@ -72,7 +72,7 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkPrin
public static final PackageIdentifier EXTERNAL_PACKAGE_IDENTIFIER =
PackageIdentifier.createInMainRepo(EXTERNAL_PACKAGE_NAME);
- public static final PathFragment EXTERNAL_PATH_PREFIX = PathFragment.create("external");
+ public static final String EXTERNAL_PATH_PREFIX = "external";
private static final Interner<Label> LABEL_INTERNER = BlazeInterners.newWeakInterner();
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 8640f261de..2deba307a0 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
@@ -79,7 +79,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
? Preconditions.checkNotNull(
execPath.getParentDirectory(), "Must pass in files, not root directory")
: execPath;
- if (tofind.startsWith(Label.EXTERNAL_PATH_PREFIX)) {
+ if (tofind.startsWith(PathFragment.create(Label.EXTERNAL_PATH_PREFIX))) {
// TODO(ulfjack): Remove this when kchodorow@'s exec root rearrangement has been rolled out.
RepositoryName repository = RepositoryName.create("@" + tofind.getSegment(1));
return PackageIdentifier.create(repository, tofind.subFragment(2, tofind.segmentCount()));
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 b0089787de..b9564e79c5 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
@@ -139,7 +139,7 @@ public final class RepositoryName implements Serializable {
* was invalid.
*/
public static Pair<RepositoryName, PathFragment> fromPathFragment(PathFragment path) {
- if (path.segmentCount() < 2 || !path.startsWith(Label.EXTERNAL_PATH_PREFIX)) {
+ if (path.segmentCount() < 2 || !path.getSegment(0).equals(Label.EXTERNAL_PATH_PREFIX)) {
return null;
}
try {
@@ -202,7 +202,7 @@ public final class RepositoryName implements Serializable {
}
/**
- * Returns if this is the main repository, that is, {@link #name} is "@".
+ * Returns if this is the default repository, that is, {@link #name} is "@".
*/
public boolean isMain() {
return name.equals("@");
@@ -232,7 +232,7 @@ public final class RepositoryName implements Serializable {
public PathFragment getPathUnderExecRoot() {
return isDefault() || isMain()
? PathFragment.EMPTY_FRAGMENT
- : Label.EXTERNAL_PATH_PREFIX.getRelative(strippedName());
+ : PathFragment.create(Label.EXTERNAL_PATH_PREFIX).getRelative(strippedName());
}
/**
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 223b0c4483..f828538419 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
@@ -45,7 +45,6 @@ import java.util.concurrent.atomic.AtomicReference;
* filesystem) idempotent.
*/
public class PathPackageLocator implements Serializable {
- private static final PathFragment BUILD_PATH_FRAGMENT = PathFragment.create("BUILD");
public static final ImmutableSet<String> DEFAULT_TOP_LEVEL_EXCLUDES =
ImmutableSet.of("experimental");
@@ -102,8 +101,7 @@ public class PathPackageLocator implements Serializable {
AtomicReference<? extends UnixGlob.FilesystemCalls> cache) {
Preconditions.checkArgument(!packageIdentifier.getRepository().isDefault());
if (packageIdentifier.getRepository().isMain()) {
- return getFilePath(
- packageIdentifier.getPackageFragment().getRelative(BUILD_PATH_FRAGMENT), cache);
+ return getFilePath(packageIdentifier.getPackageFragment().getRelative("BUILD"), cache);
} else {
Verify.verify(outputBase != null, String.format(
"External package '%s' needs to be loaded but this PathPackageLocator instance does not "
@@ -113,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.getSourceRoot()).getRelative(BUILD_PATH_FRAGMENT);
+ packageIdentifier.getSourceRoot()).getRelative("BUILD");
try {
FileStatus stat = cache.get().statIfFound(buildFile, Symlinks.FOLLOW);
if (stat != null && stat.isFile()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 1b1884ce8d..74d1d3cdb0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -110,8 +110,6 @@ public class CppCompileAction extends AbstractAction
}
};
- private static final PathFragment BUILD_PATH_FRAGMENT = PathFragment.create("BUILD");
-
private static final int VALIDATION_DEBUG = 0; // 0==none, 1==warns/errors, 2==all
private static final boolean VALIDATION_DEBUG_WARN = VALIDATION_DEBUG >= 1;
@@ -950,7 +948,7 @@ public class CppCompileAction extends AbstractAction
// Still not found: see if it is in a subdir of a declared package.
Path root = input.getRoot().getPath();
for (Path dir = input.getPath().getParentDirectory();;) {
- if (dir.getRelative(BUILD_PATH_FRAGMENT).exists()) {
+ if (dir.getRelative("BUILD").exists()) {
return false; // Bad: this is a sub-package, not a subdir of a declared package.
}
dir = dir.getParentDirectory();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index 333361f193..693970c42e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -477,7 +477,7 @@ public class CppCompileActionBuilder {
continue;
}
// One starting ../ is okay for getting to a sibling repository.
- if (include.startsWith(Label.EXTERNAL_PATH_PREFIX)) {
+ if (include.startsWith(PathFragment.create(Label.EXTERNAL_PATH_PREFIX))) {
include = include.relativeTo(Label.EXTERNAL_PATH_PREFIX);
}
if (include.isAbsolute()
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 aa719c80ed..41afb816ff 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
@@ -60,8 +60,6 @@ import javax.annotation.Nullable;
* <p>This class can be used only after the loading phase.
*/
public class CppHelper {
- static final PathFragment OBJS = PathFragment.create("_objs");
-
private static final String GREPPED_INCLUDES_SUFFIX = ".includes";
// TODO(bazel-team): should this use Link.SHARED_LIBRARY_FILETYPES?
@@ -285,7 +283,7 @@ public class CppHelper {
* Returns the directory where object files are created.
*/
public static PathFragment getObjDirectory(Label ruleLabel) {
- return AnalysisUtils.getUniqueDirectory(ruleLabel, OBJS);
+ return AnalysisUtils.getUniqueDirectory(ruleLabel, PathFragment.create("_objs"));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
index 0c640ff818..b2a67113f8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -952,7 +952,7 @@ public class CppLinkActionBuilder {
PathFragment stampOutputDirectory =
outputBinaryPath
.getParentDirectory()
- .getRelative(CppHelper.OBJS)
+ .getRelative("_objs")
.getRelative(outputBinaryPath.getBaseName());
for (Artifact linkstamp : linkstamps) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
index e7b9c7c1cd..5389023701 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -71,7 +71,6 @@ public final class JavaCompilationHelper {
private final ImmutableList<Artifact> additionalJavaBaseInputs;
private static final String DEFAULT_ATTRIBUTES_SUFFIX = "";
- private static final PathFragment JAVAC = PathFragment.create("_javac");
public JavaCompilationHelper(RuleContext ruleContext, JavaSemantics semantics,
ImmutableList<String> javacOpts, JavaTargetAttributes.Builder attributes,
@@ -565,7 +564,7 @@ public final class JavaCompilationHelper {
private PathFragment workDir(Artifact outputJar, String suffix) {
String basename = FileSystemUtils.removeExtension(outputJar.getExecPath().getBaseName());
return getConfiguration().getBinDirectory(ruleContext.getRule().getRepository()).getExecPath()
- .getRelative(ruleContext.getUniqueDirectory(JAVAC))
+ .getRelative(ruleContext.getUniqueDirectory("_javac"))
.getRelative(basename + suffix);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
index ba324e670d..8de811fe03 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
@@ -34,8 +34,6 @@ import com.google.devtools.build.lib.vfs.PathFragment;
// TODO(bazel-team): This should really be named DerivedArtifacts as it contains methods for
// final as well as intermediate artifacts.
public final class IntermediateArtifacts {
- private static final PathFragment OBJS = PathFragment.create("_objs");
-
static final String LINKMAP_SUFFIX = ".linkmap";
/**
@@ -277,7 +275,8 @@ public final class IntermediateArtifacts {
}
private Artifact inUniqueObjsDir(Artifact source, String extension) {
- PathFragment uniqueDir = OBJS.getRelative(ruleContext.getLabel().getName());
+ PathFragment uniqueDir =
+ PathFragment.create("_objs").getRelative(ruleContext.getLabel().getName());
PathFragment sourceFile = uniqueDir.getRelative(source.getRootRelativePath());
PathFragment scopeRelativePath = FileSystemUtils.replaceExtension(sourceFile, extension);
return scopedArtifact(scopeRelativePath);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/LocalRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/LocalRepositoryFunction.java
index 8d7e3eb5b2..490b1f6324 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/repository/LocalRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/repository/LocalRepositoryFunction.java
@@ -100,7 +100,7 @@ public class LocalRepositoryFunction extends RepositoryFunction {
directory.getRoot(),
directory
.getRelativePath()
- .getRelative(PackageLookupValue.BuildFileName.WORKSPACE.getFilenameFragment()));
+ .getChild(PackageLookupValue.BuildFileName.WORKSPACE.getFilename()));
SkyKey workspaceFileKey = FileValue.key(workspaceRootedFile);
FileValue value;
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 e6f3837212..20c26b5942 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
@@ -473,7 +473,8 @@ public abstract class RepositoryFunction {
if (repositoryPath.segmentCount() > 1) {
if (rule.getRuleClass().equals(LocalRepositoryRule.NAME)
- && repositoryPath.endsWith(BuildFileName.WORKSPACE.getFilenameFragment())) {
+ && repositoryPath.endsWith(
+ PathFragment.create(BuildFileName.WORKSPACE.getFilename()))) {
// Ignore this, there is a dependency from LocalRepositoryFunction->WORKSPACE file already
return;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunction.java
index 732620342d..ae4b250971 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunction.java
@@ -94,7 +94,7 @@ public class LocalRepositoryLookupFunction implements SkyFunction {
directory.getRoot(),
directory
.getRelativePath()
- .getRelative(PackageLookupValue.BuildFileName.WORKSPACE.getFilenameFragment()));
+ .getChild(PackageLookupValue.BuildFileName.WORKSPACE.getFilename()));
FileValue workspaceFileValue =
(FileValue)
env.getValueOrThrow(
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 c0a115ad6c..e427c34085 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
@@ -315,7 +315,7 @@ public class PackageLookupFunction implements SkyFunction {
// This checks for the build file names in the correct precedence order.
for (BuildFileName buildFileName : buildFilesByPriority) {
PathFragment buildFileFragment =
- id.getPackageFragment().getRelative(buildFileName.getFilenameFragment());
+ id.getPackageFragment().getChild(buildFileName.getFilename());
RootedPath buildFileRootedPath =
RootedPath.toRootedPath(repositoryValue.getPath(), buildFileFragment);
FileValue fileValue = getFileValue(buildFileRootedPath, env, packageIdentifier);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java
index 79f6a41679..5ed0e55e5c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java
@@ -43,32 +43,32 @@ public abstract class PackageLookupValue implements SkyValue {
WORKSPACE("WORKSPACE") {
@Override
public PathFragment getBuildFileFragment(PackageIdentifier packageIdentifier) {
- return getFilenameFragment();
+ return PathFragment.create(BuildFileName.WORKSPACE.getFilename());
}
},
BUILD("BUILD") {
@Override
public PathFragment getBuildFileFragment(PackageIdentifier packageIdentifier) {
- return packageIdentifier.getPackageFragment().getRelative(getFilenameFragment());
+ return packageIdentifier.getPackageFragment().getChild(getFilename());
}
},
BUILD_DOT_BAZEL("BUILD.bazel") {
@Override
public PathFragment getBuildFileFragment(PackageIdentifier packageIdentifier) {
- return packageIdentifier.getPackageFragment().getRelative(getFilenameFragment());
+ return packageIdentifier.getPackageFragment().getChild(getFilename());
}
};
private static final BuildFileName[] VALUES = BuildFileName.values();
- private final PathFragment filenameFragment;
+ private final String filename;
private BuildFileName(String filename) {
- this.filenameFragment = PathFragment.create(filename);
+ this.filename = filename;
}
- public PathFragment getFilenameFragment() {
- return filenameFragment;
+ public String getFilename() {
+ return filename;
}
/**