diff options
-rw-r--r-- | examples/android/README.md | 4 | ||||
-rw-r--r-- | src/BUILD | 49 | ||||
-rw-r--r-- | src/main/cpp/blaze.cc | 2 | ||||
-rw-r--r-- | src/main/java/BUILD | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE | 2 | ||||
-rw-r--r-- | src/main/java/options.BUILD | 13 | ||||
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD | 5 |
7 files changed, 71 insertions, 12 deletions
diff --git a/examples/android/README.md b/examples/android/README.md index dd0a3694aa..36f3345b68 100644 --- a/examples/android/README.md +++ b/examples/android/README.md @@ -1,10 +1,6 @@ In order to build these examples, add the following two rules to the top-level `WORKSPACE` file (two directories above this file): ```python -android_local_tools_repository( - name="android_tools", - path="<full path to the source tree of Bazel>") - android_sdk_repository( name="androidsdk", path="<full path to your Android SDK>", @@ -25,6 +25,7 @@ genrule( "//src/main/tools:process-wrapper", "//src/main/tools:namespace-sandbox", "//src/main/tools:build_interface_so", + ":android_tools_repository_zip", ], outs = ["install_base_key"], cmd = select({ @@ -61,11 +62,36 @@ genrule( ) genrule( + name = "android_tools_repository_zip", + srcs = [ + "//tools:srcs", + "//third_party:srcs", + "//src/tools/android/java/com/google/devtools/build/android:srcs", + "//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:srcs", + "//src/tools/android/java/com/google/devtools/build/android/ziputils:srcs", + "//src/main/protobuf:srcs", + "//src/main/java:options-srcs", + ], + outs = ["android_tools_repository.zip"], + cmd = "\n".join([ + "mkdir -p $(@D)/android-tools-zip", + "for i in $(SRCS); do", + " mkdir -p $$(dirname $(@D)/android-tools-zip/$$i)", + " cp $$i $$(dirname $(@D)/android-tools-zip/$$i)", + "done", + "touch $(@D)/android-tools-zip/WORKSPACE", + "mv $(@D)/android-tools-zip/src/main/java/options.BUILD" + + " $(@D)/android-tools-zip/src/main/java/BUILD", + "find $(@D)/android-tools-zip -exec touch -t 198001010000.00 '{}' ';'", + "P=$$PWD; (cd $(@D)/android-tools-zip && zip -qrD $$P/$@ *)", + "rm -fr $(@D)/android-tools-zip", + ]), +) + +genrule( name = "package-zip", srcs = [ "//src/main/java:bazel-main_deploy.jar", - # The jar must the first in the zip file because the client launcher - # looks for the first entry in the zip file for the java server. "//src/main/cpp:client", ":libunix", "//src/main/tools:build-runfiles", @@ -75,14 +101,23 @@ genrule( "//src/main/tools:build_interface_so", "install_base_key", ":java-version", + ":android_tools_repository_zip", ], outs = ["package.zip"], # Terrible hack to remove timestamps in the zip file - cmd = "mkdir -p $(@D)/package-zip && " + - "cp $(SRCS) $(@D)/package-zip && " + - "touch -t 198001010000.00 $(@D)/package-zip/* && " + - "zip -qj $@ $(@D)/package-zip/* && " + - "rm -fr $(@D)/package-zip", + cmd = "\n".join([ + "mkdir -p $(@D)/package-zip", + "cp $(SRCS) $(@D)/package-zip", + # TODO(dmarting): we should change the client to connect to server.jar + # instead of the first binary in the list. + "mv $(@D)/package-zip/bazel-main_deploy.jar $(@D)/package-zip/A-server.jar", + "touch -t 198001010000.00 $(@D)/package-zip/*", + "mkdir $(@D)/package-zip/android_tools", + "(cd $(@D)/package-zip/android_tools && unzip -q ../android_tools_repository.zip)", + "rm $(@D)/package-zip/android_tools_repository.zip", + "P=$$PWD; (cd $(@D)/package-zip && zip -qrD $$P/$@ *)", + "rm -fr $(@D)/package-zip", + ]), ) genrule( diff --git a/src/main/cpp/blaze.cc b/src/main/cpp/blaze.cc index b3ec5aea61..89591aa1c9 100644 --- a/src/main/cpp/blaze.cc +++ b/src/main/cpp/blaze.cc @@ -967,7 +967,7 @@ static void ExtractData(const string &self_path) { } // Check that the timestamp is in the future. A past timestamp would indicate // that the file has been tampered with. See ActuallyExtractData(). - if (buf.st_mtime <= time_now) { + if (!S_ISDIR(buf.st_mode) && buf.st_mtime <= time_now) { die(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR, "Error: corrupt installation: file '%s' " "modified. Please remove '%s' and try again.", diff --git a/src/main/java/BUILD b/src/main/java/BUILD index 5efd2d0327..357f843867 100644 --- a/src/main/java/BUILD +++ b/src/main/java/BUILD @@ -105,6 +105,14 @@ java_library( ], ) +filegroup( + name = "options-srcs", + srcs = glob([ + "com/google/devtools/common/options/*.java", + ]) + ["options.BUILD"], + visibility = ["//src:__subpackages__"], +) + java_library( name = "packages", srcs = glob([ diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE index 711409aaa6..fa985a0ce5 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE @@ -1,3 +1,5 @@ +android_local_tools_repository(name = "default_android_tools", path = __embedded_dir__ + "/android_tools") + # bind(name = "android/proguard_whitelister", actual = "//tools/android:proguard_whitelister") # bind(name = "android/merge_manifests", actual = "//tools/android:merge_manifests") # bind(name = "android/build_incremental_dexmanifest", actual = "//tools/android:build_incremental_dexmanifest") diff --git a/src/main/java/options.BUILD b/src/main/java/options.BUILD new file mode 100644 index 0000000000..844cf2a61a --- /dev/null +++ b/src/main/java/options.BUILD @@ -0,0 +1,13 @@ +# TODO(dmarting): to make clearer, instead of doing that, we should +# move every target of the BUILD file into there java package. +java_library( + name = "options", + srcs = glob([ + "com/google/devtools/common/options/*.java", + ]), + visibility = ["//visibility:public"], + deps = [ + "//third_party:guava", + "//third_party:jsr305", + ], +) diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD index f99ea5e701..3740a2a213 100644 --- a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD +++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD @@ -4,6 +4,11 @@ package( default_visibility = ["//visibility:public"], ) +filegroup( + name = "srcs", + srcs = glob(["**"]), +) + java_library( name = "ziputils_lib", srcs = glob( |