diff options
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.java | 16 |
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) |