aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar nharmata <nharmata@google.com>2017-04-04 17:11:39 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-04-05 15:18:20 +0200
commitb4060b6e53944a7c3bdc5e62b288e7293a87652a (patch)
tree59b0f1f3d3e8e99412e060bb98b5a37fe90d9b6e /src/main/java/com
parent3ac77cb94a4cf1bd1993a97fe79f2005b2b1a711 (diff)
Refactor all ctor callsites of PathFragment to instead call a static 'create' method.
This paves the way for changing PathFragment to e.g. an abstract class with multiple subclasses. This way we can split out the windows-specific stuff into one of these concrete classes, making the code more readable and also saving memory (since the shallow heap size of the NonWindowsPathFragment subclass will hopefully be smaller than that of the current PathFragment). This also lets us pursue gc churn optimizations. We can now do interning in PathFragment#create and can also get rid of unnecessary intermediate PathFragment allocations. RELNOTES: None PiperOrigin-RevId: 152145768
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/Artifact.java2
-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/actions/MiddlemanFactory.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/CompressedTarFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerFunction.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/StripPrefixedPath.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/ZipDecompressor.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpDownloader.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/Label.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java4
-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/exec/SingleBuildFileCache.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/SpawnInputExpander.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/FilesetEntry.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Package.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RelativePackageNameResolver.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RuleClass.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/RBuildFilesFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.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/AndroidIdlHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcIncLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java6
-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/CppCompileActionTemplate.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java10
-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/CppModel.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupport.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java4
-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/java/JavaBinary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java6
-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/nativedeps/NativeDepsHelper.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoSourceFileBlacklist.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/repository/NewRepositoryFileHandler.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryLoaderFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java4
-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/PackageFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/unix/UnixFileSystem.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/PathFragmentFilter.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/Path.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java89
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/PathFragmentSerializationProxy.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/SearchPath.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/ZipFileSystem.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/windows/WindowsFileSystem.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocessFactory.java2
119 files changed, 298 insertions, 277 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java b/src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java
index 16f926a2fc..b5d6c1ce62 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java
@@ -340,7 +340,7 @@ public class ActionCacheChecker {
}
List<PathFragment> inputExecPaths = new ArrayList<>();
for (String path : entry.getPaths()) {
- PathFragment execPath = new PathFragment(path);
+ PathFragment execPath = PathFragment.create(path);
// Code assumes that action has only 1-2 outputs and ArrayList.contains() will be
// most efficient.
if (!outputs.contains(execPath)) {
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
index c63fd5b93a..c4567d8ce4 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
@@ -81,7 +81,7 @@ public final class ActionInputHelper {
@Override
public PathFragment getExecPath() {
- return new PathFragment(path);
+ return PathFragment.create(path);
}
@Override
@@ -170,7 +170,7 @@ public final class ActionInputHelper {
* relative to that Artifact.
*/
public static TreeFileArtifact treeFileArtifact(Artifact parent, String relativePath) {
- return treeFileArtifact(parent, new PathFragment(relativePath));
+ return treeFileArtifact(parent, PathFragment.create(relativePath));
}
/** Returns an Iterable of TreeFileArtifacts with the given parent and parent relative paths. */
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 a5b865f023..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
@@ -547,7 +547,7 @@ public class Artifact
&& relativePath.getSegment(0).equals(Label.EXTERNAL_PATH_PREFIX)) {
// Turn external/repo/foo into ../repo/foo.
relativePath = relativePath.relativeTo(Label.EXTERNAL_PATH_PREFIX);
- relativePath = new PathFragment("..").getRelative(relativePath);
+ relativePath = PathFragment.create("..").getRelative(relativePath);
}
return relativePath;
}
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 3f2f360259..ddeb001339 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
@@ -127,7 +127,7 @@ public class ArtifactFactory implements ArtifactResolver, ArtifactSerializer, Ar
*/
public ArtifactFactory(Path execRootParent, String derivedPathPrefix) {
this.execRootParent = execRootParent;
- this.derivedPathPrefix = new PathFragment(derivedPathPrefix);
+ this.derivedPathPrefix = PathFragment.create(derivedPathPrefix);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanFactory.java b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanFactory.java
index 404b0de10d..2a19d03a37 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanFactory.java
@@ -175,8 +175,8 @@ public final class MiddlemanFactory {
PathFragment packageDirectory, String purpose, Iterable<Artifact> inputs, Root middlemanDir) {
String escapedPackageDirectory = Actions.escapedPath(packageDirectory.getPathString());
PathFragment stampName =
- new PathFragment("_middlemen/" + (purpose.startsWith(escapedPackageDirectory)
- ? purpose : (escapedPackageDirectory + purpose)));
+ PathFragment.create("_middlemen/" + (purpose.startsWith(escapedPackageDirectory)
+ ? purpose : (escapedPackageDirectory + purpose)));
Artifact stampFile = artifactFactory.getDerivedArtifact(stampName, middlemanDir,
actionRegistry.getOwner());
MiddlemanAction.create(
@@ -186,7 +186,7 @@ public final class MiddlemanFactory {
private Artifact getStampFileArtifact(String middlemanName, String purpose, Root middlemanDir) {
String escapedFilename = Actions.escapedPath(middlemanName);
- PathFragment stampName = new PathFragment("_middlemen/" + escapedFilename + "-" + purpose);
+ PathFragment stampName = PathFragment.create("_middlemen/" + escapedFilename + "-" + purpose);
Artifact stampFile = artifactFactory.getDerivedArtifact(stampName, middlemanDir,
actionRegistry.getOwner());
return stampFile;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 7c18968f6b..036e7473b1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -478,7 +478,7 @@ public class BuildView {
String bzlFileLoadLikeString = aspect.substring(0, delimiterPosition);
if (!bzlFileLoadLikeString.startsWith("//") && !bzlFileLoadLikeString.startsWith("@")) {
// "Legacy" behavior of '--aspects' parameter.
- bzlFileLoadLikeString = new PathFragment("/" + bzlFileLoadLikeString).toString();
+ bzlFileLoadLikeString = PathFragment.create("/" + bzlFileLoadLikeString).toString();
if (bzlFileLoadLikeString.endsWith(".bzl")) {
bzlFileLoadLikeString = bzlFileLoadLikeString.substring(0,
bzlFileLoadLikeString.length() - ".bzl".length());
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
index e38c3d9cc8..ae8736cdc9 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
@@ -298,6 +298,6 @@ public final class CommandHelper {
private PathFragment shellPath(Map<String, String> executionInfo) {
// Use vanilla /bin/bash for actions running on mac machines.
return executionInfo.containsKey(ExecutionRequirements.REQUIRES_DARWIN)
- ? new PathFragment("/bin/bash") : ruleContext.getConfiguration().getShellExecutable();
+ ? PathFragment.create("/bin/bash") : ruleContext.getConfiguration().getShellExecutable();
}
}
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 a54befb9e3..3ebdd78f76 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
@@ -554,7 +554,7 @@ public final class RuleContext extends TargetContext
* thus guaranteeing that it never clashes with artifacts created by rules in other packages.
*/
public Artifact getPackageRelativeArtifact(String relative, Root root) {
- return getPackageRelativeArtifact(new PathFragment(relative), root);
+ return getPackageRelativeArtifact(PathFragment.create(relative), root);
}
/**
@@ -562,7 +562,7 @@ public final class RuleContext extends TargetContext
* guaranteeing that it never clashes with artifacts created by rules in other packages.
*/
public Artifact getBinArtifact(String relative) {
- return getBinArtifact(new PathFragment(relative));
+ return getBinArtifact(PathFragment.create(relative));
}
public Artifact getBinArtifact(PathFragment relative) {
@@ -575,7 +575,7 @@ public final class RuleContext extends TargetContext
* guaranteeing that it never clashes with artifacts created by rules in other packages.
*/
public Artifact getGenfilesArtifact(String relative) {
- return getGenfilesArtifact(new PathFragment(relative));
+ return getGenfilesArtifact(PathFragment.create(relative));
}
public Artifact getGenfilesArtifact(PathFragment relative) {
@@ -664,7 +664,7 @@ public final class RuleContext extends TargetContext
*/
public Artifact getUniqueDirectoryArtifact(
String uniqueDirectory, String relative, Root root) {
- return getUniqueDirectoryArtifact(uniqueDirectory, new PathFragment(relative), root);
+ return getUniqueDirectoryArtifact(uniqueDirectory, PathFragment.create(relative), root);
}
/**
@@ -1235,7 +1235,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 AnalysisUtils.getUniqueDirectory(getLabel(), new PathFragment(fragment));
+ return AnalysisUtils.getUniqueDirectory(getLabel(), PathFragment.create(fragment));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index 2ef4c2ca33..33c5d0aab2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -785,7 +785,7 @@ public final class Runfiles {
* created.
*/
public Builder(String workspace, boolean legacyExternalRunfiles) {
- this(new PathFragment(workspace), legacyExternalRunfiles);
+ this(PathFragment.create(workspace), legacyExternalRunfiles);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
index 67dae4d2ba..26eeadc3ff 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
@@ -267,7 +267,7 @@ public final class PopulateTreeArtifactAction extends AbstractAction {
for (String line :
FileSystemUtils.iterateLinesAsLatin1(archiveManifest.getPath())) {
if (!line.isEmpty()) {
- PathFragment path = new PathFragment(line);
+ PathFragment path = PathFragment.create(line);
if (!path.isNormalized() || path.isAbsolute()) {
throw new IllegalManifestFileException(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index ce1316f56d..664429ed00 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -999,7 +999,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
* commands to be executed.
*/
public Builder setShellCommand(Iterable<String> command) {
- this.executable = new PathFragment(Iterables.getFirst(command, null));
+ this.executable = PathFragment.create(Iterables.getFirst(command, null));
// The first item of the commands is the shell executable that should be used.
this.executableArgs = ImmutableList.copyOf(Iterables.skip(command, 1));
this.isShellCommand = true;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java
index 73cc667034..2dd779f011 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java
@@ -139,7 +139,7 @@ public final class BinTools {
if (!embeddedTools.contains(embedPath)) {
return null;
}
- return new PathFragment("_bin").getRelative(new PathFragment(embedPath).getBaseName());
+ return PathFragment.create("_bin").getRelative(PathFragment.create(embedPath).getBaseName());
}
public Artifact getEmbeddedArtifact(String embedPath, ArtifactFactory artifactFactory) {
@@ -174,7 +174,7 @@ public final class BinTools {
private void setupTool(String embeddedPath) throws ExecException {
Path sourcePath = directories.getEmbeddedBinariesRoot().getRelative(embeddedPath);
- Path linkPath = binDir.getRelative(new PathFragment(embeddedPath).getBaseName());
+ Path linkPath = binDir.getRelative(PathFragment.create(embeddedPath).getBaseName());
linkTool(sourcePath, linkPath);
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
index 2f21d85387..2dbc2282a0 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
@@ -300,9 +300,9 @@ public class BazelWorkspaceStatusModule extends BlazeModule {
Root root = env.getDirectories().getBuildDataDirectory(workspaceName);
Artifact stableArtifact = factory.getDerivedArtifact(
- new PathFragment("stable-status.txt"), root, artifactOwner);
+ PathFragment.create("stable-status.txt"), root, artifactOwner);
Artifact volatileArtifact = factory.getConstantMetadataArtifact(
- new PathFragment("volatile-status.txt"), root, artifactOwner);
+ PathFragment.create("volatile-status.txt"), root, artifactOwner);
return new BazelWorkspaceStatusAction(options, env.getClientEnv(),
env.getDirectories().getWorkspace(), stableArtifact, volatileArtifact, getHostname());
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/CompressedTarFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/CompressedTarFunction.java
index 55cd813d47..2e245b42f8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/CompressedTarFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/CompressedTarFunction.java
@@ -59,7 +59,7 @@ public abstract class CompressedTarFunction implements Decompressor {
FileSystemUtils.createDirectoryAndParents(filename);
} else {
if (entry.isSymbolicLink() || entry.isLink()) {
- PathFragment linkName = new PathFragment(entry.getLinkName());
+ PathFragment linkName = PathFragment.create(entry.getLinkName());
boolean wasAbsolute = linkName.isAbsolute();
// Strip the prefix from the link path if set.
linkName =
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerFunction.java
index a25bc2cf89..76dc213e22 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerFunction.java
@@ -98,8 +98,8 @@ public class MavenServerFunction implements SkyFunction {
if (!mapper.isAttributeValueExplicitlySpecified("settings_file")) {
settingsFiles = getDefaultSettingsFile(directories, env);
} else {
- PathFragment settingsFilePath = new PathFragment(
- mapper.get("settings_file", Type.STRING));
+ PathFragment settingsFilePath =
+ PathFragment.create(mapper.get("settings_file", Type.STRING));
RootedPath settingsPath = RootedPath.toRootedPath(
directories.getWorkspace().getRelative(settingsFilePath),
PathFragment.EMPTY_FRAGMENT);
@@ -183,7 +183,8 @@ public class MavenServerFunction implements SkyFunction {
ImmutableList.Builder<SkyKey> settingsFilesBuilder = ImmutableList.builder();
SkyKey systemKey = null;
if (m2Home != null) {
- PathFragment mavenInstallSettings = new PathFragment(m2Home).getRelative("conf/settings.xml");
+ PathFragment mavenInstallSettings =
+ PathFragment.create(m2Home).getRelative("conf/settings.xml");
systemKey = FileValue.key(
RootedPath.toRootedPath(directories.getWorkspace().getRelative(mavenInstallSettings),
PathFragment.EMPTY_FRAGMENT));
@@ -194,7 +195,7 @@ public class MavenServerFunction implements SkyFunction {
String userHome = System.getenv("HOME");
SkyKey userKey = null;
if (userHome != null) {
- PathFragment userSettings = new PathFragment(userHome).getRelative(".m2/settings.xml");
+ PathFragment userSettings = PathFragment.create(userHome).getRelative(".m2/settings.xml");
userKey = FileValue.key(RootedPath.toRootedPath(
directories.getWorkspace().getRelative(userSettings),
PathFragment.EMPTY_FRAGMENT));
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/StripPrefixedPath.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/StripPrefixedPath.java
index 46650d6150..d26cd993bf 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/StripPrefixedPath.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/StripPrefixedPath.java
@@ -64,9 +64,9 @@ public final class StripPrefixedPath {
* Normalize the path and, if it is absolute, make it relative (e.g., /foo/bar becomes foo/bar).
*/
private static PathFragment relativize(String path) {
- PathFragment entryPath = new PathFragment(path).normalize();
+ PathFragment entryPath = PathFragment.create(path).normalize();
if (entryPath.isAbsolute()) {
- entryPath = new PathFragment(entryPath.getSafePathString().substring(
+ entryPath = PathFragment.create(entryPath.getSafePathString().substring(
entryPath.windowsVolume().length() + 1));
}
return entryPath;
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/ZipDecompressor.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/ZipDecompressor.java
index d43a11772d..244e8597c9 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/ZipDecompressor.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/ZipDecompressor.java
@@ -124,7 +124,7 @@ public class ZipDecompressor implements Decompressor {
// For symlinks, the "compressed data" is actually the target name.
int read = reader.getInputStream(entry).read(buffer);
Preconditions.checkState(read == buffer.length);
- PathFragment target = new PathFragment(new String(buffer, Charset.defaultCharset()))
+ PathFragment target = PathFragment.create(new String(buffer, Charset.defaultCharset()))
.normalize();
if (!target.isNormalized()) {
throw new IOException("Zip entries cannot refer to files outside of their directory: "
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpDownloader.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpDownloader.java
index 0af26ec596..c35db986a5 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpDownloader.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpDownloader.java
@@ -222,7 +222,7 @@ public class HttpDownloader {
}
String basename =
MoreObjects.firstNonNull(
- Strings.emptyToNull(new PathFragment(url.getPath()).getBaseName()),
+ Strings.emptyToNull(PathFragment.create(url.getPath()).getBaseName()),
"temp");
if (!type.get().isEmpty()) {
String suffix = "." + type.get();
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
index deff590162..7e382b2c0a 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
@@ -152,7 +152,7 @@ public class SkylarkRepositoryContext {
private SkylarkPath getPath(String method, Object path)
throws EvalException, InterruptedException {
if (path instanceof String) {
- PathFragment pathFragment = new PathFragment(path.toString());
+ PathFragment pathFragment = PathFragment.create(path.toString());
return new SkylarkPath(pathFragment.isAbsolute()
? outputDirectory.getFileSystem().getPath(path.toString())
: outputDirectory.getRelative(pathFragment));
@@ -426,7 +426,7 @@ public class SkylarkRepositoryContext {
"Program argument of which() may not contains a / or a \\ ('" + program + "' given)");
}
for (String p : getPathEnvironment()) {
- PathFragment fragment = new PathFragment(p);
+ PathFragment fragment = PathFragment.create(p);
if (fragment.isAbsolute()) {
// We ignore relative path as they don't mean much here (relative to where? the workspace
// root?).
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
index 49656875e0..54eccb7065 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
@@ -61,20 +61,20 @@ public class BazelConfiguration extends Fragment {
if (OS.getCurrent() == OS.WINDOWS) {
String path = System.getenv("BAZEL_SH");
if (path != null) {
- return new PathFragment(path);
+ return PathFragment.create(path);
} else {
- return new PathFragment("c:/tools/msys64/usr/bin/bash.exe");
+ return PathFragment.create("c:/tools/msys64/usr/bin/bash.exe");
}
}
if (OS.getCurrent() == OS.FREEBSD) {
String path = System.getenv("BAZEL_SH");
if (path != null) {
- return new PathFragment(path);
+ return PathFragment.create(path);
} else {
- return new PathFragment("/usr/local/bin/bash");
+ return PathFragment.create("/usr/local/bin/bash");
}
}
- return new PathFragment("/bin/bash");
+ return PathFragment.create("/bin/bash");
}
@Override
@@ -101,10 +101,10 @@ public class BazelConfiguration extends Fragment {
String newPath = "";
if (sh != null && sh.getParentDirectory() != null) {
newPath = sh.getParentDirectory().getPathString();
- if (sh.getParentDirectory().endsWith(new PathFragment("usr/bin"))) {
+ if (sh.getParentDirectory().endsWith(PathFragment.create("usr/bin"))) {
newPath +=
";" + sh.getParentDirectory().getParentDirectory().replaceName("bin").getPathString();
- } else if (sh.getParentDirectory().endsWith(new PathFragment("bin"))) {
+ } else if (sh.getParentDirectory().endsWith(PathFragment.create("bin"))) {
newPath +=
";" + sh.getParentDirectory().replaceName("usr").getRelative("bin").getPathString();
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
index 6373eb66ce..acf6f788e9 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
@@ -61,7 +61,7 @@ public class AndroidNdkRepositoryFunction extends RepositoryFunction {
private static final String TOOLCHAIN_NAME_PREFIX = "toolchain-";
private static final String PATH_ENV_VAR = "ANDROID_NDK_HOME";
- private static final PathFragment PLATFORMS_DIR = new PathFragment("platforms");
+ private static final PathFragment PLATFORMS_DIR = PathFragment.create("platforms");
private static final Iterable<String> PATH_ENV_VAR_AS_LIST = ImmutableList.of(PATH_ENV_VAR);
@@ -229,7 +229,7 @@ public class AndroidNdkRepositoryFunction extends RepositoryFunction {
private static PathFragment getAndroidNdkHomeEnvironmentVar(
Path workspace, Map<String, String> env) {
- return workspace.getRelative(new PathFragment(env.get(PATH_ENV_VAR))).asFragment();
+ return workspace.getRelative(PathFragment.create(env.get(PATH_ENV_VAR))).asFragment();
}
private static String createBuildFile(String ruleName, List<CrosstoolStlPair> crosstools) {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
index 0c98f90ab5..14b05372df 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
@@ -56,9 +56,9 @@ import javax.annotation.Nullable;
* Implementation of the {@code android_sdk_repository} rule.
*/
public class AndroidSdkRepositoryFunction extends RepositoryFunction {
- private static final PathFragment BUILD_TOOLS_DIR = new PathFragment("build-tools");
- private static final PathFragment PLATFORMS_DIR = new PathFragment("platforms");
- private static final PathFragment SYSTEM_IMAGES_DIR = new PathFragment("system-images");
+ private static final PathFragment BUILD_TOOLS_DIR = PathFragment.create("build-tools");
+ private static final PathFragment PLATFORMS_DIR = PathFragment.create("platforms");
+ private static final PathFragment SYSTEM_IMAGES_DIR = PathFragment.create("system-images");
private static final Revision MIN_BUILD_TOOLS_REVISION = new Revision(24, 0, 3);
private static final String PATH_ENV_VAR = "ANDROID_HOME";
private static final ImmutableList<String> PATH_ENV_VAR_AS_LIST = ImmutableList.of(PATH_ENV_VAR);
@@ -250,7 +250,7 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction {
private static PathFragment getAndroidHomeEnvironmentVar(
Path workspace, Map<String, String> env) {
- return workspace.getRelative(new PathFragment(env.get(PATH_ENV_VAR))).asFragment();
+ return workspace.getRelative(PathFragment.create(env.get(PATH_ENV_VAR))).asFragment();
}
private static String getStringResource(String name) {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
index 5f398560d5..293091f6fa 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
@@ -226,7 +226,7 @@ public class BazelJavaSemantics implements JavaSemantics {
if (!isRunfilesEnabled) {
buffer.append("$(rlocation ");
PathFragment runfilePath =
- new PathFragment(new PathFragment(workspacePrefix), artifact.getRunfilesPath());
+ PathFragment.create(PathFragment.create(workspacePrefix), artifact.getRunfilesPath());
buffer.append(runfilePath.normalize().getPathString());
buffer.append(")");
} 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 a913927f8f..e4b02626b4 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
@@ -55,7 +55,7 @@ public class BazelPythonSemantics implements PythonSemantics {
FileTypeSet.of(BazelPyRuleClasses.PYTHON_SOURCE),
"srcs", "deps", "data");
- public static final PathFragment ZIP_RUNFILES_DIRECTORY_NAME = new PathFragment("runfiles");
+ public static final PathFragment ZIP_RUNFILES_DIRECTORY_NAME = PathFragment.create("runfiles");
@Override
public void validate(RuleContext ruleContext, PyCommon common) {
@@ -86,7 +86,7 @@ public class BazelPythonSemantics implements PythonSemantics {
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())
+ packageFragment = PathFragment.create(ruleContext.getWorkspaceName())
.getRelative(packageFragment);
for (String importsAttr : ruleContext.attributes().get("imports", Type.STRING_LIST)) {
importsAttr = ruleContext.expandMakeVariables("includes", importsAttr);
@@ -201,7 +201,7 @@ public class BazelPythonSemantics implements PythonSemantics {
}
private static boolean isUnderWorkspace(PathFragment path) {
- return !path.startsWith(Label.EXTERNAL_PACKAGE_NAME);
+ return !path.startsWith(PathFragment.create(Label.EXTERNAL_PATH_PREFIX));
}
private static String getZipRunfilesPath(PathFragment path, PathFragment workspaceName) {
@@ -220,7 +220,7 @@ public class BazelPythonSemantics implements PythonSemantics {
}
private static String getZipRunfilesPath(String path, PathFragment workspaceName) {
- return getZipRunfilesPath(new PathFragment(path), workspaceName);
+ return getZipRunfilesPath(PathFragment.create(path), workspaceName);
}
private static void createPythonZipAction(
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java b/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java
index 0ae420a20c..40d8d0fb80 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java
@@ -132,7 +132,7 @@ public class OutputDirectoryLinksUtils {
// Helper to getPrettyPath. Returns file, relativized w.r.t. the referent of
// "linkname", or null if it was a not a child.
private static PathFragment relativize(Path file, Path workspaceDirectory, String linkname) {
- PathFragment link = new PathFragment(linkname);
+ PathFragment link = PathFragment.create(linkname);
try {
Path dir = workspaceDirectory.getRelative(link);
PathFragment levelOneLinkTarget = dir.readSymbolicLink();
@@ -171,7 +171,7 @@ public class OutputDirectoryLinksUtils {
removeLink(workspace, symlinkPrefix + "bin", failures);
removeLink(workspace, symlinkPrefix + "testlogs", failures);
removeLink(workspace, symlinkPrefix + "genfiles", failures);
- FileSystemUtils.removeDirectoryAndParents(workspace, new PathFragment(symlinkPrefix));
+ FileSystemUtils.removeDirectoryAndParents(workspace, PathFragment.create(symlinkPrefix));
if (!failures.isEmpty()) {
eventHandler.handle(Event.warn(String.format(
"failed to remove one or more convenience symlinks for prefix '%s':\n %s", symlinkPrefix,
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 1d31f2edc2..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
@@ -51,8 +51,8 @@ import javax.annotation.Nullable;
@Immutable
@ThreadSafe
public final class Label implements Comparable<Label>, Serializable, SkylarkPrintableValue {
- public static final PathFragment EXTERNAL_PACKAGE_NAME = new PathFragment("external");
- public static final PathFragment EXTERNAL_PACKAGE_FILE_NAME = new PathFragment("WORKSPACE");
+ public static final PathFragment EXTERNAL_PACKAGE_NAME = PathFragment.create("external");
+ public static final PathFragment EXTERNAL_PACKAGE_FILE_NAME = PathFragment.create("WORKSPACE");
public static final String DEFAULT_REPOSITORY_DIRECTORY = "__main__";
/**
@@ -61,11 +61,11 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkPrin
*/
public static final ImmutableSet<PathFragment> ABSOLUTE_PACKAGE_NAMES = ImmutableSet.of(
// Used for select
- new PathFragment("conditions"),
+ PathFragment.create("conditions"),
// dependencies that are a function of the configuration
- new PathFragment("tools/defaults"),
+ PathFragment.create("tools/defaults"),
// Visibility is labels aren't actually targets
- new PathFragment("visibility"),
+ PathFragment.create("visibility"),
// There is only one //external package
Label.EXTERNAL_PACKAGE_NAME);
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 5688a3184f..3c82f6c2f6 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
@@ -49,7 +49,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
PathFragment.EMPTY_FRAGMENT);
public static PackageIdentifier createInMainRepo(String name) {
- return createInMainRepo(new PathFragment(name));
+ return createInMainRepo(PathFragment.create(name));
}
public static PackageIdentifier createInMainRepo(PathFragment name) {
@@ -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(new PathFragment(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()));
@@ -137,7 +137,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
throw new LabelSyntaxException(error);
}
- return create(repo, new PathFragment(packageName));
+ return create(repo, PathFragment.create(packageName));
}
public RepositoryName getRepository() {
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 ae1fe70270..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
@@ -232,7 +232,7 @@ public final class RepositoryName implements Serializable {
public PathFragment getPathUnderExecRoot() {
return isDefault() || isMain()
? PathFragment.EMPTY_FRAGMENT
- : new PathFragment(Label.EXTERNAL_PATH_PREFIX).getRelative(strippedName());
+ : PathFragment.create(Label.EXTERNAL_PATH_PREFIX).getRelative(strippedName());
}
/**
@@ -241,7 +241,7 @@ public final class RepositoryName implements Serializable {
// TODO(kchodorow): remove once execroot is reorg-ed.
public PathFragment getRunfilesPath() {
return isDefault() || isMain()
- ? PathFragment.EMPTY_FRAGMENT : new PathFragment("..").getRelative(strippedName());
+ ? PathFragment.EMPTY_FRAGMENT : PathFragment.create("..").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 f599ef3519..be3bcaa55f 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
@@ -779,7 +779,7 @@ public abstract class TargetPattern implements Serializable {
try {
PackageAndTarget packageAndTarget = LabelValidator.validateAbsoluteLabel(fullLabel);
packageIdentifier = PackageIdentifier.create(repository,
- new PathFragment(packageAndTarget.getPackageName()));
+ PathFragment.create(packageAndTarget.getPackageName()));
} catch (BadLabelException e) {
String error = "invalid target format '" + originalPattern + "': " + e.getMessage();
throw new TargetParsingException(error);
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SingleBuildFileCache.java b/src/main/java/com/google/devtools/build/lib/exec/SingleBuildFileCache.java
index 4099a8ad54..ec93068c1d 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SingleBuildFileCache.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SingleBuildFileCache.java
@@ -130,7 +130,7 @@ public class SingleBuildFileCache implements ActionInputFileCache {
*/
private String fullPath(ActionInput input) {
String relPath = input.getExecPathString();
- return new PathFragment(relPath).isAbsolute() ? relPath : new File(cwd, relPath).getPath();
+ return PathFragment.create(relPath).isAbsolute() ? relPath : new File(cwd, relPath).getPath();
}
/** Container class for caching I/O around ActionInputs. */
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SpawnInputExpander.java b/src/main/java/com/google/devtools/build/lib/exec/SpawnInputExpander.java
index f32d238243..351f8c7e10 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SpawnInputExpander.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SpawnInputExpander.java
@@ -147,7 +147,7 @@ public class SpawnInputExpander {
PathFragment location;
int pos = line.indexOf(' ');
if (pos == -1) {
- location = new PathFragment(line);
+ location = PathFragment.create(line);
artifact = EMPTY_FILE;
} else {
String targetPath = line.substring(pos + 1);
@@ -156,7 +156,7 @@ public class SpawnInputExpander {
}
artifact = targetPath.isEmpty() ? EMPTY_FILE : ActionInputHelper.fromPath(targetPath);
- location = new PathFragment(line.substring(0, pos));
+ location = PathFragment.create(line.substring(0, pos));
if (!workspaceName.isEmpty()) {
if (!location.getSegment(0).equals(workspaceName)) {
throw new IOException(
diff --git a/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java
index 9a99031dd8..0a29b9f89d 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java
@@ -127,7 +127,7 @@ public abstract class TestStrategy implements TestActionContext {
}
}
- public static final PathFragment TEST_TMP_ROOT = new PathFragment("_tmp");
+ public static final PathFragment TEST_TMP_ROOT = PathFragment.create("_tmp");
// Used for generating unique temporary directory names. Contains the next numeric index for every
// executable base name.
diff --git a/src/main/java/com/google/devtools/build/lib/packages/FilesetEntry.java b/src/main/java/com/google/devtools/build/lib/packages/FilesetEntry.java
index e55a4ed307..d52db41ad3 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/FilesetEntry.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/FilesetEntry.java
@@ -140,7 +140,7 @@ public final class FilesetEntry implements SkylarkValue {
this.srcLabel = Preconditions.checkNotNull(srcLabel);
this.files = files == null ? null : ImmutableList.copyOf(files);
this.excludes = (excludes == null || excludes.isEmpty()) ? null : ImmutableSet.copyOf(excludes);
- this.destDir = new PathFragment((destDir == null) ? "" : destDir);
+ this.destDir = PathFragment.create((destDir == null) ? "" : destDir);
this.symlinkBehavior = symlinkBehavior == null ? DEFAULT_SYMLINK_BEHAVIOR : symlinkBehavior;
this.stripPrefix = stripPrefix == null ? DEFAULT_STRIP_PREFIX : stripPrefix;
}
@@ -225,7 +225,7 @@ public final class FilesetEntry implements SkylarkValue {
} else if (stripPrefix.startsWith("/")) {
return "Cannot specify absolute strip prefix; perhaps you need to use \""
+ STRIP_PREFIX_WORKSPACE + "\"";
- } else if (new PathFragment(stripPrefix).containsUplevelReferences()) {
+ } else if (PathFragment.create(stripPrefix).containsUplevelReferences()) {
return "Strip prefix must not contain uplevel references";
} else if (stripPrefix.startsWith("%") && !stripPrefix.startsWith(STRIP_PREFIX_WORKSPACE)) {
return "If the strip_prefix starts with \"%\" then it must start with \""
diff --git a/src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java b/src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java
index 9de8f76d71..8d7ed337ad 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java
@@ -301,10 +301,10 @@ public abstract class ImplicitOutputsFunction {
if (attrName.equals("name")) {
return singleton(rule.getName());
} else if (attrName.equals("dirname")) {
- PathFragment dir = new PathFragment(rule.getName()).getParentDirectory();
+ PathFragment dir = PathFragment.create(rule.getName()).getParentDirectory();
return (dir.segmentCount() == 0) ? singleton("") : singleton(dir.getPathString() + "/");
} else if (attrName.equals("basename")) {
- return singleton(new PathFragment(rule.getName()).getBaseName());
+ return singleton(PathFragment.create(rule.getName()).getBaseName());
}
Type<?> attrType = rule.getAttributeType(attrName);
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 e4f726104f..1556dcb141 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
@@ -526,7 +526,7 @@ public class Package {
// stat(2) is executed.
Path filename = getPackageDirectory().getRelative(targetName);
String suffix;
- if (!new PathFragment(targetName).isNormalized()) {
+ if (!PathFragment.create(targetName).isNormalized()) {
// Don't check for file existence in this case because the error message
// would be confusing and wrong. If the targetName is "foo/bar/.", and
// there is a directory "foo/bar", it doesn't mean that "//pkg:foo/bar/."
@@ -1242,7 +1242,7 @@ public class Package {
// Now, modify the package:
for (OutputFile outputFile : rule.getOutputFiles()) {
targets.put(outputFile.getName(), outputFile);
- PathFragment outputFileFragment = new PathFragment(outputFile.getName());
+ PathFragment outputFileFragment = PathFragment.create(outputFile.getName());
for (int i = 1; i < outputFileFragment.segmentCount(); i++) {
String prefix = outputFileFragment.subFragment(0, i).toString();
if (!outputFilePrefixes.containsKey(prefix)) {
@@ -1430,7 +1430,7 @@ public class Package {
}
// Check if a prefix of this output file matches an already existing one
- PathFragment outputFileFragment = new PathFragment(outputFileName);
+ PathFragment outputFileFragment = PathFragment.create(outputFileName);
for (int i = 1; i < outputFileFragment.segmentCount(); i++) {
String prefix = outputFileFragment.subFragment(0, i).toString();
if (outputFiles.containsKey(prefix)) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RelativePackageNameResolver.java b/src/main/java/com/google/devtools/build/lib/packages/RelativePackageNameResolver.java
index 144dc8903f..b9be5a0713 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RelativePackageNameResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RelativePackageNameResolver.java
@@ -65,7 +65,7 @@ public class RelativePackageNameResolver {
relativePkg = pkg;
}
- PathFragment relative = new PathFragment(relativePkg);
+ PathFragment relative = PathFragment.create(relativePkg);
if (discardBuild && relative.getBaseName().equals("BUILD")) {
relative = relative.getParentDirectory();
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index 37bc246916..1324cce3a2 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -107,7 +107,7 @@ public class RuleClass {
static final Function<? super Rule, Map<String, Label>> NO_EXTERNAL_BINDINGS =
Functions.<Map<String, Label>>constant(ImmutableMap.<String, Label>of());
- public static final PathFragment THIRD_PARTY_PREFIX = new PathFragment("third_party");
+ public static final PathFragment THIRD_PARTY_PREFIX = PathFragment.create("third_party");
/**
* A constraint for the package name of the Rule instances.
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 3ccbc1db99..30609168f3 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
@@ -163,7 +163,7 @@ public class PathPackageLocator implements Serializable {
// Replace "%workspace%" with the path of the enclosing workspace directory.
pathElement = pathElement.replace(workspaceWildcard, workspace.getPathString());
- PathFragment pathElementFragment = new PathFragment(pathElement);
+ PathFragment pathElementFragment = PathFragment.create(pathElement);
// If the path string started with "%workspace%" or "/", it is already absolute,
// so the following line is a no-op.
@@ -218,7 +218,7 @@ public class PathPackageLocator implements Serializable {
AtomicReference<? extends UnixGlob.FilesystemCalls> cache = UnixGlob.DEFAULT_SYSCALLS_REF;
// TODO(bazel-team): correctness in the presence of changes to the location of the WORKSPACE
// file.
- return getFilePath(new PathFragment("WORKSPACE"), cache);
+ return getFilePath(PathFragment.create("WORKSPACE"), cache);
}
private Path getFilePath(PathFragment suffix,
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java b/src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java
index d8534caf52..d12b3ac5b5 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java
@@ -69,7 +69,7 @@ public final class TargetPatternResolverUtil {
}
public static PathFragment getPathFragment(String pathPrefix) throws TargetParsingException {
- PathFragment directory = new PathFragment(pathPrefix);
+ PathFragment directory = PathFragment.create(pathPrefix);
if (directory.containsUplevelReferences()) {
throw new TargetParsingException("up-level references are not permitted: '"
+ directory.getPathString() + "'");
diff --git a/src/main/java/com/google/devtools/build/lib/query2/RBuildFilesFunction.java b/src/main/java/com/google/devtools/build/lib/query2/RBuildFilesFunction.java
index e2fb0e4dfd..23a9560b15 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/RBuildFilesFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/RBuildFilesFunction.java
@@ -61,7 +61,7 @@ public class RBuildFilesFunction implements QueryFunction {
new Function<Argument, PathFragment>() {
@Override
public PathFragment apply(Argument argument) {
- return new PathFragment(argument.getWord());
+ return PathFragment.create(argument.getWord());
}
};
diff --git a/src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java b/src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java
index 89c61c26e3..0850fec75a 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java
@@ -227,7 +227,7 @@ public final class TreeNodeRepository extends TreeTraverser<TreeNodeRepository.T
public TreeNode buildFromActionInputs(Iterable<? extends ActionInput> inputs) {
TreeMap<PathFragment, ActionInput> sortedMap = new TreeMap<>();
for (ActionInput input : inputs) {
- sortedMap.put(new PathFragment(input.getExecPathString()), input);
+ sortedMap.put(PathFragment.create(input.getExecPathString()), input);
}
return buildFromActionInputs(sortedMap);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java
index 445716a7ff..435217403e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java
@@ -914,7 +914,7 @@ public final class SkylarkRuleContext implements SkylarkValue {
public Artifact newDirectory(String name, Object siblingArtifactUnchecked) throws EvalException {
checkMutable("experimental_new_directory");
if (siblingArtifactUnchecked == Runtime.NONE) {
- return ruleContext.getPackageRelativeTreeArtifact(new PathFragment(name), newFileRoot());
+ return ruleContext.getPackageRelativeTreeArtifact(PathFragment.create(name), newFileRoot());
}
Artifact siblingArtifact = (Artifact) siblingArtifactUnchecked;
PathFragment original = siblingArtifact.getRootRelativePath();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
index cd6182a7f9..9f5500f062 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
@@ -636,14 +636,14 @@ public class SkylarkRuleImplementationFunctions {
checkConflicts = true;
for (Map.Entry<String, Artifact> entry : symlinks.getContents(
String.class, Artifact.class, "symlinks").entrySet()) {
- builder.addSymlink(new PathFragment(entry.getKey()), entry.getValue());
+ builder.addSymlink(PathFragment.create(entry.getKey()), entry.getValue());
}
}
if (!rootSymlinks.isEmpty()) {
checkConflicts = true;
for (Map.Entry<String, Artifact> entry : rootSymlinks.getContents(
String.class, Artifact.class, "root_symlinks").entrySet()) {
- builder.addRootSymlink(new PathFragment(entry.getKey()), entry.getValue());
+ builder.addRootSymlink(PathFragment.create(entry.getKey()), entry.getValue());
}
}
Runfiles runfiles = builder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
index 55253a0296..d3e325827a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
@@ -90,7 +90,7 @@ public final class AndroidAaptActionHelper {
public void createGenerateResourceSymbolsAction(Artifact javaSourcesJar,
Artifact rTxt, String javaPackage, boolean inlineConstants) {
// java path from the provided package for the resources
- PathFragment javaPath = new PathFragment(javaPackage.replace('.', '/'));
+ PathFragment javaPath = PathFragment.create(javaPackage.replace('.', '/'));
PathFragment javaResourcesRoot = javaSourcesJar.getRoot().getExecPath().getRelative(
ruleContext.getUniqueDirectory("_java_resources"));
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 c917b5dd06..91a43c0171 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
@@ -772,7 +772,7 @@ public class AndroidCommon {
}
public static PathFragment getAssetDir(RuleContext ruleContext) {
- return new PathFragment(ruleContext.attributes().get(
+ return PathFragment.create(ruleContext.attributes().get(
ResourceType.ASSETS.getAttribute() + "_dir",
Type.STRING));
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java
index 1f8b0b64b3..7326e171a6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java
@@ -256,7 +256,7 @@ public class AndroidIdlHelper {
// Reconstruct the package tree under <rule>_aidl to avoid a name conflict
// if the same AIDL files are used in multiple targets.
PathFragment javaOutputPath = FileSystemUtils.replaceExtension(
- new PathFragment(ruleName + "_aidl").getRelative(idl.getRootRelativePath()),
+ PathFragment.create(ruleName + "_aidl").getRelative(idl.getRootRelativePath()),
".java");
Artifact output = ruleContext.getGenfilesArtifact(javaOutputPath.getPathString());
outputJavaSources.put(idl, output);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
index d690366140..1821c4b4b4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
@@ -154,7 +154,7 @@ public final class ApplicationManifest {
*/
public static ApplicationManifest generatedManifest(RuleContext ruleContext) {
Artifact generatedManifest = ruleContext.getUniqueDirectoryArtifact(
- ruleContext.getRule().getName() + "_generated", new PathFragment("AndroidManifest.xml"),
+ ruleContext.getRule().getName() + "_generated", PathFragment.create("AndroidManifest.xml"),
ruleContext.getBinOrGenfilesDirectory());
String manifestPackage = AndroidCommon.getJavaPackage(ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
index b5a8c5f6c6..48783e68a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
@@ -139,7 +139,7 @@ public final class NativeLibs {
for (Map.Entry<String, Iterable<Artifact>> entry : nativeLibs.entrySet()) {
String arch = entry.getKey();
for (Artifact lib : entry.getValue()) {
- symlinks.put(new PathFragment(arch + "/" + lib.getExecPath().getBaseName()), lib);
+ symlinks.put(PathFragment.create(arch + "/" + lib.getExecPath().getBaseName()), lib);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 950c800dd2..9b9ae3118f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -220,9 +220,9 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
// linkopt "-shared", which causes the result of linking to be a shared
// library. In this case, the name of the executable target should end
// in ".so" or "dylib" or ".dll".
- PathFragment binaryPath = new PathFragment(ruleContext.getTarget().getName());
+ PathFragment binaryPath = PathFragment.create(ruleContext.getTarget().getName());
if (!isLinkShared(ruleContext)) {
- binaryPath = new PathFragment(binaryPath.getPathString() + OsUtils.executableExtension());
+ binaryPath = PathFragment.create(binaryPath.getPathString() + OsUtils.executableExtension());
}
Artifact binary = ruleContext.getBinArtifact(binaryPath);
@@ -676,7 +676,7 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
PathFragment intermediatePath =
FileSystemUtils.appendWithoutExtension(outputPath, "-" + orderNumber);
return ruleContext.getPackageRelativeArtifact(
- new PathFragment(INTERMEDIATE_DWP_DIR + "/" + intermediatePath.getPathString()),
+ PathFragment.create(INTERMEDIATE_DWP_DIR + "/" + intermediatePath.getPathString()),
dwpOutput.getRoot());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcIncLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcIncLibrary.java
index e2288523a7..e3b9b85354 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcIncLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcIncLibrary.java
@@ -81,7 +81,7 @@ public abstract class CcIncLibrary implements RuleConfiguredTargetFactory {
// versions. Previous Blaze versions created a directory symlink; the new version does not
// detect that the output directory isn't a directory, and tries to put the symlinks into what
// is actually a symlink into the source tree.
- PathFragment includeDirectory = new PathFragment("_")
+ PathFragment includeDirectory = PathFragment.create("_")
.getRelative(ruleContext.getTarget().getName());
Root configIncludeDirectory =
ruleContext.getConfiguration().getIncludeDirectory(ruleContext.getRule().getRepository());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
index e2c04b7608..3d727aefa1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
@@ -156,7 +156,7 @@ public abstract class CcLibrary implements RuleConfiguredTargetFactory {
if (outs.size() > 1) {
ruleContext.attributeError("outs", "must be a singleton list");
} else if (outs.size() == 1) {
- PathFragment soImplFilename = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment soImplFilename = PathFragment.create(ruleContext.getLabel().getName());
soImplFilename = soImplFilename.replaceName(outs.get(0));
if (!soImplFilename.getPathString().endsWith(".so")) { // Sanity check.
ruleContext.attributeError("outs", "file name must end in '.so'");
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 248bcfd23f..83eb0ff321 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
@@ -1197,13 +1197,13 @@ public final class CcLibraryHelper {
PathFragment prefix =
ruleContext.attributes().isAttributeValueExplicitlySpecified("include_prefix")
- ? new PathFragment(ruleContext.attributes().get("include_prefix", Type.STRING))
+ ? PathFragment.create(ruleContext.attributes().get("include_prefix", Type.STRING))
: null;
PathFragment stripPrefix;
if (ruleContext.attributes().isAttributeValueExplicitlySpecified("strip_include_prefix")) {
- stripPrefix = new PathFragment(
- ruleContext.attributes().get("strip_include_prefix", Type.STRING));
+ stripPrefix =
+ PathFragment.create(ruleContext.attributes().get("strip_include_prefix", Type.STRING));
if (stripPrefix.isAbsolute()) {
stripPrefix = ruleContext.getLabel().getPackageIdentifier().getRepository().getSourceRoot()
.getRelative(stripPrefix.toRelative());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
index 73060ef00f..9cb154f3db 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
@@ -61,7 +61,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
* This file (found under the sysroot) may be unconditionally included in every C/C++ compilation.
*/
private static final PathFragment BUILTIN_INCLUDE_FILE_SUFFIX =
- new PathFragment("include/stdc-predef.h");
+ PathFragment.create("include/stdc-predef.h");
@Override
public ConfiguredTarget create(RuleContext ruleContext)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
index b5b1183547..d63b01d785 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -2072,7 +2072,7 @@ public class CcToolchainFeatures implements Serializable {
*/
String getArtifactNameForCategory(ArtifactCategory artifactCategory, String outputName)
throws ExpansionException {
- PathFragment output = new PathFragment(outputName);
+ PathFragment output = PathFragment.create(outputName);
ArtifactNamePattern patternForCategory = null;
for (ArtifactNamePattern artifactNamePattern : artifactNamePatterns) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java
index 30a5515b3e..8e49f99c75 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java
@@ -34,13 +34,13 @@ public final class CppBuildInfo implements BuildInfoFactory {
public static final BuildInfoKey KEY = new BuildInfoKey("C++");
private static final PathFragment BUILD_INFO_NONVOLATILE_HEADER_NAME =
- new PathFragment("build-info-nonvolatile.h");
+ PathFragment.create("build-info-nonvolatile.h");
private static final PathFragment BUILD_INFO_VOLATILE_HEADER_NAME =
- new PathFragment("build-info-volatile.h");
+ PathFragment.create("build-info-volatile.h");
// TODO(bazel-team): (2011) Get rid of the redacted build info. We should try to make
// the linkstamping process handle the case where those values are undefined.
private static final PathFragment BUILD_INFO_REDACTED_HEADER_NAME =
- new PathFragment("build-info-redacted.h");
+ PathFragment.create("build-info-redacted.h");
@Override
public BuildInfoCollection create(BuildInfoContext buildInfoContext, BuildConfiguration config,
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 84b3c85a93..741ca596c8 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
@@ -614,7 +614,7 @@ public class CppCompileAction extends AbstractAction
for (String opt : cppCompileCommandLine.copts) {
if (opt.startsWith("-I") && opt.length() > 2) {
// We insist on the combined form "-Idir".
- result.add(new PathFragment(opt.substring(2)));
+ result.add(PathFragment.create(opt.substring(2)));
}
}
return result.build();
@@ -634,10 +634,10 @@ public class CppCompileAction extends AbstractAction
String opt = compilerOptions.get(i);
if (opt.startsWith("-isystem")) {
if (opt.length() > 8) {
- result.add(new PathFragment(opt.substring(8).trim()));
+ result.add(PathFragment.create(opt.substring(8).trim()));
} else if (i + 1 < compilerOptions.size()) {
i++;
- result.add(new PathFragment(compilerOptions.get(i)));
+ result.add(PathFragment.create(compilerOptions.get(i)));
} else {
System.err.println("WARNING: dangling -isystem flag in options for " + prettyPrint());
}
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 2646692bfe..2b7669f17b 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
@@ -474,7 +474,7 @@ public class CppCompileActionBuilder {
continue;
}
// One starting ../ is okay for getting to a sibling repository.
- if (include.startsWith(new PathFragment(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/CppCompileActionTemplate.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java
index 8b80179a44..ea0697cd67 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java
@@ -79,7 +79,7 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile
String outputName = outputTreeFileArtifactName(inputTreeFileArtifact);
TreeFileArtifact outputTreeFileArtifact = ActionInputHelper.treeFileArtifact(
outputTreeArtifact,
- new PathFragment(outputName),
+ PathFragment.create(outputName),
artifactOwner);
expandedActions.add(createAction(inputTreeFileArtifact, outputTreeFileArtifact));
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 f658f6732e..843a72c932 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
@@ -190,7 +190,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
PathFragment defaultSysroot =
toolchain.getBuiltinSysroot().length() == 0
? null
- : new PathFragment(toolchain.getBuiltinSysroot());
+ : PathFragment.create(toolchain.getBuiltinSysroot());
if ((defaultSysroot != null) && !defaultSysroot.isNormalized()) {
throw new InvalidConfigurationException(
"The built-in sysroot '" + defaultSysroot + "' is not normalized.");
@@ -502,7 +502,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
this.toolPaths = Maps.newHashMap();
for (CrosstoolConfig.ToolPath tool : toolchain.getToolPathList()) {
- PathFragment path = new PathFragment(tool.getPath());
+ PathFragment path = PathFragment.create(tool.getPath());
if (!path.isNormalized()) {
throw new IllegalArgumentException("The include path '" + tool.getPath()
+ "' is not normalized.");
@@ -604,7 +604,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
// The default value for optional string attributes is the empty string.
PathFragment defaultSysroot = toolchain.getBuiltinSysroot().length() == 0
? null
- : new PathFragment(toolchain.getBuiltinSysroot());
+ : PathFragment.create(toolchain.getBuiltinSysroot());
if ((defaultSysroot != null) && !defaultSysroot.isNormalized()) {
throw new IllegalArgumentException("The built-in sysroot '" + defaultSysroot
+ "' is not normalized.");
@@ -791,7 +791,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
gccToolPath = tool.getPath();
linkerToolPath =
crosstoolTopPathFragment
- .getRelative(new PathFragment(tool.getPath()))
+ .getRelative(PathFragment.create(tool.getPath()))
.getPathString();
}
}
@@ -1181,7 +1181,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
}
}
- PathFragment path = new PathFragment(pathString);
+ PathFragment path = PathFragment.create(pathString);
if (!path.isNormalized()) {
throw new InvalidConfigurationException("The include path '" + s + "' is not normalized.");
}
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 a94d10ea6d..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
@@ -283,7 +283,7 @@ public class CppHelper {
* Returns the directory where object files are created.
*/
public static PathFragment getObjDirectory(Label ruleLabel) {
- return AnalysisUtils.getUniqueDirectory(ruleLabel, new PathFragment("_objs"));
+ return AnalysisUtils.getUniqueDirectory(ruleLabel, PathFragment.create("_objs"));
}
/**
@@ -360,7 +360,7 @@ public class CppHelper {
BuildConfiguration config,
LinkTargetType linkType,
String linkedArtifactNameSuffix) {
- PathFragment name = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment name = PathFragment.create(ruleContext.getLabel().getName());
if (linkType != LinkTargetType.EXECUTABLE) {
name = name.replaceName(
"lib" + name.getBaseName() + linkedArtifactNameSuffix + linkType.getExtension());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
index bca504c0cf..1acc9b4909 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
@@ -919,7 +919,7 @@ public final class CppModel {
builder
.setPicMode(usePic)
.setOutputs(ruleContext, outputCategory, outputNameBase, generateDotd)
- .setTempOutputFile(new PathFragment(tempOutputName));
+ .setTempOutputFile(PathFragment.create(tempOutputName));
setupCompileBuildVariables(
builder,
@@ -969,7 +969,7 @@ public final class CppModel {
}
String linkedName = CppHelper.getArtifactNameForCategory(
ruleContext, ccToolchain, linkTargetType.getLinkerOutput(), maybePicName);
- PathFragment artifactFragment = new PathFragment(ruleContext.getLabel().getName())
+ PathFragment artifactFragment = PathFragment.create(ruleContext.getLabel().getName())
.getParentDirectory().getRelative(linkedName);
result = ruleContext.getPackageRelativeArtifact(
@@ -1042,7 +1042,7 @@ public final class CppModel {
// If the crosstool is configured to select an output artifact, we use that selection.
// Otherwise, we use linux defaults.
Artifact linkedArtifact = getLinkedArtifact(linkType);
- PathFragment labelName = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment labelName = PathFragment.create(ruleContext.getLabel().getName());
String libraryIdentifier = ruleContext.getPackageDirectory().getRelative(
labelName.replaceName("lib" + labelName.getBaseName())).getPathString();
CppLinkAction maybePicAction =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupport.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupport.java
index 77e653c4d9..9930e35dd9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupport.java
@@ -127,7 +127,7 @@ public class FdoSupport {
* Path within profile data .zip files that is considered the root of the
* profile information directory tree.
*/
- private static final PathFragment ZIP_ROOT = new PathFragment("/");
+ private static final PathFragment ZIP_ROOT = PathFragment.create("/");
/**
* Returns true if the given fdoFile represents an AutoFdo profile.
@@ -220,7 +220,7 @@ public class FdoSupport {
this.fdoRootExecPath = fdoRootExecPath;
this.fdoPath = fdoProfile == null
? null
- : FileSystemUtils.removeExtension(new PathFragment("_fdo").getChild(
+ : FileSystemUtils.removeExtension(PathFragment.create("_fdo").getChild(
fdoProfile.getBaseName()));
this.lipoMode = lipoMode;
this.fdoMode = fdoMode;
@@ -264,7 +264,7 @@ public class FdoSupport {
PathFragment fdoRootExecPath = fdoProfile == null
? null
: fdoRoot.getExecPath().getRelative(FileSystemUtils.removeExtension(
- new PathFragment("_fdo").getChild(fdoProfile.getBaseName())));
+ PathFragment.create("_fdo").getChild(fdoProfile.getBaseName())));
if (fdoProfile != null) {
if (lipoMode != LipoMode.OFF) {
@@ -413,12 +413,12 @@ public class FdoSupport {
if (!line.isEmpty()) {
// We can't yet fully check the validity of a line. this is done later
// when we actually parse the contained paths.
- PathFragment execPath = new PathFragment(line);
+ PathFragment execPath = PathFragment.create(line);
if (execPath.isAbsolute()) {
throw new FdoException("Absolute paths not allowed in gcda imports file " + importsFile
+ ": " + execPath);
}
- importsBuilder.put(key, new PathFragment(line));
+ importsBuilder.put(key, PathFragment.create(line));
}
}
}
@@ -440,7 +440,7 @@ public class FdoSupport {
if (colonIndex < 0) {
continue;
}
- PathFragment key = new PathFragment(line.substring(0, colonIndex));
+ PathFragment key = PathFragment.create(line.substring(0, colonIndex));
if (key.isAbsolute()) {
throw new FdoException("Absolute paths not allowed in afdo imports file " + importsFile
+ ": " + key);
@@ -450,7 +450,7 @@ public class FdoSupport {
continue;
}
- importBuilder.put(key, new PathFragment(auxFile));
+ importBuilder.put(key, PathFragment.create(auxFile));
}
}
return importBuilder.build();
@@ -665,7 +665,7 @@ public class FdoSupport {
}
private static PathFragment getAutoProfileRootRelativePath(Path fdoProfile) {
- return new PathFragment(fdoProfile.getBaseName());
+ return PathFragment.create(fdoProfile.getBaseName());
}
@@ -674,7 +674,7 @@ public class FdoSupport {
}
private static PathFragment getLLVMProfileRootRelativePath(Path fdoProfile) {
- return new PathFragment(fdoProfile.getBaseName());
+ return PathFragment.create(fdoProfile.getBaseName());
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendAction.java
index 9af100ffd8..4fa0a82a10 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendAction.java
@@ -117,14 +117,14 @@ public final class LTOBackendAction extends SpawnAction {
try {
for (String line : FileSystemUtils.iterateLinesAsLatin1(imports.getPath())) {
if (!line.isEmpty()) {
- PathFragment execPath = new PathFragment(line);
+ PathFragment execPath = PathFragment.create(line);
if (execPath.isAbsolute()) {
throw new ActionExecutionException(
"Absolute paths not allowed in imports file " + imports.getPath() + ": " + execPath,
this,
false);
}
- importSet.add(new PathFragment(line));
+ importSet.add(PathFragment.create(line));
}
}
} catch (IOException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
index c2bca35809..e524b1e12c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
@@ -139,7 +139,7 @@ public final class SolibSymlinkAction extends AbstractAction {
*/
public static Artifact getCppRuntimeSymlink(RuleContext ruleContext, Artifact library,
String solibDirOverride, BuildConfiguration configuration) {
- PathFragment solibDir = new PathFragment(solibDirOverride != null
+ PathFragment solibDir = PathFragment.create(solibDirOverride != null
? solibDirOverride
: configuration.getFragment(CppConfiguration.class).getSolibDirectory());
PathFragment symlinkName = solibDir.getRelative(library.getRootRelativePath().getBaseName());
@@ -181,7 +181,7 @@ public final class SolibSymlinkAction extends AbstractAction {
String escapedRulePath = Actions.escapedPath(
"_" + ruleContext.getLabel());
String soname = getDynamicLibrarySoname(libraryPath, preserveName);
- PathFragment solibDir = new PathFragment(cppConfiguration.getSolibDirectory());
+ PathFragment solibDir = PathFragment.create(cppConfiguration.getSolibDirectory());
if (preserveName) {
String escapedLibraryPath =
Actions.escapedPath("_" + libraryPath.getParentDirectory().getPathString());
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 db3569a370..90de182573 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
@@ -204,7 +204,7 @@ public final class ExtraActionSpec implements TransitiveInfoProvider {
private Artifact getRootRelativePath(String template, RuleContext ruleContext) {
PathFragment extraActionPackageFragment = label.getPackageIdentifier().getSourceRoot();
PathFragment extraActionPrefix = extraActionPackageFragment.getRelative(label.getName());
- PathFragment rootRelativePath = new PathFragment("extra_actions")
+ PathFragment rootRelativePath = PathFragment.create("extra_actions")
.getRelative(extraActionPrefix)
.getRelative(ruleContext.getPackageDirectory())
.getRelative(template);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index e6bc5587d7..60aa02855c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -58,7 +58,7 @@ import javax.annotation.Nullable;
* An implementation of java_binary.
*/
public class JavaBinary implements RuleConfiguredTargetFactory {
- private static final PathFragment CPP_RUNTIMES = new PathFragment("_cpp_runtimes");
+ private static final PathFragment CPP_RUNTIMES = PathFragment.create("_cpp_runtimes");
private final JavaSemantics semantics;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
index 95e1cc5a5d..7adaea6372 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
@@ -39,11 +39,11 @@ public abstract class JavaBuildInfoFactory implements BuildInfoFactory {
public static final BuildInfoKey KEY = new BuildInfoKey("Java");
static final PathFragment BUILD_INFO_NONVOLATILE_PROPERTIES_NAME =
- new PathFragment("build-info-nonvolatile.properties");
+ PathFragment.create("build-info-nonvolatile.properties");
static final PathFragment BUILD_INFO_VOLATILE_PROPERTIES_NAME =
- new PathFragment("build-info-volatile.properties");
+ PathFragment.create("build-info-volatile.properties");
static final PathFragment BUILD_INFO_REDACTED_PROPERTIES_NAME =
- new PathFragment("build-info-redacted.properties");
+ PathFragment.create("build-info-redacted.properties");
private static final DateTimeFormatter DEFAULT_TIME_FORMAT =
DateTimeFormat.forPattern("EEE MMM d HH:mm:ss yyyy");
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index b5ab681d1f..1712d028b4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -502,7 +502,7 @@ public class JavaCommon {
if (!javaExecutable.isAbsolute()) {
javaExecutable =
- new PathFragment(new PathFragment(ruleContext.getWorkspaceName()), javaExecutable);
+ PathFragment.create(PathFragment.create(ruleContext.getWorkspaceName()), javaExecutable);
}
javaExecutable = javaExecutable.normalize();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
index b115dee4c9..fc44f09b70 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
@@ -116,7 +116,7 @@ public abstract class JavaHelper {
PathFragment rootRelativePath = resource.getRootRelativePath();
if (!resource.getOwner().getWorkspaceRoot().isEmpty()) {
- PathFragment workspace = new PathFragment(resource.getOwner().getWorkspaceRoot());
+ PathFragment workspace = PathFragment.create(resource.getOwner().getWorkspaceRoot());
rootRelativePath = rootRelativePath.relativeTo(workspace);
}
@@ -125,8 +125,8 @@ public abstract class JavaHelper {
return semantics.getDefaultJavaResourcePath(rootRelativePath);
}
- PathFragment prefix = new PathFragment(
- ruleContext.attributes().get("resource_strip_prefix", Type.STRING));
+ PathFragment prefix =
+ PathFragment.create(ruleContext.attributes().get("resource_strip_prefix", Type.STRING));
if (!rootRelativePath.startsWith(prefix)) {
ruleContext.attributeError("resource_strip_prefix", String.format(
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 6501b31aac..4006bc872f 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
@@ -153,7 +153,7 @@ public final class JvmConfigurationLoader implements ConfigurationFragmentFactor
}
private static Jvm createLegacy(String javaHome) throws InvalidConfigurationException {
- PathFragment javaHomePathFrag = new PathFragment(javaHome);
+ PathFragment javaHomePathFrag = PathFragment.create(javaHome);
if (!javaHomePathFrag.isAbsolute()) {
throw new InvalidConfigurationException(
"Illegal javabase value '" + javaHome + "', javabase must be an absolute path or label");
diff --git a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
index 6ec5120849..dc9e9e8ca7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
@@ -107,7 +107,7 @@ public abstract class NativeDepsHelper {
return null;
}
- PathFragment labelName = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment labelName = PathFragment.create(ruleContext.getLabel().getName());
String libraryIdentifier = ruleContext.getUniqueDirectory(ANDROID_UNIQUE_DIR)
.getRelative(labelName.replaceName("lib" + labelName.getBaseName()))
.getPathString();
@@ -260,11 +260,11 @@ public abstract class NativeDepsHelper {
* symlink for the native library for the specified rule.
*/
private static PathFragment getRuntimeLibraryPath(RuleContext ruleContext, Artifact lib) {
- PathFragment relativePath = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment relativePath = PathFragment.create(ruleContext.getLabel().getName());
PathFragment libParentDir =
relativePath.replaceName(lib.getExecPath().getParentDirectory().getBaseName());
String libName = lib.getExecPath().getBaseName();
- return new PathFragment(libParentDir, new PathFragment(libName));
+ return PathFragment.create(libParentDir, PathFragment.create(libName));
}
/**
@@ -305,6 +305,6 @@ public abstract class NativeDepsHelper {
for (String feature : features) {
fp.addString(feature);
}
- return new PathFragment("_nativedeps/" + fp.hexDigestAndReset());
+ return PathFragment.create("_nativedeps/" + fp.hexDigestAndReset());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java
index ab2bc95fa0..9d0e3c27c4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java
@@ -345,7 +345,7 @@ final class BundleSupport {
ruleContext.registerAction(
ObjcRuleClasses.spawnAppleEnvActionBuilder(appleConfiguration, platform)
.setMnemonic("ConvertStringsPlist")
- .setExecutable(new PathFragment("/usr/bin/plutil"))
+ .setExecutable(PathFragment.create("/usr/bin/plutil"))
.setCommandLine(CustomCommandLine.builder()
.add("-convert").add("binary1")
.addExecPath("-o", bundled)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java b/src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java
index 13bc0d97dd..39b05cbb3f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java
@@ -590,7 +590,7 @@ final class Bundling {
public Map<String, String> variableSubstitutions() {
return ImmutableMap.of(
"EXECUTABLE_NAME", Strings.nullToEmpty(executableName),
- "BUNDLE_NAME", new PathFragment(getBundleDir()).getBaseName(),
+ "BUNDLE_NAME", PathFragment.create(getBundleDir()).getBaseName(),
"PRODUCT_NAME", name);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index c0859047de..6532052044 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -663,7 +663,7 @@ public abstract class CompilationSupport {
ImmutableList.Builder<PathFragment> nonPropagatedHeaderSearchPaths =
new ImmutableList.Builder<>();
for (String includeDirOption : includeDirOptions) {
- nonPropagatedHeaderSearchPaths.add(new PathFragment(includeDirOption.substring(2)));
+ nonPropagatedHeaderSearchPaths.add(PathFragment.create(includeDirOption.substring(2)));
}
// We also need to add the -isystem directories from the CC header providers. ObjCommon
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
index f001f95115..b2642f1e33 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
@@ -190,7 +190,7 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
throws InterruptedException {
Preconditions.checkNotNull(ccToolchain);
Preconditions.checkNotNull(fdoSupport);
- PathFragment labelName = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment labelName = PathFragment.create(ruleContext.getLabel().getName());
String libraryIdentifier =
ruleContext
.getPackageDirectory()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java b/src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java
index ad528645db..dcd8bca663 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java
@@ -104,7 +104,7 @@ public class HeaderThinning implements IncludeProcessing {
continue;
}
- PathFragment headerPath = new PathFragment(line);
+ PathFragment headerPath = PathFragment.create(line);
Artifact header = inputArtifactsMap.get(headerPath);
if (header == null) {
missing.add(headerPath);
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 620010edd4..337ee963c6 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
@@ -117,7 +117,7 @@ public final class IntermediateArtifacts {
* of the {@link PathFragment} corresponding to the owner {@link Label}.
*/
private Artifact appendExtension(String extension) {
- PathFragment name = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment name = PathFragment.create(ruleContext.getLabel().getName());
return scopedArtifact(name.replaceName(addOutputPrefix(name.getBaseName(), extension)));
}
@@ -135,7 +135,7 @@ public final class IntermediateArtifacts {
* the end of the {@link PathFragment} corresponding to the owner {@link Label}.
*/
private Artifact appendExtensionInGenfiles(String extension) {
- PathFragment name = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment name = PathFragment.create(ruleContext.getLabel().getName());
return scopedArtifact(
name.replaceName(addOutputPrefix(name.getBaseName(), extension)), /* inGenfiles = */ true);
}
@@ -252,14 +252,14 @@ public final class IntermediateArtifacts {
*/
public Artifact archive() {
// The path will be {RULE_PACKAGE}/lib{RULEBASENAME}{SUFFIX}.a
- String basename = new PathFragment(ruleContext.getLabel().getName()).getBaseName();
- return scopedArtifact(new PathFragment(String.format(
+ String basename = PathFragment.create(ruleContext.getLabel().getName()).getBaseName();
+ return scopedArtifact(PathFragment.create(String.format(
"lib%s%s.a", basename, archiveFileNameSuffix)));
}
private Artifact inUniqueObjsDir(Artifact source, String extension) {
PathFragment uniqueDir =
- new PathFragment("_objs").getRelative(ruleContext.getLabel().getName());
+ 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/objc/IosFramework.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java
index ee9b83b8bd..60bfec11ba 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java
@@ -94,13 +94,13 @@ public class IosFramework extends ReleaseBundlingTargetFactory {
// Create framework binary
Artifact frameworkBinary =
- outputArtifact(ruleContext, new PathFragment(bundleName(ruleContext)));
+ outputArtifact(ruleContext, PathFragment.create(bundleName(ruleContext)));
builder.put(intermediateArtifacts.combinedArchitectureBinary(), frameworkBinary);
// Create framework headers
for (Pair<Artifact, Label> header : headers) {
Artifact frameworkHeader =
- outputArtifact(ruleContext, new PathFragment("Headers/" + header.first.getFilename()));
+ outputArtifact(ruleContext, PathFragment.create("Headers/" + header.first.getFilename()));
builder.put(header.first, frameworkHeader);
}
@@ -160,9 +160,9 @@ public class IosFramework extends ReleaseBundlingTargetFactory {
*/
private Artifact outputArtifact(RuleContext ruleContext, PathFragment path) {
PathFragment frameworkRoot =
- new PathFragment(
- new PathFragment("_frameworks"),
- new PathFragment(bundleName(ruleContext) + ".framework"),
+ PathFragment.create(
+ PathFragment.create("_frameworks"),
+ PathFragment.create(bundleName(ruleContext) + ".framework"),
path);
return ruleContext.getPackageRelativeArtifact(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
index 451af68adf..2b14cca296 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
@@ -111,7 +111,7 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory {
// We add another header search path with gen root if we have generated sources to translate.
for (Artifact sourceToTranslate : sourcesToTranslate) {
if (!sourceToTranslate.isSourceArtifact()) {
- headerSearchPaths.add(new PathFragment(objcFileRootExecPath, genRoot));
+ headerSearchPaths.add(PathFragment.create(objcFileRootExecPath, genRoot));
return headerSearchPaths.build();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index ad677f6a89..3480cfcdef 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -686,7 +686,7 @@ public final class ObjcCommon {
static ImmutableSet<PathFragment> userHeaderSearchPaths(
ObjcProvider provider, BuildConfiguration config) {
return ImmutableSet.<PathFragment>builder()
- .add(new PathFragment("."))
+ .add(PathFragment.create("."))
.add(config.getGenfilesFragment())
.addAll(provider.get(IQUOTE))
.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
index 46665908ee..03c2ae243f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
@@ -119,7 +119,7 @@ public class ObjcProviderSkylarkConverters {
validateTypes(skylarkValue, String.class, javaKey.getSkylarkKeyName());
NestedSetBuilder<PathFragment> result = NestedSetBuilder.stableOrder();
for (String path : ((SkylarkNestedSet) skylarkValue).toCollection(String.class)) {
- result.add(new PathFragment(path));
+ result.add(PathFragment.create(path));
}
return result.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
index 455ee70391..2505835104 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
@@ -551,7 +551,7 @@ final class ProtobufSupport {
// of dependers.
PathFragment rootRelativeOutputDir = ruleContext.getUniqueDirectory(UNIQUE_DIRECTORY_NAME);
- return new PathFragment(
+ return PathFragment.create(
buildConfiguration.getBinDirectory().getExecPath(), rootRelativeOutputDir);
}
@@ -562,10 +562,9 @@ final class ProtobufSupport {
String protoFileName = FileSystemUtils.removeExtension(protoFile.getFilename());
String generatedOutputName = attributes.getGeneratedProtoFilename(protoFileName, true);
- PathFragment generatedFilePath =
- new PathFragment(
- protoFile.getRootRelativePath().getParentDirectory(),
- new PathFragment(generatedOutputName));
+ PathFragment generatedFilePath = PathFragment.create(
+ protoFile.getRootRelativePath().getParentDirectory(),
+ PathFragment.create(generatedOutputName));
PathFragment outputFile = FileSystemUtils.appendExtension(generatedFilePath, extension);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
index 54d8904492..0a19cb18ca 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
@@ -86,7 +86,7 @@ final class ProtocolBuffers2Support {
.addInputs(attributes.getOptionsFile().asSet())
.addOutputs(getGeneratedProtoOutputs(getHeaderExtension()))
.addOutputs(getGeneratedProtoOutputs(getSourceExtension()))
- .setExecutable(new PathFragment("/usr/bin/python"))
+ .setExecutable(PathFragment.create("/usr/bin/python"))
.setCommandLine(getGenerationCommandLine())
.build(ruleContext));
return this;
@@ -203,9 +203,8 @@ final class ProtocolBuffers2Support {
new ImmutableSet.Builder<PathFragment>().add(getWorkspaceRelativeOutputDir());
if (attributes.needsPerProtoIncludes()) {
- PathFragment generatedProtoDir =
- new PathFragment(
- getWorkspaceRelativeOutputDir(), ruleContext.getLabel().getPackageFragment());
+ PathFragment generatedProtoDir = PathFragment.create(
+ getWorkspaceRelativeOutputDir(), ruleContext.getLabel().getPackageFragment());
searchPathEntriesBuilder
.add(generatedProtoDir)
@@ -223,7 +222,7 @@ final class ProtocolBuffers2Support {
// of dependers.
PathFragment rootRelativeOutputDir = ruleContext.getUniqueDirectory(UNIQUE_DIRECTORY_NAME);
- return new PathFragment(
+ return PathFragment.create(
ruleContext.getBinOrGenfilesDirectory().getExecPath(), rootRelativeOutputDir);
}
@@ -233,10 +232,9 @@ final class ProtocolBuffers2Support {
String protoFileName = FileSystemUtils.removeExtension(protoFile.getFilename());
String generatedOutputName = attributes.getGeneratedProtoFilename(protoFileName, false);
- PathFragment generatedFilePath =
- new PathFragment(
- protoFile.getRootRelativePath().getParentDirectory(),
- new PathFragment(generatedOutputName));
+ PathFragment generatedFilePath = PathFragment.create(
+ protoFile.getRootRelativePath().getParentDirectory(),
+ PathFragment.create(generatedOutputName));
PathFragment outputFile = FileSystemUtils.appendExtension(generatedFilePath, extension);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoSourceFileBlacklist.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoSourceFileBlacklist.java
index 6ba951753d..7f38142785 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoSourceFileBlacklist.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoSourceFileBlacklist.java
@@ -41,7 +41,8 @@ import java.util.List;
* to identify these proto files and avoid linking in their associated generated files.
*/
public class ProtoSourceFileBlacklist {
- private static final PathFragment BAZEL_TOOLS_PREFIX = new PathFragment("external/bazel_tools/");
+ private static final PathFragment BAZEL_TOOLS_PREFIX =
+ PathFragment.create("external/bazel_tools/");
private final RuleContext ruleContext;
private final ImmutableSet<PathFragment> blacklistProtoFilePaths;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
index a343883816..2036401394 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
@@ -410,7 +410,7 @@ public final class PyCommon {
}
mainSourceName = ruleName + ".py";
}
- PathFragment mainSourcePath = new PathFragment(mainSourceName);
+ PathFragment mainSourcePath = PathFragment.create(mainSourceName);
Artifact mainArtifact = null;
for (Artifact outItem : ruleContext.getPrerequisiteArtifacts("srcs", Mode.TARGET).list()) {
@@ -433,8 +433,8 @@ public final class PyCommon {
if (!withWorkspaceName) {
return mainArtifact.getRunfilesPath().getPathString();
}
- PathFragment workspaceName = new PathFragment(
- ruleContext.getRule().getPackage().getWorkspaceName());
+ PathFragment workspaceName =
+ PathFragment.create(ruleContext.getRule().getPackage().getWorkspaceName());
return workspaceName.getRelative(mainArtifact.getRunfilesPath()).getPathString();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java
index c2508c2f94..ebe030fa41 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java
@@ -35,8 +35,8 @@ import java.util.Set;
* Various utility methods for Python support.
*/
public final class PythonUtils {
- public static final PathFragment INIT_PY = new PathFragment("__init__.py");
- public static final PathFragment INIT_PYC = new PathFragment("__init__.pyc");
+ public static final PathFragment INIT_PY = PathFragment.create("__init__.py");
+ public static final PathFragment INIT_PYC = PathFragment.create("__init__.pyc");
private static final FileType REQUIRES_INIT_PY = FileType.of(".py", ".so", ".pyc");
@@ -86,7 +86,7 @@ public final class PythonUtils {
private static Artifact get2to3OutputArtifact(RuleContext ruleContext, Artifact input) {
Root root = ruleContext.getConfiguration().getGenfilesDirectory(
ruleContext.getRule().getRepository());
- PathFragment path = new PathFragment("python3").getRelative(input.getRootRelativePath());
+ PathFragment path = PathFragment.create("python3").getRelative(input.getRootRelativePath());
return ruleContext.getShareableArtifact(path, root);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/NewRepositoryFileHandler.java b/src/main/java/com/google/devtools/build/lib/rules/repository/NewRepositoryFileHandler.java
index 29efc78faa..64c4502b71 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/repository/NewRepositoryFileHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/repository/NewRepositoryFileHandler.java
@@ -195,7 +195,7 @@ public class NewRepositoryFileHandler {
}
} else {
// TODO(dmarting): deprecate using a path for the workspace_file attribute.
- PathFragment file = new PathFragment(fileAttribute);
+ PathFragment file = PathFragment.create(fileAttribute);
Path fileTarget = workspacePath.getRelative(file);
if (!fileTarget.exists()) {
throw new RepositoryFunctionException(
@@ -211,7 +211,7 @@ public class NewRepositoryFileHandler {
if (file.isAbsolute()) {
rootedFile =
RootedPath.toRootedPath(
- fileTarget.getParentDirectory(), new PathFragment(fileTarget.getBaseName()));
+ fileTarget.getParentDirectory(), PathFragment.create(fileTarget.getBaseName()));
} else {
rootedFile = RootedPath.toRootedPath(workspacePath, file);
}
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 0b92f0ac7a..51486eda50 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
@@ -298,7 +298,7 @@ public abstract class RepositoryFunction {
} catch (EvalException e) {
throw new RepositoryFunctionException(e, Transience.PERSISTENT);
}
- PathFragment pathFragment = new PathFragment(path);
+ PathFragment pathFragment = PathFragment.create(path);
return workspace.getRelative(pathFragment).asFragment();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryLoaderFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryLoaderFunction.java
index 19af038d62..c6040de671 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryLoaderFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryLoaderFunction.java
@@ -52,7 +52,7 @@ public class RepositoryLoaderFunction implements SkyFunction {
SkyKey workspaceKey =
WorkspaceFileValue.key(
- RootedPath.toRootedPath(repository.getPath(), new PathFragment("WORKSPACE")));
+ RootedPath.toRootedPath(repository.getPath(), PathFragment.create("WORKSPACE")));
WorkspaceFileValue workspacePackage = (WorkspaceFileValue) env.getValue(workspaceKey);
if (workspacePackage == null) {
return null;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java b/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java
index 8b7dea8469..7f42c03889 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java
@@ -116,7 +116,7 @@ public final class BaselineCoverageAction extends AbstractFileWriteAction
RuleContext ruleContext, NestedSet<Artifact> instrumentedFiles) {
// Baseline coverage artifacts will still go into "testlogs" directory.
Artifact coverageData = ruleContext.getPackageRelativeArtifact(
- new PathFragment(ruleContext.getTarget().getName()).getChild("baseline_coverage.dat"),
+ PathFragment.create(ruleContext.getTarget().getName()).getChild("baseline_coverage.dat"),
ruleContext.getConfiguration().getTestLogsDirectory(
ruleContext.getRule().getRepository()));
ruleContext.registerAction(new BaselineCoverageAction(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
index da7963576e..5624b2bddb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
@@ -88,7 +88,7 @@ public final class TestActionBuilder {
// heuristically sharding is currently experimental. Also, we do detect
// false-positive cases and return an error.
return runfilesSupport.getRunfilesSymlinkNames().contains(
- new PathFragment("tools/test_sharding_compliant"));
+ PathFragment.create("tools/test_sharding_compliant"));
}
/**
@@ -180,7 +180,7 @@ public final class TestActionBuilder {
* TestResultAnalyzer to keep track of completed and pending test runs.
*/
private TestParams createTestAction(int shards) {
- PathFragment targetName = new PathFragment(ruleContext.getLabel().getName());
+ PathFragment targetName = PathFragment.create(ruleContext.getLabel().getName());
BuildConfiguration config = ruleContext.getConfiguration();
AnalysisEnvironment env = ruleContext.getAnalysisEnvironment();
Root root = config.getTestLogsDirectory(ruleContext.getRule().getRepository());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
index 01ea45134a..d6c4d45c6d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
@@ -58,7 +58,7 @@ import javax.annotation.Nullable;
*/
// Not final so that we can mock it in tests.
public class TestRunnerAction extends AbstractAction implements NotifyOnActionCacheHit {
- public static final PathFragment COVERAGE_TMP_ROOT = new PathFragment("_coverage");
+ public static final PathFragment COVERAGE_TMP_ROOT = PathFragment.create("_coverage");
// Used for selecting subset of testcase / testmethods.
private static final String TEST_BRIDGE_TEST_FILTER_ENV = "TESTBRIDGE_TEST_ONLY";
@@ -134,7 +134,7 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa
boolean useTestRunner) {
super(owner, inputs,
// Note that this action only cares about the runfiles, not the mapping.
- new RunfilesSupplierImpl(new PathFragment("runfiles"), executionSettings.getRunfiles()),
+ new RunfilesSupplierImpl(PathFragment.create("runfiles"), executionSettings.getRunfiles()),
list(testLog, cacheStatus, coverageArtifact, microCoverageArtifact));
this.runtime = runtime;
this.configuration = Preconditions.checkNotNull(configuration);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java
index 2e9e9de4df..833e01145d 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java
@@ -289,7 +289,7 @@ public class CoverageCommand extends TestCommand {
// filter value much more user-friendly - especially in case of /my/package/... wildcards.
Set<String> parentFilters = Sets.newTreeSet();
String filterString = iterator.next();
- PathFragment parent = new PathFragment(filterString).getParentDirectory();
+ PathFragment parent = PathFragment.create(filterString).getParentDirectory();
while (iterator.hasNext()) {
String current = iterator.next();
if (parent != null && parent.getPathString().length() > 0
@@ -297,7 +297,7 @@ public class CoverageCommand extends TestCommand {
parentFilters.add(parent.getPathString());
} else {
filterString = current;
- parent = new PathFragment(filterString).getParentDirectory();
+ parent = PathFragment.create(filterString).getParentDirectory();
}
}
packageFilters.addAll(parentFilters);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java
index 3d3a9b0066..4f738c7a46 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java
@@ -58,7 +58,7 @@ public final class ProjectFileSupport {
// TODO(bazel-team): This is currently treated as a path relative to the workspace - if the
// cwd is a subdirectory of the workspace, that will be surprising, and we should interpret it
// relative to the cwd instead.
- PathFragment projectFilePath = new PathFragment(targets.get(0).substring(1));
+ PathFragment projectFilePath = PathFragment.create(targets.get(0).substring(1));
List<Path> packagePath = PathPackageLocator.create(
env.getOutputBase(),
optionsParser.getOptions(PackageCacheOptions.class).packagePath,
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java b/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java
index 2eff7c45cc..0a649e93e6 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java
@@ -324,7 +324,7 @@ public class DarwinSandboxedStrategy extends SandboxStrategy {
TestRunnerAction testRunnerAction = ((TestRunnerAction) spawn.getResourceOwner());
RunUnder runUnder = testRunnerAction.getExecutionSettings().getRunUnder();
if (runUnder != null && runUnder.getCommand() != null) {
- PathFragment sourceFragment = new PathFragment(runUnder.getCommand());
+ PathFragment sourceFragment = PathFragment.create(runUnder.getCommand());
Path mount;
if (sourceFragment.isAbsolute()) {
mount = blazeDirs.getFileSystem().getPath(sourceFragment);
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
index e30008e3ae..26fd236adf 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
@@ -51,7 +51,7 @@ public final class SandboxHelpers {
public static ImmutableSet<PathFragment> getOutputFiles(Spawn spawn) {
Builder<PathFragment> outputFiles = ImmutableSet.builder();
for (ActionInput output : spawn.getOutputFiles()) {
- outputFiles.add(new PathFragment(output.getExecPathString()));
+ outputFiles.add(PathFragment.create(output.getExecPathString()));
}
return outputFiles.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java b/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
index d8bb0a7f58..b6bd3c017e 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
@@ -108,7 +108,7 @@ public final class SpawnHelpers {
// symlink referring to "source" has to be created (see below).
PathFragment targetPath;
if (isFilesetManifest) {
- PathFragment targetPathFragment = new PathFragment(fields[0]);
+ PathFragment targetPathFragment = PathFragment.create(fields[0]);
if (!workspaceName.isEmpty()) {
Preconditions.checkState(
targetPathFragment.getSegment(0).equals(workspaceName),
@@ -176,7 +176,7 @@ public final class SpawnHelpers {
// Attempting to mount a non-empty directory results in ERR_DIRECTORY_NOT_EMPTY, so we only
// mount empty TreeArtifacts as directories.
if (containedArtifacts.isEmpty()) {
- PathFragment mount = new PathFragment(input.getExecPathString());
+ PathFragment mount = PathFragment.create(input.getExecPathString());
mounts.put(mount, execRoot.getRelative(mount));
}
}
@@ -186,7 +186,7 @@ public final class SpawnHelpers {
if (input.getExecPathString().contains("internal/_middlemen/")) {
continue;
}
- PathFragment mount = new PathFragment(input.getExecPathString());
+ PathFragment mount = PathFragment.create(input.getExecPathString());
mounts.put(mount, execRoot.getRelative(mount));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesFunction.java
index 11c78aefc8..a3c6768c96 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesFunction.java
@@ -85,7 +85,7 @@ public class BlacklistedPackagePrefixesFunction implements SkyFunction {
@Override
public boolean processLine(String line) throws IOException {
if (!line.isEmpty()) {
- fragments.add(new PathFragment(line));
+ fragments.add(PathFragment.create(line));
}
return true;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java
index f06be6bad2..aa91104394 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java
@@ -128,7 +128,7 @@ public class FileFunction implements SkyFunction {
if (parentFileValue == null) {
return null;
}
- PathFragment baseName = new PathFragment(relativePath.getBaseName());
+ PathFragment baseName = PathFragment.create(relativePath.getBaseName());
RootedPath parentRealRootedPath = parentFileValue.realRootedPath();
realRootedPath = RootedPath.toRootedPath(parentRealRootedPath.getRoot(),
parentRealRootedPath.getRelativePath().getRelative(baseName));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
index f95274c648..fe23f379b4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
@@ -217,7 +217,7 @@ public final class FilesetEntryFunction implements SkyFunction {
public boolean apply(String e) {
// Keep the top-level exclusions only. Do not look for "/" but count the path segments
// instead, in anticipation of future Windows support.
- return new PathFragment(e).segmentCount() == 1;
+ return PathFragment.create(e).segmentCount() == 1;
}
});
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java b/src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java
index 753f920cab..4874d89d5c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java
@@ -79,7 +79,7 @@ public abstract class LocalDiffAwareness implements DiffAwareness {
// There's no good way to automatically detect network file systems. We rely on a blacklist
// for now (and maybe add a command-line option in the future?).
for (String prefix : prefixBlacklist) {
- if (resolvedPathEntryFragment.startsWith(new PathFragment(prefix))) {
+ if (resolvedPathEntryFragment.startsWith(PathFragment.create(prefix))) {
return null;
}
}
@@ -188,7 +188,7 @@ public abstract class LocalDiffAwareness implements DiffAwareness {
public PathFragment apply(Path input) {
Preconditions.checkArgument(
input.startsWith(watchRootPath), "%s %s", input, watchRootPath);
- return new PathFragment(watchRootPath.relativize(input).toString());
+ return PathFragment.create(watchRootPath.relativize(input).toString());
}
};
}
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 e134350061..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
@@ -208,7 +208,7 @@ public class LocalRepositoryLookupFunction implements SkyFunction {
@Override
public boolean apply(@Nullable Rule rule) {
AggregatingAttributeMapper mapper = AggregatingAttributeMapper.of(rule);
- PathFragment pathAttr = new PathFragment(mapper.get("path", Type.STRING));
+ PathFragment pathAttr = PathFragment.create(mapper.get("path", Type.STRING));
return directory.getRelativePath().equals(pathAttr);
}
},
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 1941489a77..23ecccec99 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
@@ -101,7 +101,7 @@ public class PackageFunction implements SkyFunction {
// Not final only for testing.
@Nullable private SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining;
- static final PathFragment DEFAULTS_PACKAGE_NAME = new PathFragment("tools/defaults");
+ static final PathFragment DEFAULTS_PACKAGE_NAME = PathFragment.create("tools/defaults");
public PackageFunction(
PackageFactory packageFactory,
@@ -819,7 +819,7 @@ public class PackageFunction implements SkyFunction {
// exceptions), it reaches here, and we tolerate it.
return false;
}
- PathFragment labelNameFragment = new PathFragment(label.getName());
+ PathFragment labelNameFragment = PathFragment.create(label.getName());
String message = String.format("Label '%s' crosses boundary of subpackage '%s'",
label, containingPkg);
Path containingRoot = containingPkgLookupValue.getContainingPackageRoot();
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 32d1e9007f..7db3a2abdd 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,7 +43,7 @@ public abstract class PackageLookupValue implements SkyValue {
WORKSPACE("WORKSPACE") {
@Override
public PathFragment getBuildFileFragment(PackageIdentifier packageIdentifier) {
- return new PathFragment(BuildFileName.WORKSPACE.getFilename());
+ return PathFragment.create(BuildFileName.WORKSPACE.getFilename());
}
},
BUILD("BUILD") {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java
index 8cc2d812c5..41602146ad 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java
@@ -56,7 +56,7 @@ public class WorkspaceASTFunction implements SkyFunction {
try {
BuildFileAST ast = BuildFileAST.parseBuildFile(
ParserInputSource.create(ruleClassProvider.getDefaultWorkspacePrefix(),
- new PathFragment("/DEFAULT.WORKSPACE")),
+ PathFragment.create("/DEFAULT.WORKSPACE")),
env.getListener());
if (ast.containsErrors()) {
throw new WorkspaceASTFunctionException(
@@ -76,7 +76,7 @@ public class WorkspaceASTFunction implements SkyFunction {
}
ast = BuildFileAST.parseBuildFile(
ParserInputSource.create(ruleClassProvider.getDefaultWorkspaceSuffix(),
- new PathFragment("/DEFAULT.WORKSPACE.SUFFIX")),
+ PathFragment.create("/DEFAULT.WORKSPACE.SUFFIX")),
ast.getStatements(),
env.getListener());
if (ast.containsErrors()) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
index 44d4a9b616..9d28ee8b19 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
@@ -119,7 +119,7 @@ public class SkylarkImports {
@Override
public PathFragment asPathFragment() {
- return new PathFragment(importFile);
+ return PathFragment.create(importFile);
}
@Override
@@ -128,7 +128,7 @@ public class SkylarkImports {
// a subdirectory of the package that contains it. We need to construct a Label with
// the imported file in the same subdirectory of the package.
PathFragment containingDirInPkg =
- (new PathFragment(containingFileLabel.getName())).getParentDirectory();
+ PathFragment.create(containingFileLabel.getName()).getParentDirectory();
String targetNameForImport = containingDirInPkg.getRelative(importFile).toString();
try {
return containingFileLabel.getRelative(targetNameForImport);
@@ -151,7 +151,7 @@ public class SkylarkImports {
@Override
public PathFragment asPathFragment() {
- return new PathFragment(PathFragment.ROOT_DIR).getRelative(importLabel.toPathFragment());
+ return PathFragment.create(PathFragment.ROOT_DIR).getRelative(importLabel.toPathFragment());
}
@Override
@@ -173,7 +173,7 @@ public class SkylarkImports {
@Override
public PathFragment asPathFragment() {
- return new PathFragment(importTarget);
+ return PathFragment.create(importTarget);
}
@Override
@@ -253,7 +253,7 @@ public class SkylarkImports {
if (importString.endsWith(".bzl")) {
throw new SkylarkImportSyntaxException(INVALID_PATH_SYNTAX);
}
- PathFragment importPath = new PathFragment(importString + ".bzl");
+ PathFragment importPath = PathFragment.create(importString + ".bzl");
return new AbsolutePathImport(importString, importPath);
} else if (importString.startsWith(":")) {
// Relative label. We require that relative labels use an explicit ':' prefix to distinguish
diff --git a/src/main/java/com/google/devtools/build/lib/unix/UnixFileSystem.java b/src/main/java/com/google/devtools/build/lib/unix/UnixFileSystem.java
index c21848a9f7..c70420ba7d 100644
--- a/src/main/java/com/google/devtools/build/lib/unix/UnixFileSystem.java
+++ b/src/main/java/com/google/devtools/build/lib/unix/UnixFileSystem.java
@@ -334,7 +334,7 @@ public class UnixFileSystem extends AbstractFileSystemWithCustomStat {
String name = path.toString();
long startTime = Profiler.nanoTimeMaybe();
try {
- return new PathFragment(NativePosixFiles.readlink(name));
+ return PathFragment.create(NativePosixFiles.readlink(name));
} catch (IOException e) {
// EINVAL => not a symbolic link. Anything else is a real error.
throw e.getMessage().endsWith("(Invalid argument)") ? new NotASymlinkException(path) : e;
diff --git a/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java b/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java
index 5ad34d7a34..3013f3e23e 100644
--- a/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java
@@ -135,7 +135,7 @@ public final class OptionsUtils {
@Override
public PathFragment convert(String input) {
- return new PathFragment(input);
+ return PathFragment.create(input);
}
@Override
@@ -155,7 +155,7 @@ public final class OptionsUtils {
List<PathFragment> list = new ArrayList<>();
for (String piece : input.split(":")) {
if (!piece.isEmpty()) {
- list.add(new PathFragment(piece));
+ list.add(PathFragment.create(piece));
}
}
return Collections.unmodifiableList(list);
diff --git a/src/main/java/com/google/devtools/build/lib/util/PathFragmentFilter.java b/src/main/java/com/google/devtools/build/lib/util/PathFragmentFilter.java
index d4eb7d7474..8262c75a16 100644
--- a/src/main/java/com/google/devtools/build/lib/util/PathFragmentFilter.java
+++ b/src/main/java/com/google/devtools/build/lib/util/PathFragmentFilter.java
@@ -51,9 +51,9 @@ public class PathFragmentFilter implements Serializable {
for (String piece : Splitter.on(',').split(input)) {
if (piece.length() > 1 && piece.startsWith("-")) {
- exclusionList.add(new PathFragment(piece.substring(1)));
+ exclusionList.add(PathFragment.create(piece.substring(1)));
} else if (piece.length() > 0) {
- inclusionList.add(new PathFragment(piece));
+ inclusionList.add(PathFragment.create(piece));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java
index bce290eaf4..d77c1d7a3b 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java
@@ -131,7 +131,7 @@ public abstract class FileSystem {
* file system.
*/
public Path getPath(String pathName) {
- return getPath(new PathFragment(pathName));
+ return getPath(PathFragment.create(pathName));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java b/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java
index 9cc3dc78d8..5b3bc1e717 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java
@@ -109,7 +109,7 @@ public class FileSystemUtils {
*/
public static PathFragment relativePath(PathFragment fromDir, PathFragment to) {
if (to.equals(fromDir)) {
- return new PathFragment("."); // same dir, just return '.'
+ return PathFragment.create("."); // same dir, just return '.'
}
if (to.startsWith(fromDir)) {
return to.relativeTo(fromDir); // easy case--it's a descendant
@@ -123,7 +123,7 @@ public class FileSystemUtils {
for (int i = 0; i < levels; i++) {
dotdots.append("../");
}
- return new PathFragment(dotdots.toString()).getRelative(to.relativeTo(ancestor));
+ return PathFragment.create(dotdots.toString()).getRelative(to.relativeTo(ancestor));
}
/**
@@ -229,9 +229,10 @@ public class FileSystemUtils {
int count = path.segmentCount();
for (int i = 0; i < count; i++) {
if (path.getSegment(i).equals(oldSegment)) {
- path = new PathFragment(path.subFragment(0, i),
- new PathFragment(newSegment),
- path.subFragment(i+1, count));
+ path = PathFragment.create(
+ path.subFragment(0, i),
+ PathFragment.create(newSegment),
+ path.subFragment(i+1, count));
if (!replaceAll) {
return path;
}
@@ -287,7 +288,7 @@ public class FileSystemUtils {
* 'user.dir'. This version does not require a {@link FileSystem}.
*/
public static PathFragment getWorkingDirectory() {
- return new PathFragment(System.getProperty("user.dir", "/"));
+ return PathFragment.create(System.getProperty("user.dir", "/"));
}
/****************************************************************************
@@ -356,7 +357,7 @@ public class FileSystemUtils {
*/
@ThreadSafe // but not atomic
public static void ensureSymbolicLink(Path link, String target) throws IOException {
- ensureSymbolicLink(link, new PathFragment(target));
+ ensureSymbolicLink(link, PathFragment.create(target));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java
index e4099693a6..2512308808 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java
@@ -279,7 +279,7 @@ public class JavaIoFileSystem extends AbstractFileSystemWithCustomStat {
long startTime = Profiler.nanoTimeMaybe();
try {
String link = Files.readSymbolicLink(file.toPath()).toString();
- return new PathFragment(link);
+ return PathFragment.create(link);
} catch (java.nio.file.NotLinkException e) {
throw new NotASymlinkException(path);
} catch (java.nio.file.NoSuchFileException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/Path.java b/src/main/java/com/google/devtools/build/lib/vfs/Path.java
index e4088416cc..ac8b756696 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/Path.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/Path.java
@@ -223,7 +223,7 @@ public class Path implements Comparable<Path>, Serializable {
private void readObject(ObjectInputStream in) throws IOException {
fileSystem = fileSystemForSerialization;
String p = in.readUTF();
- PathFragment pf = new PathFragment(p);
+ PathFragment pf = PathFragment.create(p);
PathFragment parentDir = pf.getParentDirectory();
if (parentDir == null) {
this.name = "/";
@@ -725,9 +725,9 @@ public class Path implements Comparable<Path>, Serializable {
} else if (path.equals("..")) {
return isTopLevelDirectory() ? this : parent;
} else if (path.indexOf('/') != -1) {
- return getRelative(new PathFragment(path));
+ return getRelative(PathFragment.create(path));
} else if (path.indexOf(PathFragment.EXTRA_SEPARATOR_CHAR) != -1) {
- return getRelative(new PathFragment(path));
+ return getRelative(PathFragment.create(path));
} else {
return getCachedChildPath(path);
}
@@ -745,7 +745,7 @@ public class Path implements Comparable<Path>, Serializable {
/** Returns an absolute PathFragment representing this path. */
public PathFragment asFragment() {
- return new PathFragment('\0', true, getSegments());
+ return PathFragment.createNoClone('\0', true, getSegments());
}
/**
@@ -777,7 +777,7 @@ public class Path implements Comparable<Path>, Serializable {
currentPath = currentPath.getParentDirectory();
}
if (ancestorPath.equals(currentPath)) {
- return new PathFragment('\0', false, resultSegments);
+ return PathFragment.createNoClone('\0', false, resultSegments);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
index b466fc9629..5a324bec60 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
@@ -57,13 +57,13 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
public static final String ROOT_DIR = "/";
/** An empty path fragment. */
- public static final PathFragment EMPTY_FRAGMENT = new PathFragment("");
+ public static final PathFragment EMPTY_FRAGMENT = create("");
public static final Function<String, PathFragment> TO_PATH_FRAGMENT =
new Function<String, PathFragment>() {
@Override
public PathFragment apply(String str) {
- return new PathFragment(str);
+ return create(str);
}
};
@@ -89,7 +89,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
for (int i = 0; i < segments.length; i++) {
internedSegments[i] = StringCanonicalizer.intern(segments[i]);
}
- return new PathFragment(driveLetter, isAbsolute, internedSegments);
+ return createNoClone(driveLetter, isAbsolute, internedSegments);
}
/** Same as {@link #create(char, boolean, String[])}, except for {@link List}s of segments. */
@@ -98,7 +98,40 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
for (int i = 0; i < segments.size(); i++) {
internedSegments[i] = StringCanonicalizer.intern(segments.get(i));
}
- return new PathFragment(driveLetter, isAbsolute, internedSegments);
+ return createNoClone(driveLetter, isAbsolute, internedSegments);
+ }
+
+ /**
+ * Construct a PathFragment from a java.io.File, which is an absolute or
+ * relative UNIX path. Does not support Windows-style Files.
+ */
+ public static PathFragment create(File path) {
+ return new PathFragment(path);
+ }
+
+ /**
+ * Construct a PathFragment from a string, which is an absolute or relative UNIX or Windows path.
+ */
+ public static PathFragment create(String path) {
+ return new PathFragment(path);
+ }
+
+ /**
+ * Constructs a PathFragment, taking ownership of segments. Package-private,
+ * because it does not perform a defensive clone of the segments array. Used
+ * here in PathFragment, and by Path.asFragment() and Path.relativeTo().
+ */
+ static PathFragment createNoClone(
+ char driveLetter, boolean isAbsolute, String[] segments) {
+ return new PathFragment(driveLetter, isAbsolute, segments);
+ }
+
+ /**
+ * Construct a PathFragment from a sequence of other PathFragments. The new
+ * fragment will be absolute iff the first fragment was absolute.
+ */
+ public static PathFragment create(PathFragment first, PathFragment second, PathFragment... more) {
+ return new PathFragment(first, second, more);
}
// We have 3 word-sized fields (segments, hashCode and path), and 2
@@ -121,9 +154,8 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
private int hashCode;
private String path;
- /**
- * Construct a PathFragment from a string, which is an absolute or relative UNIX or Windows path.
- */
+ /** Don't call this ctor; use {@link #create(String)} instead. */
+ @Deprecated
public PathFragment(String path) {
this.driveLetter =
(OS.getCurrent() == OS.WINDOWS
@@ -145,20 +177,11 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
return c == SEPARATOR_CHAR || c == EXTRA_SEPARATOR_CHAR;
}
- /**
- * Construct a PathFragment from a java.io.File, which is an absolute or
- * relative UNIX path. Does not support Windows-style Files.
- */
- public PathFragment(File path) {
+ private PathFragment(File path) {
this(path.getPath());
}
- /**
- * Constructs a PathFragment, taking ownership of segments. Package-private,
- * because it does not perform a defensive clone of the segments array. Used
- * here in PathFragment, and by Path.asFragment() and Path.relativeTo().
- */
- PathFragment(char driveLetter, boolean isAbsolute, String[] segments) {
+ private PathFragment(char driveLetter, boolean isAbsolute, String[] segments) {
driveLetter = Character.toUpperCase(driveLetter);
if (OS.getCurrent() == OS.WINDOWS
&& segments.length > 0
@@ -175,11 +198,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
this.segments = segments;
}
- /**
- * Construct a PathFragment from a sequence of other PathFragments. The new
- * fragment will be absolute iff the first fragment was absolute.
- */
- public PathFragment(PathFragment first, PathFragment second, PathFragment... more) {
+ private PathFragment(PathFragment first, PathFragment second, PathFragment... more) {
// TODO(bazel-team): The handling of absolute path fragments in this constructor is unexpected.
this.segments = new String[sumLengths(first, second, more)];
int offset = 0;
@@ -420,8 +439,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
return this;
}
- return new PathFragment(driveLetter, isAbsolute,
- subarray(scratchSegments, 0, segmentCount));
+ return createNoClone(driveLetter, isAbsolute, subarray(scratchSegments, 0, segmentCount));
}
/**
@@ -440,9 +458,9 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
if (otherFragment.isAbsolute()) {
return this.driveLetter == '\0' || otherFragment.driveLetter != '\0'
? otherFragment
- : new PathFragment(this.driveLetter, true, otherFragment.segments);
+ : createNoClone(this.driveLetter, true, otherFragment.segments);
} else {
- return new PathFragment(this, otherFragment);
+ return create(this, otherFragment);
}
}
@@ -455,7 +473,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
* with no path normalization or I/O performed.
*/
public PathFragment getRelative(String path) {
- return getRelative(new PathFragment(path));
+ return getRelative(create(path));
}
/**
@@ -474,7 +492,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
baseName = StringCanonicalizer.intern(baseName);
String[] newSegments = Arrays.copyOf(segments, segments.length + 1);
newSegments[newSegments.length - 1] = baseName;
- return new PathFragment(driveLetter, isAbsolute, newSegments);
+ return createNoClone(driveLetter, isAbsolute, newSegments);
}
/**
@@ -525,14 +543,14 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
int length = segments.length - ancestorLength;
String[] resultSegments = subarray(segments, ancestorLength, length);
- return new PathFragment('\0', false, resultSegments);
+ return createNoClone('\0', false, resultSegments);
}
/**
* Returns a relative path fragment to this path, relative to {@code path}.
*/
public PathFragment relativeTo(String path) {
- return relativeTo(new PathFragment(path));
+ return relativeTo(create(path));
}
/**
@@ -619,8 +637,11 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
toString(), beginIndex, endIndex));
}
boolean isAbsolute = (beginIndex == 0) && this.isAbsolute;
- return ((beginIndex == 0) && (endIndex == count)) ? this :
- new PathFragment(driveLetter, isAbsolute,
+ return ((beginIndex == 0) && (endIndex == count))
+ ? this
+ : createNoClone(
+ driveLetter,
+ isAbsolute,
subarray(segments, beginIndex, endIndex - beginIndex));
}
@@ -698,7 +719,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
*/
public PathFragment toRelative() {
Preconditions.checkArgument(isAbsolute);
- return new PathFragment(driveLetter, false, segments);
+ return createNoClone(driveLetter, false, segments);
}
private boolean isEmpty() {
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentSerializationProxy.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentSerializationProxy.java
index 7e4a1f036f..39aefd1318 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentSerializationProxy.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentSerializationProxy.java
@@ -44,7 +44,7 @@ public final class PathFragmentSerializationProxy implements Externalizable {
}
private Object readResolve() {
- return new PathFragment(pathFragmentString);
+ return PathFragment.create(pathFragmentString);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/SearchPath.java b/src/main/java/com/google/devtools/build/lib/vfs/SearchPath.java
index 7f7d8c7ed2..764ed0ddfd 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/SearchPath.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/SearchPath.java
@@ -37,7 +37,7 @@ public class SearchPath {
return paths;
}
for (String p : SEPARATOR.split(searchPath)) {
- PathFragment pf = new PathFragment(p);
+ PathFragment pf = PathFragment.create(p);
if (pf.isAbsolute()) {
paths.add(fs.getPath(pf));
@@ -53,7 +53,7 @@ public class SearchPath {
*/
@Nullable
public static Path which(List<Path> searchPath, String exe) {
- PathFragment fragment = new PathFragment(exe);
+ PathFragment fragment = PathFragment.create(exe);
if (fragment.segmentCount() != 1 || fragment.isAbsolute()) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/ZipFileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/ZipFileSystem.java
index d7ad308728..353a684a82 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/ZipFileSystem.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/ZipFileSystem.java
@@ -160,7 +160,7 @@ public class ZipFileSystem extends ReadonlyFileSystem implements Closeable {
private Collection<Path> populatePathTree() {
Collection<Path> paths = new ArrayList<>();
for (ZipEntry entry : Collections.list(zipFile.entries())) {
- PathFragment frag = new PathFragment(entry.getName());
+ PathFragment frag = PathFragment.create(entry.getName());
Path path = rootPath.getRelative(frag);
paths.add(path);
((ZipPath) path).setZipEntry(entry);
diff --git a/src/main/java/com/google/devtools/build/lib/windows/WindowsFileSystem.java b/src/main/java/com/google/devtools/build/lib/windows/WindowsFileSystem.java
index 710319f58e..77197d7c41 100644
--- a/src/main/java/com/google/devtools/build/lib/windows/WindowsFileSystem.java
+++ b/src/main/java/com/google/devtools/build/lib/windows/WindowsFileSystem.java
@@ -80,7 +80,7 @@ public class WindowsFileSystem extends JavaIoFileSystem {
// the path, except the last one, is already canonicalized, so we can return just that.
// Plus the returned value is passed to Path.getChild so we must not return a full
// path here.
- return new PathFragment(WindowsFileOperations.getLongPath(path)).getBaseName();
+ return PathFragment.create(WindowsFileOperations.getLongPath(path)).getBaseName();
} catch (IOException e) {
return null;
}
@@ -523,7 +523,7 @@ public class WindowsFileSystem extends JavaIoFileSystem {
}
path = path.trim();
- PathFragment result = new PathFragment(path);
+ PathFragment result = PathFragment.create(path);
if (path.isEmpty() || result.getDriveLetter() == '\0' || !result.isAbsolute()) {
return null;
} else {
diff --git a/src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocessFactory.java b/src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocessFactory.java
index 0632baca01..e85325dcaa 100644
--- a/src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocessFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocessFactory.java
@@ -76,7 +76,7 @@ public class WindowsSubprocessFactory implements Subprocess.Factory {
// Therefore if it's absolute, then normalize it also.
// If it's not absolute, then it cannot be longer than MAX_PATH, since MAX_PATH also limits the
// length of file names.
- PathFragment argv0fragment = new PathFragment(argv0);
+ PathFragment argv0fragment = PathFragment.create(argv0);
return (argv0fragment.isAbsolute())
? argv0fragment.normalize().getPathString().replace('/', '\\')
: argv0;