Rename dont_symlink_directories_in_execroot to toplevel_output_directories .
It's better to describe concepts by saying what they are instead of saying what they are not.
RELNOTES: None.
PiperOrigin-RevId: 303737603
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraph.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraph.java
index 2bfe9d2..2d95d9e 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraph.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraph.java
@@ -269,7 +269,7 @@
"output_root",
String.format(
"Ninja output root directory '%s' must be declared"
- + " using global workspace function dont_symlink_directories_in_execroot().",
+ + " using global workspace function toplevel_output_directories().",
outputRoot.getPathString()));
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraphRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraphRule.java
index 29d9b23..a625f69 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraphRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraphRule.java
@@ -66,7 +66,7 @@
.setDoc(
"<p>Directory under workspace, where all the intermediate and output artifacts"
+ " will be created.</p><p>Must not be symlinked to the execroot. For"
- + " that, dont_symlink_directories_in_execroot function should be used in"
+ + " that, toplevel_output_directories function should be used in"
+ " WORKSPACE file.</p>"))
.add(
attr("output_root_inputs", STRING_LIST)
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java b/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java
index 65c2aa4..ae4444b 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java
@@ -175,7 +175,7 @@
if (this.notSymlinkedInExecrootDirectories.contains(target.getBaseName())) {
throw new AbruptExitException(
"Directories specified with "
- + "dont_symlink_directories_in_execroot should be ignored and can not be used"
+ + "toplevel_output_directories should be ignored and can not be used"
+ " as sources.",
ExitCode.COMMAND_LINE_ERROR);
}
@@ -380,7 +380,7 @@
if (mainRepoRoots.size() > 1) {
if (!this.notSymlinkedInExecrootDirectories.isEmpty()) {
throw new AbruptExitException(
- "dont_symlink_directories_in_execroot is "
+ "toplevel_output_directories is "
+ "not supported together with --package_path option.",
ExitCode.COMMAND_LINE_ERROR);
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
index 252de68..9254578 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
@@ -118,24 +118,23 @@
for (String path : pathsList) {
PathFragment pathFragment = PathFragment.create(path);
if (pathFragment.isEmpty()) {
- throw Starlark.errorf(
- "Empty path can not be passed to dont_symlink_directories_in_execroot.");
+ throw Starlark.errorf("Empty path can not be passed to toplevel_output_directories.");
}
if (pathFragment.containsUplevelReferences() || pathFragment.segmentCount() > 1) {
throw Starlark.errorf(
- "dont_symlink_directories_in_execroot can only accept top level directories under"
+ "toplevel_output_directories can only accept top level directories under"
+ " workspace, \"%s\" can not be specified as an attribute.",
path);
}
if (pathFragment.isAbsolute()) {
throw Starlark.errorf(
- "dont_symlink_directories_in_execroot can only accept top level directories under"
+ "toplevel_output_directories can only accept top level directories under"
+ " workspace, absolute path \"%s\" can not be specified as an attribute.",
path);
}
if (!set.add(pathFragment.getBaseName())) {
throw Starlark.errorf(
- "dont_symlink_directories_in_execroot should not contain duplicate values: \"%s\" is"
+ "toplevel_output_directories should not contain duplicate values: \"%s\" is"
+ " specified more then once.",
path);
}
diff --git a/src/main/java/com/google/devtools/build/lib/repository/ExternalPackageUtil.java b/src/main/java/com/google/devtools/build/lib/repository/ExternalPackageUtil.java
index 5b91936..9d45366 100644
--- a/src/main/java/com/google/devtools/build/lib/repository/ExternalPackageUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/repository/ExternalPackageUtil.java
@@ -40,8 +40,8 @@
/**
* Returns directories, that should not be symlinked under the execroot.
*
- * <p>Searches for dont_symlink_directories_in_execroot calls in the WORKSPACE file, and gathers
- * values of all "paths" attributes.
+ * <p>Searches for toplevel_output_directories calls in the WORKSPACE file, and gathers values of
+ * all "paths" attributes.
*/
public static ImmutableSortedSet<String> getNotSymlinkedInExecrootDirectories(Environment env)
throws InterruptedException {
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
index 736507b..67881e2 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
@@ -85,7 +85,7 @@
throws EvalException, InterruptedException;
@SkylarkCallable(
- name = "dont_symlink_directories_in_execroot",
+ name = "toplevel_output_directories",
doc =
"Exclude directories under workspace from symlinking into execroot.\n"
+ "<p>Normally, source directories are symlinked to the execroot, so that the"
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaBuildTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaBuildTest.java
index 58ffb23..a618fa8 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaBuildTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaBuildTest.java
@@ -59,7 +59,7 @@
@Test
public void testSourceFileNotInSubtree() throws Exception {
- rewriteWorkspace("dont_symlink_directories_in_execroot(paths=['out'])");
+ rewriteWorkspace("toplevel_output_directories(paths=['out'])");
scratch.file("a/n.ninja", "rule cp", " command = cp $in $out", "build out/o: cp subdir/i");
@@ -77,8 +77,7 @@
@Test
public void testNinjaBuildRule() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("build_config/input.txt", "World");
scratch.file(
@@ -118,8 +117,7 @@
@Test
public void testNinjaGraphRuleWithPhonyTarget() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("build_config/input.txt", "World");
scratch.file(
@@ -161,8 +159,7 @@
@Test
public void testNinjaGraphRuleWithPhonyTree() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("build_config/a.txt", "A");
scratch.file("build_config/b.txt", "B");
@@ -257,8 +254,7 @@
@Test
public void testDepsMapping() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("input.txt", "World");
scratch.file(
@@ -305,8 +301,7 @@
@Test
public void testOnlySubGraphIsCreated() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("build_config/a.txt", "A");
scratch.file("build_config/b.txt", "B");
@@ -357,8 +352,7 @@
@Test
public void testRuleWithDepfileVariable() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("input");
scratch.file(
@@ -395,8 +389,7 @@
@Test
public void testCreateOutputSymlinkArtifacts() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file(
"build_config/build.ninja",
@@ -434,8 +427,7 @@
@Test
public void testCreateIntermediateOutputSymlinkArtifacts() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file(
"build_config/build.ninja",
@@ -476,8 +468,7 @@
@Test
public void testOutputRootInputsWithConflictingNinjaActionOutput() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("build_config/hello.txt", "hello");
scratch.file(
@@ -516,8 +507,7 @@
throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("build_config/hello.txt", "hello");
scratch.file(
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaGraphTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaGraphTest.java
index 486669f..c134930 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaGraphTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaGraphTest.java
@@ -57,8 +57,7 @@
@Test
public void testNinjaGraphRule() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
scratch.file("build_config/input.txt", "World");
scratch.file(
@@ -107,8 +106,7 @@
@Test
public void testNinjaGraphRuleWithPhonyTarget() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
// We do not have to have the real files in place, the rule only reads
// the contents of Ninja files.
@@ -165,8 +163,7 @@
@Test
public void testNinjaGraphRuleWithPhonyTree() throws Exception {
rewriteWorkspace(
- "workspace(name = 'test')",
- "dont_symlink_directories_in_execroot(paths = ['build_config'])");
+ "workspace(name = 'test')", "toplevel_output_directories(paths = ['build_config'])");
// We do not have to have the real files in place, the rule only reads
// the contents of Ninja files.
diff --git a/src/test/java/com/google/devtools/build/lib/blackbox/tests/NinjaBlackBoxTest.java b/src/test/java/com/google/devtools/build/lib/blackbox/tests/NinjaBlackBoxTest.java
index 00c9868..0ca1101 100644
--- a/src/test/java/com/google/devtools/build/lib/blackbox/tests/NinjaBlackBoxTest.java
+++ b/src/test/java/com/google/devtools/build/lib/blackbox/tests/NinjaBlackBoxTest.java
@@ -37,7 +37,7 @@
.write(
WORKSPACE,
String.format("workspace(name = '%s')", testName.getMethodName()),
- "dont_symlink_directories_in_execroot(paths = ['build_dir'])");
+ "toplevel_output_directories(paths = ['build_dir'])");
}
@Test
@@ -102,8 +102,7 @@
BuilderRunner bazel = context().bazel();
ProcessResult result = bazel.shouldFail().build("//:ninja_target");
- assertThat(result.errString())
- .contains("name 'dont_symlink_directories_in_execroot' is not defined");
+ assertThat(result.errString()).contains("name 'toplevel_output_directories' is not defined");
assertThat(result.errString()).contains("FAILED: Build did NOT complete successfully");
}
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/SymlinkForestTest.java b/src/test/java/com/google/devtools/build/lib/buildtool/SymlinkForestTest.java
index 8bd5f9c..ba9bac6 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/SymlinkForestTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/SymlinkForestTest.java
@@ -706,7 +706,7 @@
assertThat(exception)
.hasMessageThat()
.isEqualTo(
- "Directories specified with dont_symlink_directories_in_execroot should be "
+ "Directories specified with toplevel_output_directories should be "
+ "ignored and can not be used as sources.");
}
@@ -743,7 +743,7 @@
assertThat(exception)
.hasMessageThat()
.isEqualTo(
- "dont_symlink_directories_in_execroot is not supported together "
+ "toplevel_output_directories is not supported together "
+ "with --package_path option.");
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
index 02b80ad..cc93fc8 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
@@ -628,38 +628,38 @@
PrecomputedValue.STARLARK_SEMANTICS.set(injectable, semanticsWithNinjaActions);
assertThat(
- parseWorkspaceFileValue("dont_symlink_directories_in_execroot(paths = [\"out\"])")
+ parseWorkspaceFileValue("toplevel_output_directories(paths = [\"out\"])")
.getDoNotSymlinkInExecrootPaths())
.containsExactly("out");
assertThat(
parseWorkspaceFileValue(
- "dont_symlink_directories_in_execroot(paths = [\"out\", \"one more with"
+ "toplevel_output_directories(paths = [\"out\", \"one more with"
+ " space\"])")
.getDoNotSymlinkInExecrootPaths())
.containsExactly("out", "one more with space");
// Empty sequence is allowed.
assertThat(
- parseWorkspaceFileValue("dont_symlink_directories_in_execroot(paths = [])")
+ parseWorkspaceFileValue("toplevel_output_directories(paths = [])")
.getDoNotSymlinkInExecrootPaths())
.isEmpty();
parseWorkspaceFileValueWithError(
- "dont_symlink_directories_in_execroot should not "
+ "toplevel_output_directories should not "
+ "contain duplicate values: \"out\" is specified more then once.",
- "dont_symlink_directories_in_execroot(paths = [\"out\", \"out\"])");
+ "toplevel_output_directories(paths = [\"out\", \"out\"])");
parseWorkspaceFileValueWithError(
- "dont_symlink_directories_in_execroot can only accept "
+ "toplevel_output_directories can only accept "
+ "top level directories under workspace, \"out/subdir\" "
+ "can not be specified as an attribute.",
- "dont_symlink_directories_in_execroot(paths = [\"out/subdir\"])");
+ "toplevel_output_directories(paths = [\"out/subdir\"])");
parseWorkspaceFileValueWithError(
- "Empty path can not be passed to " + "dont_symlink_directories_in_execroot.",
- "dont_symlink_directories_in_execroot(paths = [\"\"])");
+ "Empty path can not be passed to " + "toplevel_output_directories.",
+ "toplevel_output_directories(paths = [\"\"])");
parseWorkspaceFileValueWithError(
- "dont_symlink_directories_in_execroot can only "
+ "toplevel_output_directories can only "
+ "accept top level directories under workspace, \"/usr/local/bin\" "
+ "can not be specified as an attribute.",
- "dont_symlink_directories_in_execroot(paths = [\"/usr/local/bin\"])");
+ "toplevel_output_directories(paths = [\"/usr/local/bin\"])");
} finally {
PrecomputedValue.STARLARK_SEMANTICS.set(injectable, semantics);
}