aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--examples/android/README.md4
-rw-r--r--src/BUILD49
-rw-r--r--src/main/cpp/blaze.cc2
-rw-r--r--src/main/java/BUILD8
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE2
-rw-r--r--src/main/java/options.BUILD13
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD5
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>",
diff --git a/src/BUILD b/src/BUILD
index 994eab5eef..e9c0f3d851 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -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(