From c77f891e7c214a39f9f196cd0a308f9ea5819ad9 Mon Sep 17 00:00:00 2001 From: Laszlo Csomor Date: Tue, 5 Sep 2017 09:35:39 +0200 Subject: 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 --- .../java/com/google/devtools/build/lib/rules/android/AarImport.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/android') 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 -- cgit v1.2.3