Allow executing input files in addition to output ones
With remote repositories, it is useful to do this to execute an input
file which isn't actually part of the source tree.
Closes #984
--
Change-Id: Ic986ea9bbe88e0edb933939ce1d7a8b6ea9d6e88
Reviewed-on: https://bazel-review.googlesource.com/#/c/3030/
MOS_MIGRATED_REVID=120248102
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
index 01faf50..9127156 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
@@ -32,6 +32,7 @@
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.exec.SymlinkTreeHelper;
+import com.google.devtools.build.lib.packages.InputFile;
import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper;
import com.google.devtools.build.lib.packages.OutputFile;
import com.google.devtools.build.lib.packages.Rule;
@@ -493,11 +494,10 @@
/**
* Return true iff {@code target} is a rule that has an executable file. This includes
- * *_test rules, *_binary rules, and generated outputs.
+ * *_test rules, *_binary rules, generated outputs, and inputs.
*/
private static boolean isExecutable(Target target) {
- return isOutputFile(target) || isExecutableNonTestRule(target)
- || TargetUtils.isTestRule(target);
+ return isPlainFile(target) || isExecutableNonTestRule(target) || TargetUtils.isTestRule(target);
}
/**
@@ -515,7 +515,7 @@
return false;
}
- private static boolean isOutputFile(Target target) {
- return (target instanceof OutputFile);
+ private static boolean isPlainFile(Target target) {
+ return (target instanceof OutputFile) || (target instanceof InputFile);
}
}