Logical rollback of unknown commit: an artifact with an empty path is legitimate.
PiperOrigin-RevId: 295789272
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
index e88894b..3e7db23 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
@@ -72,9 +72,8 @@
private static class BasicActionInput implements ActionInput {
private final String path;
- public BasicActionInput(String path) {
+ BasicActionInput(String path) {
this.path = Preconditions.checkNotNull(path);
- Preconditions.checkArgument(!path.isEmpty());
}
// TODO(lberki): Plumb this flag from InputTree.build() somehow.
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
index 4f46206..7049e0f 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
@@ -269,10 +269,6 @@
private Artifact(ArtifactRoot root, PathFragment execPath, boolean contentBasedPath) {
Preconditions.checkNotNull(root);
- if (execPath.isEmpty()) {
- throw new IllegalArgumentException(
- "it is illegal to create an artifact with an empty execPath");
- }
// The ArtifactOwner is not part of this computation because it is very rare that two Artifacts
// have the same execPath and different owners, so a collision is fine there. If this is
// changed, OwnerlessArtifactWrapper must also be changed.
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index 432115a..0e0c4ee 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -83,6 +83,14 @@
};
@Test
+ public void directoryArtifactInRoot() throws Exception {
+ scratch.file(
+ "BUILD", "genrule(name = 'slurps_dir', srcs = ['.'], outs = ['out'], cmd = 'touch $@')");
+ // Expect no errors.
+ update("//:slurps_dir");
+ }
+
+ @Test
public void testRuleConfiguredTarget() throws Exception {
scratch.file("pkg/BUILD",
"genrule(name='foo', ",