aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java
index 0c40818e16..8bc64cbf01 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java
@@ -28,6 +28,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
+import com.google.devtools.build.lib.util.OS;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
@@ -115,6 +116,21 @@ public class RClassGeneratorActionBuilder {
// Create the spawn action.
SpawnAction.Builder spawnActionBuilder = new SpawnAction.Builder();
+
+ if (OS.getCurrent() == OS.WINDOWS) {
+ // Some flags (e.g. --mainData) may specify lists (or lists of lists) separated by special
+ // characters (colon, semicolon, hashmark, ampersand) that don't work on Windows, and quoting
+ // semantics are very complicated (more so than in Bash), so let's just always use a parameter
+ // file.
+ // TODO(laszlocsomor), TODO(corysmith): restructure the Android BusyBux's flags by deprecating
+ // list-type and list-of-list-type flags that use such problematic separators in favor of
+ // multi-value flags (to remove one level of listing) and by changing all list separators to a
+ // platform-safe character (= comma).
+ spawnActionBuilder.alwaysUseParameterFile(ParameterFileType.UNQUOTED);
+ } else {
+ spawnActionBuilder.useParameterFile(ParameterFileType.SHELL_QUOTED);
+ }
+
ruleContext.registerAction(
spawnActionBuilder
.useParameterFile(ParameterFileType.UNQUOTED)