Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sandbox does not create empty directory for aar_import with empty resources treeartifact #1928

Closed
aj-michael opened this issue Oct 11, 2016 · 0 comments

Comments

@aj-michael
Copy link
Contributor

aar_import outputs a TreeArtifact that represents a directory structure containing Android resources. If the AAR does not have any Android resources, PopulateTreeArtifactAction creates an empty directory. This TreeArtifact is passed to the AndroidResourceProcessingAction. However, the Bazel sandbox does not create the treeartifact directory unless there are files inside to symlink. This causes AndroidResourceProcessingAction to fail.

This issue was encountered in #1745 (comment).

Repro case using support-v4-24.0.0.aar that contains an empty resource directory:

# WORKSPACE
android_sdk_repository(
    name = "androidsdk",
    ...
)
# java/foo/BUILD
android_binary(
    name = "app",
    srcs = ["MainActivity.java"],
    manifest = "AndroidManifest.xml",
    deps = ["@androidsdk//com.android.support:support-v4-24.0.0"],
)
$ bazel build --verbose_failures //java/foo:app
INFO: Found 1 target...
ERROR: /usr/local/google/home/ajmichael/.cache/bazel/_bazel_ajmichael/0c15bb6a56c9c860e4d322469d5b7237/external/androidsdk/com.android.support/BUILD:3495:1: Processing Android resources for @androidsdk//com.android.support:support-v4-24.0.0 failed: linux-sandbox failed: error executing command 
  (cd /usr/local/google/home/ajmichael/.cache/bazel/_bazel_ajmichael/0c15bb6a56c9c860e4d322469d5b7237/bazel-sandbox/6cb61cb0-fdb2-46ae-82af-3c9d53380401-0/execroot/playground && \
  exec env - \
  /usr/local/google/home/ajmichael/.cache/bazel/_bazel_ajmichael/0c15bb6a56c9c860e4d322469d5b7237/execroot/playground/_bin/linux-sandbox @/usr/local/google/home/ajmichael/.cache/bazel/_bazel_ajmichael/0c15bb6a56c9c860e4d322469d5b7237/bazel-sandbox/6cb61cb0-fdb2-46ae-82af-3c9d53380401-0/linux-sandbox.params -- bazel-out/host/bin/external/bazel_tools/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction --buildToolsVersion 24.0.0 --aapt bazel-out/host/bin/external/androidsdk/aapt_binary --annotationJar external/androidsdk/tools/support/annotations.jar --androidJar external/androidsdk/platforms/android-24/android.jar --primaryData bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/external/androidsdk/com.android.support/_aar/unzipped/support-v4-24.0.0::bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/external/androidsdk/com.android.support/_aar/support-v4-24.0.0/AndroidManifest.xml --packageType LIBRARY --rOutput bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/external/androidsdk/com.android.support/support-v4-24.0.0_symbols/R.txt --symbolsTxtOut bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/external/androidsdk/com.android.support/support-v4-24.0.0_symbols/local-R.txt --srcJarOutput bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/external/androidsdk/com.android.support/support-v4-24.0.0.srcjar --manifestOutput bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/external/androidsdk/com.android.support/support-v4-24.0.0_processed_manifest/AndroidManifest.xml --resourcesOutput bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/external/androidsdk/com.android.support/support-v4-24.0.0_files/resource_files.zip '--useAaptCruncher=no' --debug).
Error parsing command line: While parsing option --primaryData: invalid UnvalidatedAndroidData: bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/external/androidsdk/com.android.support/_aar/unzipped/support-v4-24.0.0 does not exist
Try --help.
Target //java/foo:app failed to build

$ bazel build --spawn_strategy=standalone //java/foo:app
INFO: Found 1 target...
Target //java/foo:app up-to-date:
  bazel-bin/java/foo/app_deploy.jar
  bazel-bin/java/foo/app_unsigned.apk
  bazel-bin/java/foo/app.apk
INFO: Elapsed time: 10.285s, Critical Path: 7.44s

Note the line: "...external/androidsdk/com.android.support/_aar/unzipped/support-v4-24.0.0 does not exist". This is the TreeArtifact empty directory that should have been created.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants