aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/LibraryRGeneratorActionBuilder.java
diff options
context:
space:
mode:
authorGravatar Tobias Werth <twerth@google.com>2017-03-20 09:00:09 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-20 11:45:40 +0000
commitbd40871283a54268945dcb0c47c0326645ffda18 (patch)
tree7e9a88258f3f3936e47dd230769300e793eedf74 /src/main/java/com/google/devtools/build/lib/rules/android/LibraryRGeneratorActionBuilder.java
parentc6a6a7791b1464bea79bf9af01f00360b0147450 (diff)
*** Reason for rollback *** broke over 100k targets, in the depot, see [] *** Original change description *** Move library R generation to a separate action, ensuring the merging happens off the java critical path. -- PiperOrigin-RevId: 150602545 MOS_MIGRATED_REVID=150602545
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/LibraryRGeneratorActionBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/LibraryRGeneratorActionBuilder.java117
1 files changed, 0 insertions, 117 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/LibraryRGeneratorActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/LibraryRGeneratorActionBuilder.java
deleted file mode 100644
index 361a70a803..0000000000
--- a/src/main/java/com/google/devtools/build/lib/rules/android/LibraryRGeneratorActionBuilder.java
+++ /dev/null
@@ -1,117 +0,0 @@
-// 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.common.base.Function;
-import com.google.common.base.Strings;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
-import com.google.devtools.build.lib.analysis.FilesToRunProvider;
-import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
-import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
-import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
-import com.google.devtools.build.lib.collect.nestedset.Order;
-
-/** Builder for the action that generates the R class for libraries. */
-public class LibraryRGeneratorActionBuilder {
- static final Function<ResourceContainer, Artifact> TO_SYMBOL_ARTIFACT =
- new Function<ResourceContainer, Artifact>() {
- @Override
- public Artifact apply(ResourceContainer input) {
- return input.getSymbols();
- }
- };
- static final Function<ResourceContainer, String> TO_SYMBOL_PATH =
- new Function<ResourceContainer, String>() {
- @Override
- public String apply(ResourceContainer container) {
- return container.getSymbols().getExecPathString();
- }
- };
-
- private String javaPackage;
- private Iterable<ResourceContainer> deps = ImmutableList.<ResourceContainer>of();
- private ResourceContainer resourceContainer;
- private Artifact rJavaClassJar;
-
- public LibraryRGeneratorActionBuilder setJavaPackage(String javaPackage) {
- this.javaPackage = javaPackage;
- return this;
- }
-
- public LibraryRGeneratorActionBuilder withPrimary(ResourceContainer resourceContainer) {
- this.resourceContainer = resourceContainer;
- return this;
- }
-
- public LibraryRGeneratorActionBuilder withDependencies(ResourceDependencies resourceDeps) {
- this.deps = resourceDeps.getResources();
- return this;
- }
-
- public LibraryRGeneratorActionBuilder setClassJarOut(Artifact rJavaClassJar) {
- this.rJavaClassJar = rJavaClassJar;
- return this;
- }
-
- public ResourceContainer build(RuleContext ruleContext) {
- AndroidSdkProvider sdk = AndroidSdkProvider.fromRuleContext(ruleContext);
-
- CustomCommandLine.Builder builder = new CustomCommandLine.Builder();
- NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder();
- FilesToRunProvider executable =
- ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST);
- inputs.addAll(executable.getRunfilesSupport().getRunfilesArtifactsWithoutMiddlemen());
-
- builder.add("--tool").add("GENERATE_LIBRARY_R").add("--");
-
- if (!Strings.isNullOrEmpty(javaPackage)) {
- builder.add("--packageForR").add(javaPackage);
- }
-
- FluentIterable<ResourceContainer> symbolProviders =
- FluentIterable.from(deps).append(resourceContainer);
-
- builder.addJoinStrings(
- "--symbols",
- ruleContext.getConfiguration().getHostPathSeparator(),
- symbolProviders.transform(TO_SYMBOL_PATH));
- inputs.addTransitive(
- NestedSetBuilder.wrap(
- Order.NAIVE_LINK_ORDER, symbolProviders.transform(TO_SYMBOL_ARTIFACT)));
-
- builder.addExecPath("--classJarOutput", rJavaClassJar);
-
- builder.addExecPath("--androidJar", sdk.getAndroidJar());
- inputs.add(sdk.getAndroidJar());
-
- // Create the spawn action.
- SpawnAction.Builder spawnActionBuilder = new SpawnAction.Builder();
- ruleContext.registerAction(
- spawnActionBuilder
- .addTransitiveInputs(inputs.build())
- .addOutputs(ImmutableList.<Artifact>of(rJavaClassJar))
- .useParameterFile(ParameterFileType.UNQUOTED)
- .setCommandLine(builder.build())
- .setExecutable(executable)
- .setProgressMessage("Generating Library R Classes: " + ruleContext.getLabel())
- .setMnemonic("LibraryRClassGenerator")
- .build(ruleContext));
- return resourceContainer.toBuilder().setJavaClassJar(rJavaClassJar).build();
- }
-}