Rollback of commit 4924566e1c0c0d83a9f4f0ece9f02c098333e666 and changelist 215310545.
RELNOTES: None
*** Reason for rollback ***
Broke bazel CI, see https://buildkite.com/bazel/bazel-bazel/builds/4803
Example:
https://storage.googleapis.com/bazel-buildkite-artifacts/a5047713-623d-4a6b-b2c0-9b58aceac870/src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformAnalysisTests/attempt_1.log
*** Original change description ***
Thread a RootedPath into the Package's BUILD file, versus just a Path. This allows us to use that Root in the common case that the Package is not external, saving the creation of a new Root.
This has a miniscule memory impact, but the more important impact is that we can enumerate all possible Roots now, so Roots can be serialized as constants.
PiperOrigin-RevId: 215361414
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 e91dce9..4c65f02 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
@@ -42,7 +42,6 @@
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.protobuf.CodedInputStream;
import com.google.protobuf.CodedOutputStream;
import java.io.IOException;
@@ -95,8 +94,10 @@
*/
private final PathFragment nameFragment;
- /** The filename of this package's BUILD file. */
- private RootedPath filename;
+ /**
+ * The filename of this package's BUILD file.
+ */
+ private Path filename;
/**
* The directory in which this package's BUILD file resides. All InputFile
@@ -309,22 +310,17 @@
return sourceRoot;
}
- private static Root getSourceRoot(RootedPath buildFileRootedPath, PathFragment packageFragment) {
- PathFragment packageDirectory = buildFileRootedPath.getRootRelativePath().getParentDirectory();
- if (packageFragment.equals(packageDirectory)) {
- // Fast path: BUILD file path and package name are the same, don't create an extra root.
- return buildFileRootedPath.getRoot();
+ // This must always be consistent with Root.computeSourceRoot; otherwise computing source roots
+ // from exec paths does not work, which can break the action cache for input-discovering actions.
+ private static Root getSourceRoot(Path buildFile, PathFragment packageFragment) {
+ Path current = buildFile.getParentDirectory();
+ for (int i = 0, len = packageFragment.segmentCount();
+ i < len && !packageFragment.equals(PathFragment.EMPTY_FRAGMENT); i++) {
+ if (current != null) {
+ current = current.getParentDirectory();
+ }
}
- PathFragment current = buildFileRootedPath.asPath().asFragment().getParentDirectory();
- for (int i = 0, len = packageFragment.segmentCount(); i < len && current != null; i++) {
- current = current.getParentDirectory();
- }
- if (current == null || current.isEmpty()) {
- // This is never really expected to work. The check below in #finishInit should fail.
- return buildFileRootedPath.getRoot();
- }
- // Note that current is an absolute path.
- return Root.fromPath(buildFileRootedPath.getRoot().getRelative(current));
+ return Root.fromPath(current);
}
/**
@@ -346,24 +342,14 @@
}
}
this.filename = builder.getFilename();
- this.packageDirectory = filename.asPath().getParentDirectory();
+ this.packageDirectory = filename.getParentDirectory();
this.sourceRoot = getSourceRoot(filename, packageIdentifier.getSourceRoot());
if ((sourceRoot.asPath() == null
|| !sourceRoot.getRelative(packageIdentifier.getSourceRoot()).equals(packageDirectory))
- && !filename.getRootRelativePath().getBaseName().equals("WORKSPACE")) {
+ && !filename.getBaseName().equals("WORKSPACE")) {
throw new IllegalArgumentException(
- "Invalid BUILD file name for package '"
- + packageIdentifier
- + "': "
- + filename
- + " (in source "
- + sourceRoot
- + " with packageDirectory "
- + packageDirectory
- + " and package identifier source root "
- + packageIdentifier.getSourceRoot()
- + ")");
+ "Invalid BUILD file name for package '" + packageIdentifier + "': " + filename);
}
this.makeEnv = ImmutableMap.copyOf(builder.makeEnv);
@@ -409,10 +395,10 @@
}
/**
- * Returns the filename of the BUILD file which defines this package. The parent directory of the
- * BUILD file is the package directory.
+ * Returns the filename of the BUILD file which defines this package. The
+ * parent directory of the BUILD file is the package directory.
*/
- public RootedPath getFilename() {
+ public Path getFilename() {
return filename;
}
@@ -591,10 +577,12 @@
} catch (LabelSyntaxException e) {
throw new IllegalArgumentException(targetName);
}
- String msg =
- String.format(
- "target '%s' not declared in package '%s'%s defined by %s",
- targetName, name, suffix, filename.asPath().getPathString());
+ String msg = String.format(
+ "target '%s' not declared in package '%s'%s defined by %s",
+ targetName,
+ name,
+ suffix,
+ filename);
return new NoSuchTargetException(label, msg);
}
@@ -695,7 +683,7 @@
* output.
*/
public void dump(PrintStream out) {
- out.println(" Package " + getName() + " (" + getFilename().asPath() + ")");
+ out.println(" Package " + getName() + " (" + getFilename() + ")");
// Rules:
out.println(" Rules");
@@ -721,8 +709,8 @@
}
}
- public static Builder newExternalPackageBuilder(
- Builder.Helper helper, RootedPath workspacePath, String runfilesPrefix) {
+ public static Builder newExternalPackageBuilder(Builder.Helper helper, Path workspacePath,
+ String runfilesPrefix) {
Builder b = new Builder(helper.createFreshPackage(
Label.EXTERNAL_PACKAGE_IDENTIFIER, runfilesPrefix));
b.setFilename(workspacePath);
@@ -790,7 +778,7 @@
// It contains an entry from "@<main workspace name>" to "@" for packages within
// the main workspace.
private ImmutableMap<RepositoryName, RepositoryName> repositoryMapping = ImmutableMap.of();
- private RootedPath filename = null;
+ private Path filename = null;
private Label buildFileLabel = null;
private InputFile buildFile = null;
// TreeMap so that the iteration order of variables is predictable. This is useful so that the
@@ -915,12 +903,14 @@
return this.repositoryMapping;
}
- /** Sets the name of this package's BUILD file. */
- Builder setFilename(RootedPath filename) {
+ /**
+ * Sets the name of this package's BUILD file.
+ */
+ Builder setFilename(Path filename) {
this.filename = filename;
try {
- buildFileLabel = createLabel(filename.getRootRelativePath().getBaseName());
- addInputFile(buildFileLabel, Location.fromPathFragment(filename.getRootRelativePath()));
+ buildFileLabel = createLabel(filename.getBaseName());
+ addInputFile(buildFileLabel, Location.fromFile(filename));
} catch (LabelSyntaxException e) {
// This can't actually happen.
throw new AssertionError("Package BUILD file has an illegal name: " + filename);
@@ -932,7 +922,7 @@
return buildFileLabel;
}
- RootedPath getFilename() {
+ Path getFilename() {
return filename;
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index f23fba5..4da0e13 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -63,7 +63,6 @@
import com.google.devtools.build.lib.syntax.Type.ConversionException;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.lib.vfs.UnixGlob;
import java.io.IOException;
import java.util.ArrayList;
@@ -1212,6 +1211,10 @@
}
/**
+ * Package creation.
+ */
+
+ /**
* Loads, scans parses and evaluates the build file at "buildFile", and creates and returns a
* Package builder instance capable of building a package identified by "packageId".
*
@@ -1228,7 +1231,7 @@
private Package.Builder createPackage(
String workspaceName,
PackageIdentifier packageId,
- RootedPath buildFile,
+ Path buildFile,
ParserInputSource input,
List<Statement> preludeStatements,
Map<String, Extension> imports,
@@ -1280,7 +1283,7 @@
String workspaceName,
ImmutableMap<RepositoryName, RepositoryName> repositoryMapping,
PackageIdentifier packageId,
- RootedPath buildFile,
+ Path buildFile,
AstParseResult astParseResult,
Map<String, Extension> imports,
ImmutableList<Label> skylarkFileDependencies,
@@ -1313,8 +1316,7 @@
}
@VisibleForTesting
- public Package.Builder newExternalPackageBuilder(
- RootedPath workspacePath, String runfilesPrefix) {
+ public Package.Builder newExternalPackageBuilder(Path workspacePath, String runfilesPrefix) {
return Package.newExternalPackageBuilder(packageBuilderHelper, workspacePath, runfilesPrefix);
}
@@ -1326,17 +1328,12 @@
@VisibleForTesting
public Package createPackageForTesting(
PackageIdentifier packageId,
- RootedPath buildFile,
+ Path buildFile,
CachingPackageLocator locator,
ExtendedEventHandler eventHandler)
throws NoSuchPackageException, InterruptedException {
- Package externalPkg =
- newExternalPackageBuilder(
- RootedPath.toRootedPath(
- buildFile.getRoot(),
- buildFile.getRootRelativePath().getRelative(Label.WORKSPACE_FILE_NAME)),
- "TESTING")
- .build();
+ Package externalPkg = newExternalPackageBuilder(
+ buildFile.getRelative(Label.WORKSPACE_FILE_NAME), "TESTING").build();
return createPackageForTesting(
packageId,
externalPkg,
@@ -1354,7 +1351,7 @@
public Package createPackageForTesting(
PackageIdentifier packageId,
Package externalPkg,
- RootedPath buildFile,
+ Path buildFile,
CachingPackageLocator locator,
ExtendedEventHandler eventHandler,
SkylarkSemantics semantics)
@@ -1365,16 +1362,15 @@
throw new BuildFileNotFoundException(
packageId, "illegal package name: '" + packageId + "' (" + error + ")");
}
- byte[] buildFileBytes = maybeGetBuildFileBytes(buildFile.asPath(), eventHandler);
+ byte[] buildFileBytes = maybeGetBuildFileBytes(buildFile, eventHandler);
if (buildFileBytes == null) {
throw new BuildFileContainsErrorsException(packageId, "IOException occurred");
}
- Globber globber =
- createLegacyGlobber(buildFile.asPath().getParentDirectory(), packageId, locator);
+ Globber globber = createLegacyGlobber(buildFile.getParentDirectory(), packageId, locator);
ParserInputSource input =
ParserInputSource.create(
- FileSystemUtils.convertFromLatin1(buildFileBytes), buildFile.asPath().asFragment());
+ FileSystemUtils.convertFromLatin1(buildFileBytes), buildFile.asFragment());
Package result =
createPackage(
@@ -1605,7 +1601,7 @@
String workspaceName,
PackageIdentifier packageId,
BuildFileAST buildFileAST,
- RootedPath buildFilePath,
+ Path buildFilePath,
Globber globber,
Iterable<Event> pastEvents,
Iterable<Postable> pastPosts,
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 e19c7d9..d72c676 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
@@ -436,6 +436,7 @@
RootedPath buildFileRootedPath = packageLookupValue.getRootedPath(packageId);
FileValue buildFileValue = null;
+ Path buildFilePath = buildFileRootedPath.asPath();
String replacementContents = null;
if (isDefaultsPackage(packageId) && PrecomputedValue.isInMemoryToolsDefaults(env)) {
@@ -491,7 +492,7 @@
repositoryMapping,
replacementContents,
packageId,
- buildFileRootedPath,
+ buildFilePath,
buildFileValue,
defaultVisibility,
skylarkSemantics,
@@ -588,12 +589,12 @@
}
/**
- * Fetch the skylark loads for this BUILD file. If any of them haven't been computed yet, returns
- * null.
+ * Fetch the skylark loads for this BUILD file. If any of them haven't been computed yet,
+ * returns null.
*/
@Nullable
static SkylarkImportResult fetchImportsFromBuildFile(
- PathFragment buildFilePath,
+ Path buildFilePath,
PackageIdentifier packageId,
BuildFileAST buildFileAST,
Environment env,
@@ -1164,8 +1165,8 @@
}
/**
- * Constructs a {@link Package} object for the given package. Note that the returned package may
- * be in error.
+ * Constructs a {@link Package} object for the given package. Note that the returned package
+ * may be in error.
*
* <p>May return null if the computation has to be restarted.
*
@@ -1179,7 +1180,7 @@
ImmutableMap<RepositoryName, RepositoryName> repositoryMapping,
@Nullable String replacementContents,
PackageIdentifier packageId,
- RootedPath buildFilePath,
+ Path buildFilePath,
@Nullable FileValue buildFileValue,
RuleVisibility defaultVisibility,
SkylarkSemantics skylarkSemantics,
@@ -1195,7 +1196,6 @@
try (SilentCloseable c =
Profiler.instance().profile(ProfilerTask.CREATE_PACKAGE, packageId.toString())) {
AstParseResult astParseResult = astCache.getIfPresent(packageId);
- Path inputFile = buildFilePath.asPath();
if (astParseResult == null) {
if (showLoadingProgress.get()) {
env.getListener().handle(Event.progress("Loading package: " + packageId));
@@ -1207,12 +1207,12 @@
try {
buildFileBytes =
buildFileValue.isSpecialFile()
- ? FileSystemUtils.readContent(inputFile)
- : FileSystemUtils.readWithKnownFileSize(inputFile, buildFileValue.getSize());
+ ? FileSystemUtils.readContent(buildFilePath)
+ : FileSystemUtils.readWithKnownFileSize(
+ buildFilePath, buildFileValue.getSize());
} catch (IOException e) {
- buildFileBytes =
- actionOnIOExceptionReadingBuildFile.maybeGetBuildFileContentsToUse(
- inputFile.asFragment(), e);
+ buildFileBytes = actionOnIOExceptionReadingBuildFile.maybeGetBuildFileContentsToUse(
+ buildFilePath.asFragment(), e);
if (buildFileBytes == null) {
// Note that we did the work that led to this IOException, so we should
// conservatively report this error as transient.
@@ -1224,10 +1224,10 @@
}
input =
ParserInputSource.create(
- FileSystemUtils.convertFromLatin1(buildFileBytes), inputFile.asFragment());
+ FileSystemUtils.convertFromLatin1(buildFileBytes),
+ buildFilePath.asFragment());
} else {
- input =
- ParserInputSource.create(replacementContents, buildFilePath.asPath().asFragment());
+ input = ParserInputSource.create(replacementContents, buildFilePath.asFragment());
}
StoredEventHandler astParsingEventHandler = new StoredEventHandler();
BuildFileAST ast =
@@ -1240,7 +1240,7 @@
try {
importResult =
fetchImportsFromBuildFile(
- buildFilePath.getRootRelativePath(),
+ buildFilePath,
packageId,
astParseResult.ast,
env,
@@ -1256,7 +1256,7 @@
}
astCache.invalidate(packageId);
GlobberWithSkyframeGlobDeps globberWithSkyframeGlobDeps =
- makeGlobber(inputFile, packageId, packageRoot, env);
+ makeGlobber(buildFilePath, packageId, packageRoot, env);
long startTimeNanos = BlazeClock.nanoTime();
Package.Builder pkgBuilder =
packageFactory.createPackageFromAst(
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
index b1691a7..778ced3 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
@@ -28,6 +28,7 @@
import com.google.devtools.build.lib.syntax.Environment.Extension;
import com.google.devtools.build.lib.syntax.Mutability;
import com.google.devtools.build.lib.syntax.SkylarkSemantics;
+import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
@@ -74,8 +75,7 @@
return null;
}
- RootedPath repoWorkspace =
- RootedPath.toRootedPath(workspaceRoot.getRoot(), workspaceRoot.getRootRelativePath());
+ Path repoWorkspace = workspaceRoot.getRoot().getRelative(workspaceRoot.getRootRelativePath());
Package.Builder builder = packageFactory.newExternalPackageBuilder(
repoWorkspace, ruleClassProvider.getRunfilesPrefix());
@@ -120,9 +120,8 @@
parser.setParent(prevValue.getPackage(), prevValue.getImportMap(), prevValue.getBindings());
}
BuildFileAST ast = workspaceASTValue.getASTs().get(key.getIndex());
- PackageFunction.SkylarkImportResult importResult =
- PackageFunction.fetchImportsFromBuildFile(
- repoWorkspace.asPath().asFragment(), rootPackage, ast, env, null);
+ PackageFunction.SkylarkImportResult importResult = PackageFunction.fetchImportsFromBuildFile(
+ repoWorkspace, rootPackage, ast, env, null);
if (importResult == null) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
index 8a9cbec..41ad785 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
@@ -146,7 +146,7 @@
int legacyGlobbingThreads = 1;
int skyframeThreads = 1;
- protected Builder(Root root, Path workspaceDir, Path installBase, Path outputBase) {
+ protected Builder(Path workspaceDir, Path installBase, Path outputBase) {
this.workspaceDir = workspaceDir;
Path devNull = workspaceDir.getFileSystem().getPath("/dev/null");
directories =
@@ -159,7 +159,7 @@
this.pkgLocator =
new PathPackageLocator(
directories.getOutputBase(),
- ImmutableList.of(root),
+ ImmutableList.of(Root.fromPath(workspaceDir)),
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY);
this.pkgLocatorRef = new AtomicReference<>(pkgLocator);
this.externalFilesHelper =
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java
index 0246c6d..a0d600a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java
@@ -42,7 +42,6 @@
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
import com.google.devtools.build.lib.skyframe.SkyFunctions;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionName;
@@ -55,12 +54,12 @@
*/
public class BazelPackageLoader extends AbstractPackageLoader {
/** Returns a fresh {@link Builder} instance. */
- public static Builder builder(Root root, Path workspaceDir, Path installBase, Path outputBase) {
+ public static Builder builder(Path workspaceDir, Path installBase, Path outputBase) {
// Prevent PackageLoader from fetching any remote repositories; these should only be fetched by
// Bazel before calling PackageLoader.
AtomicBoolean isFetch = new AtomicBoolean(false);
- Builder builder = new Builder(root, workspaceDir, installBase, outputBase, isFetch);
+ Builder builder = new Builder(workspaceDir, installBase, outputBase, isFetch);
RepositoryCache repositoryCache = new RepositoryCache();
HttpDownloader httpDownloader = new HttpDownloader(repositoryCache);
@@ -122,9 +121,8 @@
return classProvider.build();
}
- private Builder(
- Root root, Path workspaceDir, Path installBase, Path outputBase, AtomicBoolean isFetch) {
- super(root, workspaceDir, installBase, outputBase);
+ private Builder(Path workspaceDir, Path installBase, Path outputBase, AtomicBoolean isFetch) {
+ super(workspaceDir, installBase, outputBase);
this.isFetch = isFetch;
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 5cdcfb2..bbdef89 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -283,7 +283,7 @@
skyframeExecutor.preparePackageLoading(
new PathPackageLocator(
outputBase,
- ImmutableList.of(root),
+ ImmutableList.of(Root.fromPath(rootDirectory)),
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY),
packageCacheOptions,
skylarkSemanticsOptions,
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
index 37ed659..fc3aa0d 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
@@ -37,8 +37,6 @@
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -59,7 +57,6 @@
private Scratch scratch;
private Path outputDirectory;
- private Root root;
private Path workspaceFile;
private SkylarkRepositoryContext context;
@@ -67,7 +64,6 @@
public void setUp() throws Exception {
scratch = new Scratch("/");
outputDirectory = scratch.dir("/outputDir");
- root = Root.fromPath(scratch.dir("/"));
workspaceFile = scratch.file("/WORKSPACE");
}
@@ -84,11 +80,8 @@
protected void setUpContextForRule(Map<String, Object> kwargs, Attribute... attributes)
throws Exception {
- Package.Builder packageBuilder =
- Package.newExternalPackageBuilder(
- Package.Builder.DefaultHelper.INSTANCE,
- RootedPath.toRootedPath(root, workspaceFile),
- "runfiles");
+ Package.Builder packageBuilder = Package.newExternalPackageBuilder(
+ Package.Builder.DefaultHelper.INSTANCE, workspaceFile, "runfiles");
FuncallExpression ast =
new FuncallExpression(Identifier.of("test"), ImmutableList.<Passed>of());
ast.setLocation(Location.BUILTIN);
diff --git a/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java b/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
index 947723c..b2e4aec 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
@@ -21,7 +21,6 @@
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -53,10 +52,7 @@
")");
pkg =
packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("pkg"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ PackageIdentifier.createInMainRepo("pkg"), buildfile, getPackageManager(), reporter);
group = (EnvironmentGroup) pkg.getTarget("group");
}
@@ -110,12 +106,8 @@
"a/BUILD",
"environment_group(name = 'empty_group', environments = [], defaults = [])");
reporter.removeHandler(failFastHandler);
- Package emptyGroupPkg =
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("a"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ Package emptyGroupPkg = packageFactory.createPackageForTesting(
+ PackageIdentifier.createInMainRepo("a"), buildfile, getPackageManager(), reporter);
assertThat(emptyGroupPkg.containsErrors()).isTrue();
assertContainsEvent(
"environment group empty_group must contain at least one environment");
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java b/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
index b61ca1f..a968d4a 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
@@ -21,12 +21,9 @@
import com.google.devtools.build.lib.packages.util.PackageFactoryApparatus;
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -38,17 +35,11 @@
private Scratch scratch = new Scratch("/workspace");
private EventCollectionApparatus events = new EventCollectionApparatus();
private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
private Package pkg() throws Exception {
Path buildFile = scratch.file("pkg/BUILD",
"exports_files(['foo.txt', 'bar.txt'])");
- return packages.createPackage("pkg", RootedPath.toRootedPath(root, buildFile));
+ return packages.createPackage("pkg", buildFile);
}
@Test
@@ -97,7 +88,7 @@
"exports_files(['foo'])",
"genrule(name = 'foo', srcs = ['bar'], outs = [],",
" cmd = '/bin/true')");
- Package pkg = packages.createPackage("pkg2", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("pkg2", buildFile);
events.assertContainsError("rule 'foo' in package 'pkg2' conflicts with "
+ "existing source file");
assertThat(pkg.getTarget("foo") instanceof InputFile).isTrue();
diff --git a/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java b/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
index 08cee58..a7d7839 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
@@ -21,8 +21,6 @@
import com.google.devtools.build.lib.packages.util.PackageFactoryApparatus;
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -41,12 +39,6 @@
private EventCollectionApparatus events = new EventCollectionApparatus();
private Scratch scratch = new Scratch("/workspace");
private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
@Before
public final void writeFiles() throws Exception {
@@ -57,7 +49,7 @@
" cmd = '', ",
" outs = [], ",
" srcs = ['x', 'subdir/y'])");
- pkg = packages.createPackage("pkg", RootedPath.toRootedPath(root, buildfile));
+ pkg = packages.createPackage("pkg", buildfile);
events.assertNoWarningsOrErrors();
this.pathX = scratch.file("pkg/x", "blah");
diff --git a/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java b/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
index e1fddad..c422f77 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
@@ -19,7 +19,6 @@
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -41,10 +40,7 @@
" outs=['x', 'subdir/y'])");
this.pkg =
packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("pkg"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ PackageIdentifier.createInMainRepo("pkg"), buildfile, getPackageManager(), reporter);
assertNoEvents();
this.rule = (Rule) pkg.getTarget("foo");
@@ -114,7 +110,7 @@
reporter.removeHandler(failFastHandler);
packageFactory.createPackageForTesting(
PackageIdentifier.createInMainRepo("two_outs"),
- RootedPath.toRootedPath(root, buildfile),
+ buildfile,
getPackageManager(),
reporter);
assertContainsEvent(
@@ -138,7 +134,7 @@
reporter.removeHandler(failFastHandler);
packageFactory.createPackageForTesting(
PackageIdentifier.createInMainRepo("out_is_rule"),
- RootedPath.toRootedPath(root, buildfile),
+ buildfile,
getPackageManager(),
reporter);
assertContainsEvent("generated file 'a' in rule 'b' conflicts with existing genrule rule");
@@ -156,7 +152,7 @@
reporter.removeHandler(failFastHandler);
packageFactory.createPackageForTesting(
PackageIdentifier.createInMainRepo("two_outs"),
- RootedPath.toRootedPath(root, buildfile),
+ buildfile,
getPackageManager(),
reporter);
assertContainsEvent(
@@ -176,7 +172,7 @@
reporter.removeHandler(failFastHandler);
packageFactory.createPackageForTesting(
PackageIdentifier.createInMainRepo("bad_out_name"),
- RootedPath.toRootedPath(root, buildfile),
+ buildfile,
getPackageManager(),
reporter);
assertContainsEvent("illegal output file name '!@#:' in rule //bad_out_name:a");
@@ -194,7 +190,7 @@
reporter.removeHandler(failFastHandler);
packageFactory.createPackageForTesting(
PackageIdentifier.createInMainRepo("cross_package_out"),
- RootedPath.toRootedPath(root, buildfile),
+ buildfile,
getPackageManager(),
reporter);
assertContainsEvent("label '//foo:bar' is not in the current package");
@@ -211,10 +207,8 @@
reporter.removeHandler(failFastHandler);
packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("output_called_build"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ PackageIdentifier.createInMainRepo("output_called_build"), buildfile,
+ getPackageManager(), reporter);
assertContainsEvent("generated file 'BUILD' in rule 'a' conflicts with existing source file");
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
index 4da0436..44b0f58 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
@@ -32,7 +32,6 @@
import com.google.devtools.build.lib.testutil.TestUtils;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.build.lib.vfs.RootedPath;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -56,7 +55,7 @@
@Test
public void testCreatePackage() throws Exception {
Path buildFile = scratch.file("/pkgname/BUILD", "# empty build file ");
- Package pkg = packages.createPackage("pkgname", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("pkgname", buildFile);
assertThat(pkg.getName()).isEqualTo("pkgname");
assertThat(Sets.newHashSet(pkg.getTargets(Rule.class))).isEmpty();
}
@@ -91,7 +90,7 @@
events.setFailFast(false);
Path buildFile = scratch.file("/badrulename/BUILD", "cc_library(name = 3)");
- Package pkg = packages.createPackage("badrulename", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("badrulename", buildFile);
events.assertContainsError("cc_library 'name' attribute must be a string");
assertThat(pkg.containsErrors()).isTrue();
@@ -102,7 +101,7 @@
events.setFailFast(false);
Path buildFile = scratch.file("/badrulename/BUILD", "cc_library()");
- Package pkg = packages.createPackage("badrulename", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("badrulename", buildFile);
events.assertContainsError("cc_library rule has no 'name' attribute");
assertThat(pkg.containsErrors()).isTrue();
@@ -113,9 +112,8 @@
try {
// PathFragment parsing de-double slashes, and normalization of the path fragment removes
// up reference (/../), so use triple dot /.../ that will always be a forbidden package name.
- packages.createPackage(
- "not even a legal/.../label",
- RootedPath.toRootedPath(root, emptyBuildFile("not even a legal/.../label")));
+ packages.createPackage("not even a legal/.../label",
+ emptyBuildFile("not even a legal/.../label"));
fail();
} catch (NoSuchPackageException e) {
assertThat(e)
@@ -133,7 +131,7 @@
scratch.file(
"/googledata/cafe/BUILD",
"exports_files(['houseads/house_ads:ca-aol_parenting_html'])");
- Package pkg = packages.createPackage("googledata/cafe", RootedPath.toRootedPath(root, path));
+ Package pkg = packages.createPackage("googledata/cafe", path);
events.assertContainsError("target names may not contain ':'");
assertThat(pkg.getTargets(FileTarget.class).toString())
.doesNotContain("houseads/house_ads:ca-aol_parenting_html");
@@ -158,8 +156,7 @@
"# -*- python -*-",
"proto_library(name = 'spell_proto', srcs = ['spell.proto'], cc_api_version = 2)",
"cc_library(name = 'spell_proto')");
- Package pkg =
- packages.createPackage("duplicaterulename", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("duplicaterulename", buildFile);
events.assertContainsError(
"cc_library rule 'spell_proto' in package "
@@ -176,7 +173,7 @@
"cc_library(name='dep')",
"cc_library(name='has_dupe', deps=[':dep', ':dep'])");
- Package pkg = packages.createPackage("has_dupe", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("has_dupe", buildFile);
events.assertContainsError(
"Label '//has_dupe:dep' is duplicated in the 'deps' " + "attribute of rule 'has_dupe'");
assertThat(pkg.containsErrors()).isTrue();
@@ -196,7 +193,7 @@
"/fruit/orange/BUILD",
"genrule(name='orange', srcs=[], outs=['a', 'a/b'], cmd='')");
- packages.createPackage("fruit/orange", RootedPath.toRootedPath(root, buildFile));
+ packages.createPackage("fruit/orange", buildFile);
events.assertContainsError("rule 'orange' has conflicting output files 'a/b' and 'a");
}
@@ -208,7 +205,7 @@
"/fruit/orange/BUILD",
"genrule(name='orange', srcs=[], outs=['a/b', 'a'], cmd='')");
- packages.createPackage("fruit/orange", RootedPath.toRootedPath(root, buildFile));
+ packages.createPackage("fruit/orange", buildFile);
events.assertContainsError("rule 'orange' has conflicting output files 'a' and 'a/b");
}
@@ -220,7 +217,7 @@
"/fruit/kiwi/BUILD",
"genrule(name='kiwi1', srcs=[], outs=['a'], cmd='')",
"genrule(name='kiwi2', srcs=[], outs=['a/b'], cmd='')");
- packages.createPackage("fruit/kiwi", RootedPath.toRootedPath(root, buildFile));
+ packages.createPackage("fruit/kiwi", buildFile);
events.assertContainsError(
"output file 'a/b' of rule 'kiwi2' conflicts " + "with output file 'a' of rule 'kiwi1'");
}
@@ -233,7 +230,7 @@
"/fruit/kiwi/BUILD",
"genrule(name='kiwi1', srcs=[], outs=['a/b'], cmd='')",
"genrule(name='kiwi2', srcs=[], outs=['a'], cmd='')");
- packages.createPackage("fruit/kiwi", RootedPath.toRootedPath(root, buildFile));
+ packages.createPackage("fruit/kiwi", buildFile);
events.assertContainsError(
"output file 'a' of rule 'kiwi2' conflicts " + "with output file 'a/b' of rule 'kiwi1'");
}
@@ -245,9 +242,7 @@
Package pkg =
packages.createPackage(
- "pina",
- RootedPath.toRootedPath(root, buildFile),
- "--incompatible_package_name_is_a_function=false");
+ "pina", buildFile, "--incompatible_package_name_is_a_function=false");
events.assertNoWarningsOrErrors();
assertThat(pkg.containsErrors()).isFalse();
assertThat(pkg.getRule("pina-colada")).isNotNull();
@@ -259,10 +254,7 @@
public void testPackageConstantIsForbidden() throws Exception {
events.setFailFast(false);
Path buildFile = scratch.file("/pina/BUILD", "cc_library(name=PACKAGE_NAME + '-colada')");
- packages.createPackage(
- "pina",
- RootedPath.toRootedPath(root, buildFile),
- "--incompatible_package_name_is_a_function=true");
+ packages.createPackage("pina", buildFile, "--incompatible_package_name_is_a_function=true");
events.assertContainsError("The value 'PACKAGE_NAME' has been removed");
}
@@ -270,7 +262,7 @@
public void testPackageNameFunction() throws Exception {
Path buildFile = scratch.file("/pina/BUILD", "cc_library(name=package_name() + '-colada')");
- Package pkg = packages.createPackage("pina", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("pina", buildFile);
events.assertNoWarningsOrErrors();
assertThat(pkg.containsErrors()).isFalse();
assertThat(pkg.getRule("pina-colada")).isNotNull();
@@ -287,7 +279,7 @@
Package pkg =
packages.createPackage(
PackageIdentifier.create("@a", PathFragment.create("b")),
- RootedPath.toRootedPath(root, buildFile),
+ buildFile,
events.reporter(),
"--incompatible_package_name_is_a_function=false");
Rule c = pkg.getRule("c");
@@ -302,7 +294,7 @@
"/external/a/b/BUILD", "genrule(name='c', srcs=[], outs=['ao'], cmd=REPOSITORY_NAME)");
packages.createPackage(
PackageIdentifier.create("@a", PathFragment.create("b")),
- RootedPath.toRootedPath(root, buildFile),
+ buildFile,
events.reporter(),
"--incompatible_package_name_is_a_function=true");
events.assertContainsError("The value 'REPOSITORY_NAME' has been removed");
@@ -316,9 +308,7 @@
"genrule(name='c', srcs=[], outs=['o'], cmd=repository_name() + ' ' + package_name())");
Package pkg =
packages.createPackage(
- PackageIdentifier.create("@a", PathFragment.create("b")),
- RootedPath.toRootedPath(root, buildFile),
- events.reporter());
+ PackageIdentifier.create("@a", PathFragment.create("b")), buildFile, events.reporter());
Rule c = pkg.getRule("c");
assertThat(AggregatingAttributeMapper.of(c).get("cmd", Type.STRING)).isEqualTo("@a b");
}
@@ -339,9 +329,7 @@
" srcs = ['spell.proto'],",
" cc_api_version = 2)",
"cc_library(name = 'spell_proto')");
- Package pkg =
- packages.createPackage(
- "multipleduplicaterulename", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("multipleduplicaterulename", buildFile);
events.assertContainsError(
"cc_library rule 'spellcheck_proto' in package "
@@ -355,7 +343,7 @@
@Test
public void testBuildFileTargetExists() throws Exception {
Path buildFile = scratch.file("/foo/BUILD", "");
- Package pkg = packages.createPackage("foo", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("foo", buildFile);
Target target = pkg.getTarget("BUILD");
assertThat(target.getName()).isEqualTo("BUILD");
@@ -373,7 +361,7 @@
"cc_library(name='W', deps=['X', 'Y'])",
"cc_library(name='X', srcs=['X'])",
"cc_library(name='Y')");
- Package pkg = packages.createPackage("foo", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("foo", buildFile);
assertThat(pkg.containsErrors()).isFalse();
// X is a rule with a circular self-dependency.
@@ -409,8 +397,7 @@
events.setFailFast(false);
Path buildFile =
scratch.file("/third_party/foo/BUILD", "# line 1", "cc_library(name='bar')", "# line 3");
- Package pkg =
- packages.createPackage("third_party/foo", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("third_party/foo", buildFile);
events.assertContainsError(
"third-party rule '//third_party/foo:bar' lacks a license "
+ "declaration with one of the following types: "
@@ -422,8 +409,7 @@
public void testThirdPartyLicenseExportsFileError() throws Exception {
events.setFailFast(false);
Path buildFile = scratch.file("/third_party/foo/BUILD", "exports_files(['bar'])");
- Package pkg =
- packages.createPackage("third_party/foo", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("third_party/foo", buildFile);
events.assertContainsError(
"third-party file 'bar' lacks a license "
+ "declaration with one of the following types: "
@@ -443,7 +429,7 @@
"",
"cc_library(name = 'dup_proto',",
" srcs = ['dup.pb.cc', 'dup.pb.h'])");
- Package pkg = packages.createPackage("dup", RootedPath.toRootedPath(root, path));
+ Package pkg = packages.createPackage("dup", path);
events.assertContainsError(
"cc_library rule 'dup_proto' in package 'dup' "
+ "conflicts with existing proto_library rule");
@@ -477,7 +463,7 @@
" cmd = '',",
" srcs = ['in3', 'in4'],",
" outs = ['out3', 'out2'])");
- Package pkg = packages.createPackage("conflict", RootedPath.toRootedPath(root, path));
+ Package pkg = packages.createPackage("conflict", path);
events.assertContainsError(
"generated file 'out2' in rule 'rule2' "
+ "conflicts with existing generated file from rule 'rule1'");
@@ -521,7 +507,7 @@
"genrule(name = 'rule2',",
" cmd = ':',",
" outs = list)");
- Package pkg = packages.createPackage("error", RootedPath.toRootedPath(root, path));
+ Package pkg = packages.createPackage("error", path);
events.assertContainsError("name 'PopulateList' is not defined");
assertThat(pkg.containsErrors()).isTrue();
@@ -545,7 +531,7 @@
scratch.file("/x/y.cc");
scratch.file("/x/dir/dummy");
- Package pkg = packages.createPackage("x", RootedPath.toRootedPath(root, path));
+ Package pkg = packages.createPackage("x", path);
assertThat(pkg.getTarget("x.cc")).isNotNull(); // existing and mentioned.
@@ -596,7 +582,7 @@
"test_suite(name='t2', tests=['//foo'])",
"test_suite(name='t3', tests=['//foo'])",
"cc_test(name='c')");
- Package pkg = packages.createPackage("x", RootedPath.toRootedPath(root, path));
+ Package pkg = packages.createPackage("x", path);
// Things to note:
// - the t1 refers to both :j and :c, even though :c is a forward reference.
@@ -624,7 +610,7 @@
"/fruit/BUILD",
"cc_library(name = 'yes', srcs = glob(['data/*']))",
"cc_library(name = 'no', srcs = glob(['data/*'], exclude_directories=0))");
- Package pkg = packages.eval("fruit", RootedPath.toRootedPath(root, file));
+ Package pkg = packages.eval("fruit", file);
events.assertNoWarningsOrErrors();
List<Label> yesFiles = attributes(pkg.getRule("yes")).get("srcs", BuildType.LABEL_LIST);
List<Label> noFiles = attributes(pkg.getRule("no")).get("srcs", BuildType.LABEL_LIST);
@@ -655,7 +641,7 @@
"/rg/BUILD",
"cc_library(name = 'ri', srcs = glob(['**/*.cc']))",
"cc_library(name = 're', srcs = glob(['*.cc'], exclude=['**/*.c']))");
- Package pkg = packages.eval("rg", RootedPath.toRootedPath(root, file));
+ Package pkg = packages.eval("rg", file);
events.assertNoWarningsOrErrors();
assertEvaluates(
@@ -875,9 +861,7 @@
unreadableSubdir.setReadable(false);
Path file = scratch.file("/pkg/BUILD", "cc_library(name = 'c', srcs = glob(['globs/**']))");
- MoreAsserts.assertThrows(
- NoSuchPackageException.class,
- () -> packages.eval("pkg", RootedPath.toRootedPath(root, file)));
+ MoreAsserts.assertThrows(NoSuchPackageException.class, () -> packages.eval("pkg", file));
events.assertContainsError("Directory is not readable");
}
@@ -979,7 +963,7 @@
"/foo/BUILD",
"package(default_deprecation = \"" + msg + "\")",
"sh_library(name = 'bar', srcs=['b'])");
- Package pkg = packages.eval("foo", RootedPath.toRootedPath(root, file));
+ Package pkg = packages.eval("foo", file);
Rule fooRule = (Rule) pkg.getTarget("bar");
String deprAttr =
@@ -995,7 +979,7 @@
"package(default_testonly = 1)",
"sh_library(name = 'foo', srcs=['b'])",
"sh_library(name = 'bar', srcs=['b'], testonly = 0)");
- Package pkg = packages.eval("foo", RootedPath.toRootedPath(root, file));
+ Package pkg = packages.eval("foo", file);
Rule fooRule = (Rule) pkg.getTarget("foo");
assertThat(
@@ -1017,7 +1001,7 @@
"/foo/BUILD",
"package(default_deprecation = \"" + deceive + "\")",
"sh_library(name = 'bar', srcs=['b'], deprecation = \"" + msg + "\")");
- Package pkg = packages.eval("foo", RootedPath.toRootedPath(root, file));
+ Package pkg = packages.eval("foo", file);
Rule fooRule = (Rule) pkg.getTarget("bar");
String deprAttr =
@@ -1033,7 +1017,7 @@
"sh_library(name='before')",
"package(features=['b', 'c'])",
"sh_library(name='after')");
- Package pkg = packages.eval("a", RootedPath.toRootedPath(root, file));
+ Package pkg = packages.eval("a", file);
assertThat(pkg.getFeatures()).containsExactly("b", "c");
}
@@ -1047,11 +1031,10 @@
scratch.file("/e/data.txt");
throwOnReaddir = parentDir;
MoreAsserts.assertThrows(
- NoSuchPackageException.class,
- () -> packages.createPackage("e", RootedPath.toRootedPath(root, buildFile)));
+ NoSuchPackageException.class, () -> packages.createPackage("e", buildFile));
events.setFailFast(true);
throwOnReaddir = null;
- Package pkg = packages.createPackage("e", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("e", buildFile);
assertThat(pkg.containsErrors()).isFalse();
assertThat(pkg.getRule("e")).isNotNull();
List globList = (List) pkg.getRule("e").getAttributeContainer().getAttr("data");
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
index 151c72a..e778d89 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
@@ -22,10 +22,7 @@
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
import java.util.concurrent.SynchronousQueue;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -41,12 +38,6 @@
private Scratch scratch = new Scratch("/workspace");
private EventCollectionApparatus events = new EventCollectionApparatus();
private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
@Test
public void testNoDeadlockOnPackageGroupCreation() throws Exception {
@@ -99,7 +90,7 @@
private Package getPackage(String packageName) throws Exception {
PathFragment buildFileFragment = PathFragment.create(packageName).getRelative("BUILD");
Path buildFile = scratch.resolve(buildFileFragment.getPathString());
- return packages.createPackage(packageName, RootedPath.toRootedPath(root, buildFile));
+ return packages.createPackage(packageName, buildFile);
}
private PackageGroup getPackageGroup(String pkg, String name) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
index a16d7cc..12f0eaf 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
@@ -21,9 +21,6 @@
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -36,12 +33,6 @@
private Scratch scratch = new Scratch("/workspace");
private EventCollectionApparatus events = new EventCollectionApparatus();
private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
@Test
public void testDoesNotFailHorribly() throws Exception {
@@ -252,7 +243,7 @@
PathFragment buildFileFragment = PathFragment.create(packageName).getRelative("BUILD");
Path buildFile = scratch.resolve(buildFileFragment.getPathString());
- return packages.createPackage(packageName, RootedPath.toRootedPath(root, buildFile));
+ return packages.createPackage(packageName, buildFile);
}
private PackageGroup getPackageGroup(String pkg, String name) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
index 4244102..fee974b 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
@@ -57,7 +57,6 @@
import com.google.devtools.build.lib.syntax.Environment;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -246,15 +245,15 @@
@Before
public final void setRuleLocation() throws Exception {
- testBuildfilePath = root.getRelative("testpackage/BUILD");
+ testBuildfilePath = scratch.resolve("/home/user/workspace/testpackage/BUILD");
testRuleLocation = Location.fromPathAndStartColumn(
testBuildfilePath.asFragment(), 0, 0, new LineAndColumn(TEST_RULE_DEFINED_AT_LINE, 0));
}
private Package.Builder createDummyPackageBuilder() {
- return packageFactory
- .newPackageBuilder(PackageIdentifier.createInMainRepo(TEST_PACKAGE_NAME), "TESTING")
- .setFilename(RootedPath.toRootedPath(root, testBuildfilePath));
+ return packageFactory.newPackageBuilder(
+ PackageIdentifier.createInMainRepo(TEST_PACKAGE_NAME), "TESTING")
+ .setFilename(testBuildfilePath);
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
index ab0a636..bfd84c9 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
@@ -31,7 +31,6 @@
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
@@ -48,11 +47,10 @@
@Test
public void testCreateRule() throws Exception {
- Path myPkgPath = scratch.resolve("/workspace/mypkg/BUILD");
+ Path myPkgPath = scratch.resolve("/foo/workspace/mypkg/BUILD");
Package.Builder pkgBuilder =
- packageFactory
- .newPackageBuilder(PackageIdentifier.createInMainRepo("mypkg"), "TESTING")
- .setFilename(RootedPath.toRootedPath(root, myPkgPath));
+ packageFactory.newPackageBuilder(PackageIdentifier.createInMainRepo("mypkg"), "TESTING")
+ .setFilename(myPkgPath);
Map<String, Object> attributeValues = new HashMap<>();
attributeValues.put("name", "foo");
@@ -112,10 +110,8 @@
@Test
public void testCreateWorkspaceRule() throws Exception {
- Path myPkgPath = scratch.resolve("/workspace/WORKSPACE");
- Package.Builder pkgBuilder =
- packageFactory.newExternalPackageBuilder(
- RootedPath.toRootedPath(root, myPkgPath), "TESTING");
+ Path myPkgPath = scratch.resolve("/foo/workspace/WORKSPACE");
+ Package.Builder pkgBuilder = packageFactory.newExternalPackageBuilder(myPkgPath, "TESTING");
Map<String, Object> attributeValues = new HashMap<>();
attributeValues.put("name", "foo");
@@ -137,11 +133,10 @@
@Test
public void testWorkspaceRuleFailsInBuildFile() throws Exception {
- Path myPkgPath = scratch.resolve("/workspace/mypkg/BUILD");
+ Path myPkgPath = scratch.resolve("/foo/workspace/mypkg/BUILD");
Package.Builder pkgBuilder =
- packageFactory
- .newPackageBuilder(PackageIdentifier.createInMainRepo("mypkg"), "TESTING")
- .setFilename(RootedPath.toRootedPath(root, myPkgPath));
+ packageFactory.newPackageBuilder(PackageIdentifier.createInMainRepo("mypkg"), "TESTING")
+ .setFilename(myPkgPath);
Map<String, Object> attributeValues = new HashMap<>();
attributeValues.put("name", "foo");
@@ -166,11 +161,10 @@
@Test
public void testBuildRuleFailsInWorkspaceFile() throws Exception {
- Path myPkgPath = scratch.resolve("/workspace/WORKSPACE");
+ Path myPkgPath = scratch.resolve("/foo/workspace/WORKSPACE");
Package.Builder pkgBuilder =
- packageFactory
- .newPackageBuilder(Label.EXTERNAL_PACKAGE_IDENTIFIER, "TESTING")
- .setFilename(RootedPath.toRootedPath(root, myPkgPath));
+ packageFactory.newPackageBuilder(Label.EXTERNAL_PACKAGE_IDENTIFIER, "TESTING")
+ .setFilename(myPkgPath);
Map<String, Object> attributeValues = new HashMap<>();
attributeValues.put("name", "foo");
@@ -208,11 +202,10 @@
@Test
public void testOutputFileNotEqualDot() throws Exception {
- Path myPkgPath = scratch.resolve("/workspace/mypkg");
+ Path myPkgPath = scratch.resolve("/foo");
Package.Builder pkgBuilder =
- packageFactory
- .newPackageBuilder(PackageIdentifier.createInMainRepo("mypkg"), "TESTING")
- .setFilename(RootedPath.toRootedPath(root, myPkgPath));
+ packageFactory.newPackageBuilder(PackageIdentifier.createInMainRepo("mypkg"), "TESTING")
+ .setFilename(myPkgPath);
Map<String, Object> attributeValues = new HashMap<>();
attributeValues.put("outs", Lists.newArrayList("."));
@@ -243,11 +236,10 @@
// pattern, which will always guarantee that these attributes are present.
@Test
public void testTestRules() throws Exception {
- Path myPkgPath = scratch.resolve("/workspace/mypkg/BUILD");
+ Path myPkgPath = scratch.resolve("/foo/workspace/mypkg/BUILD");
Package pkg =
- packageFactory
- .newPackageBuilder(PackageIdentifier.createInMainRepo("mypkg"), "TESTING")
- .setFilename(RootedPath.toRootedPath(root, myPkgPath))
+ packageFactory.newPackageBuilder(PackageIdentifier.createInMainRepo("mypkg"), "TESTING")
+ .setFilename(myPkgPath)
.build();
for (String name : ruleFactory.getRuleClassNames()) {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
index 936baa6..2871523 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
@@ -21,9 +21,6 @@
import com.google.devtools.build.lib.packages.util.PackageFactoryApparatus;
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -36,12 +33,6 @@
private Scratch scratch = new Scratch("/workspace");
private EventCollectionApparatus events = new EventCollectionApparatus();
private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
@Test
public void testAttributeLocation() throws Exception {
@@ -49,7 +40,7 @@
"cc_binary(name = 'x',",
" srcs = ['a', 'b', 'c'],",
" defines = ['-Da', '-Db'])");
- Package pkg = packages.createPackage("x", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("x", buildFile);
Rule rule = pkg.getRule("x");
assertThat(rule.getLocation().getStartLineAndColumn()).isEqualTo(new LineAndColumn(1, 1));
@@ -83,7 +74,7 @@
"outs = ['message.txt', 'hello_world'],",
"cmd = 'echo \"Hello, world.\" >$(location message.txt)')");
- Package pkg = packages.createPackage("namecollide", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("namecollide", buildFile);
Rule genRule = pkg.getRule("hello_world");
assertThat(genRule.containsErrors()).isFalse(); // TODO: assertTrue
events.assertContainsWarning("target 'hello_world' is both a rule and a file; please choose "
@@ -99,7 +90,7 @@
"cc_test(name = 'z',",
" srcs = ['a'],",
" local = 1)");
- Package pkg = packages.createPackage("x", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("x", buildFile);
Rule y = pkg.getRule("y");
assertThat(TargetUtils.isLocalTestRule(y)).isFalse();
Rule z = pkg.getRule("z");
@@ -111,7 +102,7 @@
Path buildFile = scratch.file("x/BUILD",
"cc_test(name = 'y')",
"cc_test(name = 'z', deprecation = 'Foo')");
- Package pkg = packages.createPackage("x", RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage("x", buildFile);
Rule y = pkg.getRule("y");
assertThat(TargetUtils.getDeprecation(y)).isNull();
Rule z = pkg.getRule("z");
@@ -120,19 +111,13 @@
@Test
public void testVisibilityValid() throws Exception {
- Package pkg =
- packages.createPackage(
- "x",
- RootedPath.toRootedPath(
- root,
- scratch.file(
- "x/BUILD",
- "cc_binary(name = 'pr',",
- " visibility = ['//visibility:private'])",
- "cc_binary(name = 'pu',",
- " visibility = ['//visibility:public'])",
- "cc_binary(name = 'cu',",
- " visibility = ['//a:b'])")));
+ Package pkg = packages.createPackage("x", scratch.file("x/BUILD",
+ "cc_binary(name = 'pr',",
+ " visibility = ['//visibility:private'])",
+ "cc_binary(name = 'pu',",
+ " visibility = ['//visibility:public'])",
+ "cc_binary(name = 'cu',",
+ " visibility = ['//a:b'])"));
assertThat(pkg.getRule("pu").getVisibility()).isEqualTo(ConstantRuleVisibility.PUBLIC);
assertThat(pkg.getRule("pr").getVisibility()).isEqualTo(ConstantRuleVisibility.PRIVATE);
diff --git a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
index 6c5954b..017ec02 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
@@ -17,9 +17,6 @@
import static com.google.common.truth.Truth.assertThat;
import com.google.devtools.build.lib.cmdline.RepositoryName;
-import com.google.devtools.build.lib.testutil.Scratch;
-import com.google.devtools.build.lib.vfs.Root;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -29,15 +26,8 @@
*/
@RunWith(JUnit4.class)
public class WorkspaceFactoryTest {
- private Scratch scratch = new Scratch();
- private WorkspaceFactoryTestHelper helper;
- private Root root;
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- helper = new WorkspaceFactoryTestHelper(root);
- }
+ private WorkspaceFactoryTestHelper helper = new WorkspaceFactoryTestHelper();
@Test
public void testLoadError() throws Exception {
@@ -75,7 +65,7 @@
@Test
public void testIllegalWorkspaceFunctionPosition() throws Exception {
- helper = new WorkspaceFactoryTestHelper(/*allowOverride=*/ false, root);
+ helper = new WorkspaceFactoryTestHelper(/*allowOverride=*/ false);
helper.parse("workspace(name = 'foo')");
assertThat(helper.getParserError()).contains(
"workspace() function should be used only at the top of the WORKSPACE file");
diff --git a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
index e50e53a..c4a02bd 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
@@ -23,18 +23,16 @@
import com.google.devtools.build.lib.syntax.Mutability;
import com.google.devtools.build.lib.syntax.ParserInputSource;
import com.google.devtools.build.lib.syntax.SkylarkSemantics;
+import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.common.options.OptionsParser;
import java.io.IOException;
import java.util.List;
/** Parses a WORKSPACE file with the given content. */
class WorkspaceFactoryTestHelper {
- private final Root root;
private Package.Builder builder;
private Exception exception;
private ImmutableList<Event> events;
@@ -42,31 +40,30 @@
private final boolean allowOverride;
- WorkspaceFactoryTestHelper(Root root) {
- this(true, root);
+ WorkspaceFactoryTestHelper() {
+ this(true);
}
- WorkspaceFactoryTestHelper(boolean allowOverride, Root root) {
- this.root = root;
+ WorkspaceFactoryTestHelper(boolean allowOverride) {
this.exception = null;
this.events = null;
this.allowOverride = allowOverride;
this.skylarkSemantics = SkylarkSemantics.DEFAULT_SEMANTICS;
}
- void parse(String... args) {
- Path workspaceFilePath = root.getRelative("WORKSPACE");
+ void parse(Scratch scratch, String... args) {
+ Path root = null;
+ Path workspaceFilePath = null;
try {
- FileSystemUtils.writeIsoLatin1(workspaceFilePath, args);
+ root = scratch.dir("/workspace");
+ workspaceFilePath = scratch.overwriteFile("/workspace/WORKSPACE", args);
} catch (IOException e) {
fail("Shouldn't happen: " + e.getMessage());
}
StoredEventHandler eventHandler = new StoredEventHandler();
builder =
Package.newExternalPackageBuilder(
- Package.Builder.DefaultHelper.INSTANCE,
- RootedPath.toRootedPath(root, workspaceFilePath),
- "");
+ Package.Builder.DefaultHelper.INSTANCE, workspaceFilePath, "");
WorkspaceFactory factory =
new WorkspaceFactory(
builder,
@@ -74,8 +71,8 @@
ImmutableList.<PackageFactory.EnvironmentExtension>of(),
Mutability.create("test"),
allowOverride,
- root.asPath(),
- root.asPath(),
+ root,
+ root,
/* defaultSystemJavabaseDir= */ null,
/* skylarkSemantics= */ SkylarkSemantics.DEFAULT_SEMANTICS);
Exception exception = null;
@@ -95,13 +92,17 @@
this.exception = exception;
}
+ void parse(String... args) {
+ parse(new Scratch("/"), args);
+ }
+
public Package getPackage() throws InterruptedException, NoSuchPackageException {
return builder.build();
}
public void assertLexingExceptionThrown() {
assertThat(exception).isNotNull();
- assertThat(exception).hasMessageThat().contains("Failed to parse /WORKSPACE");
+ assertThat(exception).hasMessageThat().contains("Failed to parse /workspace/WORKSPACE");
}
public String getLexerError() {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryApparatus.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryApparatus.java
index cf1f485..83def68 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryApparatus.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryApparatus.java
@@ -39,7 +39,6 @@
import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.common.options.OptionsParser;
import java.io.IOException;
@@ -79,11 +78,11 @@
}
/** Parses and evaluates {@code buildFile} and returns the resulting {@link Package} instance. */
- public Package createPackage(String packageName, RootedPath buildFile) throws Exception {
+ public Package createPackage(String packageName, Path buildFile) throws Exception {
return createPackage(PackageIdentifier.createInMainRepo(packageName), buildFile, eventHandler);
}
- public Package createPackage(String packageName, RootedPath buildFile, String skylarkOption)
+ public Package createPackage(String packageName, Path buildFile, String skylarkOption)
throws Exception {
return createPackage(
PackageIdentifier.createInMainRepo(packageName), buildFile, eventHandler, skylarkOption);
@@ -95,7 +94,7 @@
*/
public Package createPackage(
PackageIdentifier packageIdentifier,
- RootedPath buildFile,
+ Path buildFile,
ExtendedEventHandler reporter,
String skylarkOption)
throws Exception {
@@ -112,10 +111,7 @@
Package externalPkg =
factory
.newExternalPackageBuilder(
- RootedPath.toRootedPath(
- buildFile.getRoot(),
- buildFile.getRootRelativePath().getRelative(Label.WORKSPACE_FILE_NAME)),
- "TESTING")
+ buildFile.getRelative(Label.WORKSPACE_FILE_NAME), "TESTING")
.build();
Package pkg =
factory.createPackageForTesting(
@@ -127,7 +123,7 @@
}
public Package createPackage(
- PackageIdentifier packageIdentifier, RootedPath buildFile, ExtendedEventHandler reporter)
+ PackageIdentifier packageIdentifier, Path buildFile, ExtendedEventHandler reporter)
throws Exception {
return createPackage(packageIdentifier, buildFile, reporter, null);
}
@@ -143,12 +139,12 @@
/** Evaluates the {@code buildFileAST} into a {@link Package}. */
public Pair<Package, GlobCache> evalAndReturnGlobCache(
- String packageName, RootedPath buildFile, BuildFileAST buildFileAST)
+ String packageName, Path buildFile, BuildFileAST buildFileAST)
throws InterruptedException, NoSuchPackageException {
PackageIdentifier packageId = PackageIdentifier.createInMainRepo(packageName);
GlobCache globCache =
new GlobCache(
- buildFile.asPath().getParentDirectory(),
+ buildFile.getParentDirectory(),
packageId,
getPackageLocator(),
null,
@@ -156,12 +152,8 @@
-1);
LegacyGlobber globber = PackageFactory.createLegacyGlobber(globCache);
Package externalPkg =
- factory
- .newExternalPackageBuilder(
- RootedPath.toRootedPath(
- buildFile.getRoot(),
- buildFile.getRootRelativePath().getParentDirectory().getRelative("WORKSPACE")),
- "TESTING")
+ factory.newExternalPackageBuilder(
+ buildFile.getParentDirectory().getRelative("WORKSPACE"), "TESTING")
.build();
Package.Builder resultBuilder =
factory.evaluateBuildFile(
@@ -189,15 +181,15 @@
return Pair.of(result, globCache);
}
- public Package eval(String packageName, RootedPath buildFile, BuildFileAST buildFileAST)
+ public Package eval(String packageName, Path buildFile, BuildFileAST buildFileAST)
throws InterruptedException, NoSuchPackageException {
return evalAndReturnGlobCache(packageName, buildFile, buildFileAST).first;
}
/** Evaluates the {@code buildFileAST} into a {@link Package}. */
- public Package eval(String packageName, RootedPath buildFile)
+ public Package eval(String packageName, Path buildFile)
throws InterruptedException, IOException, NoSuchPackageException {
- return eval(packageName, buildFile, ast(buildFile.asPath()));
+ return eval(packageName, buildFile, ast(buildFile));
}
/**
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryTestBase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryTestBase.java
index 24d9eb0..eb614fc 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryTestBase.java
@@ -40,8 +40,6 @@
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -61,20 +59,19 @@
protected Scratch scratch;
protected EventCollectionApparatus events = new EventCollectionApparatus();
protected PackageFactoryApparatus packages = createPackageFactoryApparatus();
- protected Root root;
protected com.google.devtools.build.lib.packages.Package expectEvalSuccess(String... content)
throws InterruptedException, IOException, NoSuchPackageException {
- Path file = scratch.file("pkg/BUILD", content);
- Package pkg = packages.eval("pkg", RootedPath.toRootedPath(root, file));
+ Path file = scratch.file("/pkg/BUILD", content);
+ Package pkg = packages.eval("pkg", file);
assertThat(pkg.containsErrors()).isFalse();
return pkg;
}
protected void expectEvalError(String expectedError, String... content) throws Exception {
events.setFailFast(false);
- Path file = scratch.file("pkg/BUILD", content);
- Package pkg = packages.eval("pkg", RootedPath.toRootedPath(root, file));
+ Path file = scratch.file("/pkg/BUILD", content);
+ Package pkg = packages.eval("pkg", file);
assertWithMessage("Expected evaluation error, but none was not reported")
.that(pkg.containsErrors())
.isTrue();
@@ -111,7 +108,7 @@
throws Exception {
GlobCache globCache =
new GlobCache(
- pkg.getFilename().asPath().getParentDirectory(),
+ pkg.getFilename().getParentDirectory(),
pkg.getPackageIdentifier(),
PackageFactoryApparatus.createEmptyLocator(),
null,
@@ -132,9 +129,8 @@
return super.readdir(path, followSymlinks);
}
};
- Path tmpPath = fs.getPath("/");
+ Path tmpPath = fs.getPath("/tmp");
scratch = new Scratch(tmpPath);
- root = Root.fromPath(scratch.dir("/"));
}
protected Path emptyBuildFile(String packageName) {
@@ -153,7 +149,7 @@
// Write a license decl just in case it's a third_party package:
Path buildFile = scratch.file(
getPathPrefix() + "/" + packageName + "/BUILD", "licenses(['notice'])");
- Package pkg = packages.createPackage(packageName, RootedPath.toRootedPath(root, buildFile));
+ Package pkg = packages.createPackage(packageName, buildFile);
return !pkg.containsErrors();
}
@@ -172,7 +168,7 @@
private Package buildPackageWithGlob(String globCallExpression) throws Exception {
scratch.deleteFile("/dummypackage/BUILD");
Path file = scratch.file("/dummypackage/BUILD", "x = " + globCallExpression);
- return packages.eval("dummypackage", RootedPath.toRootedPath(root, file));
+ return packages.eval("dummypackage", file);
}
private List<Pair<String, Boolean>> createGlobCacheKeys(
@@ -246,8 +242,7 @@
includes, excludes, excludeDirs ? 1 : 0),
resultAssertion);
- return packages.evalAndReturnGlobCache(
- "globs", RootedPath.toRootedPath(root, file), packages.ast(file));
+ return packages.evalAndReturnGlobCache("globs", file, packages.ast(file));
}
protected void assertGlobProducesError(String pattern, boolean errorExpected) throws Exception {
@@ -298,12 +293,10 @@
"java_library(name = 'mylib',",
" srcs = 'java/A.java')");
packages.createPackage(
- PackageIdentifier.createInMainRepo("isolated"),
- RootedPath.toRootedPath(root, buildFile),
- eventHandler);
+ PackageIdentifier.createInMainRepo("isolated"), buildFile, eventHandler);
parsedOK = true;
} catch (Exception e) {
- throw new IllegalStateException(e);
+ e.printStackTrace();
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
index 8392f3b..e845748 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
@@ -224,7 +224,7 @@
createPkg1();
Package pkg1 = getPackage("pkg1");
assertThat(pkg1.getName()).isEqualTo("pkg1");
- assertThat(pkg1.getFilename().asPath().getPathString()).isEqualTo("/workspace/pkg1/BUILD");
+ assertThat(pkg1.getFilename().toString()).isEqualTo("/workspace/pkg1/BUILD");
assertThat(getPackageManager().getPackage(reporter, PackageIdentifier.createInMainRepo("pkg1")))
.isSameAs(pkg1);
}
@@ -349,7 +349,7 @@
Package oldPkg = getPackage("pkg");
assertThat(getPackage("pkg")).isSameAs(oldPkg); // change not yet visible
- assertThat(oldPkg.getFilename().asPath()).isEqualTo(buildFile1);
+ assertThat(oldPkg.getFilename()).isEqualTo(buildFile1);
assertThat(oldPkg.getSourceRoot()).isEqualTo(Root.fromPath(rootDirectory));
buildFile1.delete();
@@ -357,7 +357,7 @@
Package newPkg = getPackage("pkg");
assertThat(newPkg).isNotSameAs(oldPkg);
- assertThat(newPkg.getFilename().asPath()).isEqualTo(buildFile2);
+ assertThat(newPkg.getFilename()).isEqualTo(buildFile2);
assertThat(newPkg.getSourceRoot()).isEqualTo(Root.fromPath(scratch.dir("/otherroot")));
// TODO(bazel-team): (2009) test BUILD file moves in the other direction too.
@@ -526,8 +526,7 @@
// root. It's as if we've merged c and c/d in the first root.
// c/d is still a subpackage--found in the second root:
- assertThat(getPackage("c/d").getFilename().asPath())
- .isEqualTo(rootDir2.getRelative("c/d/BUILD"));
+ assertThat(getPackage("c/d").getFilename()).isEqualTo(rootDir2.getRelative("c/d/BUILD"));
// Subpackage labels are still valid...
assertLabelValidity(true, "//c/d:foo.txt");
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunctionTest.java
index 22a9cc2..f338971 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunctionTest.java
@@ -28,7 +28,6 @@
import com.google.devtools.build.lib.util.GroupedList;
import com.google.devtools.build.lib.util.GroupedList.GroupedListHelper;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -103,14 +102,12 @@
Path buildFile = scratch.file("" + packageId.getSourceRoot() + "/BUILD", lines);
Package.Builder externalPkg =
Package.newExternalPackageBuilder(
- Package.Builder.DefaultHelper.INSTANCE,
- RootedPath.toRootedPath(root, buildFile.getRelative("WORKSPACE")),
- "TESTING");
+ Package.Builder.DefaultHelper.INSTANCE, buildFile.getRelative("WORKSPACE"), "TESTING");
externalPkg.setWorkspaceName(workspaceName);
return pkgFactory.createPackageForTesting(
packageId,
externalPkg.build(),
- RootedPath.toRootedPath(root, buildFile),
+ buildFile,
packageIdentifier -> buildFile,
reporter,
SkylarkSemantics.DEFAULT_SEMANTICS);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoaderTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoaderTest.java
index 3f84377..d83b570 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoaderTest.java
@@ -31,7 +31,6 @@
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
import org.junit.Before;
import org.junit.Test;
@@ -41,7 +40,6 @@
protected Path workspaceDir;
protected StoredEventHandler handler;
protected FileSystem fs;
- protected Root root;
private Reporter reporter;
@Before
@@ -49,7 +47,6 @@
fs = new InMemoryFileSystem();
workspaceDir = fs.getPath("/workspace/");
workspaceDir.createDirectoryAndParents();
- root = Root.fromPath(workspaceDir);
reporter = new Reporter(new EventBus());
handler = new StoredEventHandler();
reporter.addHandler(handler);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
index e356fc1..b31f2ac 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
@@ -95,7 +95,7 @@
@Override
protected BazelPackageLoader.Builder newPackageLoaderBuilder(Path workspaceDir) {
- return BazelPackageLoader.builder(root, workspaceDir, installBase, outputBase);
+ return BazelPackageLoader.builder(workspaceDir, installBase, outputBase);
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/BazelPackageBuilderHelperForTesting.java b/src/test/java/com/google/devtools/build/lib/testutil/BazelPackageBuilderHelperForTesting.java
index acf374d..e27bc4d 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/BazelPackageBuilderHelperForTesting.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/BazelPackageBuilderHelperForTesting.java
@@ -68,7 +68,6 @@
PackageIdentifier pkgId = pkg.getPackageIdentifier();
PackageLoader packageLoader =
BazelPackageLoader.builder(
- pkg.getSourceRoot(),
directories.getWorkspace(),
directories.getInstallBase(),
directories.getOutputBase())
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
index 0a4fde5..6a966a5 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
@@ -24,7 +24,6 @@
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
import java.util.Set;
import org.junit.After;
@@ -44,7 +43,6 @@
protected EventCollector eventCollector;
protected FileSystem fileSystem;
protected Scratch scratch;
- protected Root root;
/** Returns the Scratch instance for this test case. */
public Scratch getScratch() {
@@ -77,7 +75,6 @@
outputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/");
rootDirectory = scratch.dir("/workspace");
scratch.file(rootDirectory.getRelative("WORKSPACE").getPathString());
- root = Root.fromPath(rootDirectory);
}
@Before
diff --git a/src/tools/package_printer/java/com/google/devtools/build/packageprinter/BazelPackagePrinter.java b/src/tools/package_printer/java/com/google/devtools/build/packageprinter/BazelPackagePrinter.java
index b9fc7b0..b9a1c55 100644
--- a/src/tools/package_printer/java/com/google/devtools/build/packageprinter/BazelPackagePrinter.java
+++ b/src/tools/package_printer/java/com/google/devtools/build/packageprinter/BazelPackagePrinter.java
@@ -22,7 +22,6 @@
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.JavaIoFileSystem;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
import java.nio.file.Paths;
/**
@@ -53,8 +52,7 @@
/** newPackageLoader returns a new PackageLoader. */
static PackageLoader newPackageLoader(Path workspaceDir, Path installBase, Path outputBase) {
- return BazelPackageLoader.builder(
- Root.fromPath(workspaceDir), workspaceDir, installBase, outputBase)
+ return BazelPackageLoader.builder(workspaceDir, installBase, outputBase)
.useDefaultSkylarkSemantics()
.setReporter(new Reporter(new EventBus(), PrintingEventHandler.ERRORS_TO_STDERR))
.setLegacyGlobbingThreads(400)