aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2017-09-05 09:35:39 +0200
committerGravatar Yun Peng <pcloudy@google.com>2017-09-05 09:55:00 +0200
commitc77f891e7c214a39f9f196cd0a308f9ea5819ad9 (patch)
treeda1dee33a33163a89a7a16c8aec59db9dcef897b /src
parent98bfd9831168660d10ba4f29b62dc65d90653b13 (diff)
Android,Windows: support long paths in tooling
aar_resources_extractor now supports long paths on Windows. If the script needs to extract a file from the AAR where the destination path is too long, the script will: 1. create a temporary junction under a short path, pointing to the destination directory (which has a long path) 2. extract the file under the junction 3. delete the junction and the temp directory See https://github.com/bazelbuild/bazel/issues/3659 Change-Id: Ie85665b360a6514afaac546aaec8869224fe9d06 PiperOrigin-RevId: 167545085
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java6
-rw-r--r--src/test/py/bazel/BUILD1
2 files changed, 6 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index 61295fc8e6..e3d5a12733 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -176,6 +176,7 @@ public class AarImport implements RuleConfiguredTargetFactory {
private static Action[] createSingleFileExtractorActions(RuleContext ruleContext, Artifact aar,
String filename, Artifact outputArtifact) {
return new SpawnAction.Builder()
+ .useDefaultShellEnvironment()
.setExecutable(ruleContext.getExecutablePrerequisite(AarImportBaseRule.ZIPPER, Mode.HOST))
.setMnemonic("AarFileExtractor")
.setProgressMessage("Extracting %s from %s", filename, aar.getFilename())
@@ -193,6 +194,7 @@ public class AarImport implements RuleConfiguredTargetFactory {
private static Action[] createAarResourcesExtractorActions(
RuleContext ruleContext, Artifact aar, Artifact outputTree) {
return new SpawnAction.Builder()
+ .useDefaultShellEnvironment()
.setExecutable(
ruleContext.getExecutablePrerequisite(
AarImportBaseRule.AAR_RESOURCES_EXTRACTOR, Mode.HOST))
@@ -210,6 +212,7 @@ public class AarImport implements RuleConfiguredTargetFactory {
private static Action[] createAarEmbeddedJarsExtractorActions(RuleContext ruleContext,
Artifact aar, Artifact jarsTreeArtifact, Artifact singleJarParamFile) {
return new SpawnAction.Builder()
+ .useDefaultShellEnvironment()
.setExecutable(
ruleContext.getExecutablePrerequisite(
AarImportBaseRule.AAR_EMBEDDED_JARS_EXTACTOR, Mode.HOST))
@@ -248,6 +251,7 @@ public class AarImport implements RuleConfiguredTargetFactory {
Artifact outputZip) {
SpawnAction.Builder actionBuilder =
new SpawnAction.Builder()
+ .useDefaultShellEnvironment()
.setExecutable(
ruleContext.getExecutablePrerequisite(
AarImportBaseRule.AAR_NATIVE_LIBS_ZIP_CREATOR, Mode.HOST))
@@ -276,7 +280,7 @@ public class AarImport implements RuleConfiguredTargetFactory {
// Adds the appropriate SpawnAction options depending on if SingleJar is a jar or not.
private static SpawnAction.Builder singleJarSpawnActionBuilder(RuleContext ruleContext) {
- SpawnAction.Builder builder = new SpawnAction.Builder();
+ SpawnAction.Builder builder = new SpawnAction.Builder().useDefaultShellEnvironment();
Artifact singleJar = JavaToolchainProvider.fromRuleContext(ruleContext).getSingleJar();
if (singleJar.getFilename().endsWith(".jar")) {
builder
diff --git a/src/test/py/bazel/BUILD b/src/test/py/bazel/BUILD
index 3be9bc2e0f..f93093b0a1 100644
--- a/src/test/py/bazel/BUILD
+++ b/src/test/py/bazel/BUILD
@@ -20,6 +20,7 @@ py_library(
visibility = [
"//src/test/py/bazel:__pkg__",
"//third_party/def_parser:__pkg__",
+ "//tools/android:__pkg__",
],
)