aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
diff options
context:
space:
mode:
authorGravatar Laurent Le Brun <laurentlb@google.com>2015-05-13 14:58:59 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-05-15 09:43:40 +0000
commitb129683b975ef1d88774f7a18f66cc89e7f86306 (patch)
tree4ea65bb1881295f996d0fdb5408050cedfd8d721 /src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
parent7af69a839580ca625e30e940f1a09add0c6c1b62 (diff)
Skylark: Add an empty argument after bash -c 'arg'.
bash treats the argument after the command as $0. This is confusing. -- MOS_MIGRATED_REVID=93521828
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
index be248b13a6..a653b51749 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
@@ -127,6 +127,13 @@ public class SkylarkRuleImplementationFunctions {
// TODO(bazel-team): builder still makes unnecessary copies of inputs, outputs and args.
builder.addInputs(castList(inputs, Artifact.class));
builder.addOutputs(castList(outputs, Artifact.class));
+ if (commandO != Environment.NONE && arguments.size() > 0) {
+ // When we use a shell command, add an empty argument before other arguments.
+ // e.g. bash -c "cmd" '' 'arg1' 'arg2'
+ // bash will use the empty argument as the value of $0 (which we don't care about).
+ // arg1 and arg2 will be $1 and $2, as a user exects.
+ builder.addArgument("");
+ }
builder.addArguments(castList(arguments, String.class));
if (executableO != Environment.NONE) {
if (executableO instanceof Artifact) {