aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-01-05 12:18:46 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-05 12:20:28 -0800
commit9755c72b48866ed034bd28aa033e9abd27431b1e (patch)
treeffbd368944ecd655c3cb079e280f4eb963608077 /src/main/java/com/google/devtools/build/lib
parentd5d508dcaa3f9ad1cf9d6ad88a4f5024f9d60757 (diff)
PiperOrigin-RevId: 180959513
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceRule.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/Dex2OatProvider.java35
3 files changed, 48 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
index fbe66747c2..057739510b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
@@ -124,6 +124,8 @@ public class AndroidDevice implements RuleConfiguredTargetFactory {
RunfilesSupport.withExecutable(ruleContext, runfiles, executable);
NestedSet<Artifact> extraFilesToRun =
NestedSetBuilder.create(Order.STABLE_ORDER, runfilesSupport.getRunfilesMiddleman());
+ boolean cloudDex2oatEnabled = ruleContext.attributes().get(
+ "pregenerate_oat_files_for_tests", Type.BOOLEAN);
return new RuleConfiguredTargetBuilder(ruleContext)
.setFilesToBuild(filesToBuild)
.addProvider(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
@@ -132,6 +134,8 @@ public class AndroidDevice implements RuleConfiguredTargetFactory {
.addNativeDeclaredProvider(new ExecutionInfo(executionInfo))
.addProvider(
DeviceBrokerTypeProvider.class, new DeviceBrokerTypeProvider(DEVICE_BROKER_TYPE))
+ .addProvider(
+ Dex2OatProvider.class, new Dex2OatProvider(cloudDex2oatEnabled))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceRule.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceRule.java
index 5c37d9fd09..adafacf475 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceRule.java
@@ -102,6 +102,15 @@ public final class AndroidDeviceRule implements RuleDefinition {
A list of apks to be installed on the device at boot time.
<!-- #END_BLAZE_RULE.ATTRIBUTE --> */
.add(attr("platform_apks", LABEL_LIST).legacyAllowAnyFileType())
+ // This should be set to false when we globally enable the flag for cloud dex2oat.
+ // Setting it to True for now is a no-op today, but setting it to false will disable
+ // all Dex2Oat functionality. This will be changed back to false based on this release
+ // process
+ // 1. Set pregenerate_oat_files_for_tests with default to true.
+ // 2. Wait for a Blaze release. This should be a no-op.
+ // 3. Update all android_device rules and set value of cloud_dex2oat appropriately.
+ // 4. Change the default flag value to false.
+ .add(attr("pregenerate_oat_files_for_tests", BOOLEAN).value(true))
.add(
attr("$adb_static", LABEL)
.cfg(HostTransition.INSTANCE)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/Dex2OatProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/Dex2OatProvider.java
new file mode 100644
index 0000000000..e6d83c1eac
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/Dex2OatProvider.java
@@ -0,0 +1,35 @@
+// Copyright 2017 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.rules.android;
+
+import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
+
+/** Supplies the pregenerate_oat_files_for_tests attribute of type boolean provided by
+ * android_device rule.
+ */
+public class Dex2OatProvider implements TransitiveInfoProvider {
+
+ private final boolean cloudDex2oatEnabled;
+
+ public Dex2OatProvider(boolean cloudDex2oatEnabled) {
+ this.cloudDex2oatEnabled = cloudDex2oatEnabled;
+ }
+
+ /**
+ * Returns if the device should run cloud dex2oat.
+ */
+ public boolean isCloudDex2oatEnabled() {
+ return cloudDex2oatEnabled;
+ }
+}