diff options
author | 2018-01-05 12:18:46 -0800 | |
---|---|---|
committer | 2018-01-05 12:20:28 -0800 | |
commit | 9755c72b48866ed034bd28aa033e9abd27431b1e (patch) | |
tree | ffbd368944ecd655c3cb079e280f4eb963608077 /src/main/java/com/google/devtools/build/lib | |
parent | d5d508dcaa3f9ad1cf9d6ad88a4f5024f9d60757 (diff) |
PiperOrigin-RevId: 180959513
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
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; + } +} |