aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2017-09-06 12:17:58 +0200
committerGravatar Irina Iancu <elenairina@google.com>2017-09-06 12:25:35 +0200
commit3da30befb83121f5c4ff14eb7c0114b5f6b5c36c (patch)
tree0b9dae06c429b59d272ff9c645c4009674d6af7e /src/main/java/com/google/devtools/build
parentcd1ae23c72a206461c4c8b431dd2484727fb2afc (diff)
Add java_common.build_ijar.
PiperOrigin-RevId: 167699728
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java56
1 files changed, 46 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
index 358dd3c61d..b30ef83511 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
@@ -344,11 +344,7 @@ public class JavaSkylarkCommon {
hostJavabaseProvider == null
? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)
: hostJavabaseProvider.getMiddlemanArtifact();
- JavaToolchainProvider javaToolchainProvider =
- javaToolchain.getProvider(JavaToolchainProvider.class);
- if (javaToolchain == null) {
- throw new EvalException(null, javaToolchain.getLabel() + " is not a java_toolchain rule.");
- }
+ JavaToolchainProvider javaToolchainProvider = getJavaToolchainProvider(javaToolchain);
JavaCompilationArtifacts artifacts =
helper.build(
javaSemantics,
@@ -381,6 +377,40 @@ public class JavaSkylarkCommon {
.build();
}
+ @SkylarkCallable(
+ name = "build_ijar",
+ documented = true,
+ doc = "Builds and returns the ijar file for the given jar file.",
+ mandatoryPositionals = 1,
+ parameters = {
+ @Param(
+ name = "jar",
+ positional = true,
+ named = true,
+ type = Artifact.class,
+ doc = "The input .jar file for which an ijar will be built. Mandatory."
+ ),
+ @Param(
+ name = "java_toolchain",
+ positional = true,
+ named = true,
+ type = ConfiguredTarget.class,
+ doc = "A label pointing to a java_toolchain rule to be used for this compilation. "
+ + "Mandatory."
+ ),
+ }
+ )
+ public Artifact buildIjar(
+ SkylarkRuleContext skylarkRuleContext,
+ Artifact fullJar,
+ ConfiguredTarget javaToolchain) throws EvalException {
+ return JavaCompilationHelper.createIjarAction(
+ skylarkRuleContext.getRuleContext(),
+ getJavaToolchainProvider(javaToolchain),
+ fullJar,
+ /* addPrefix = */ true);
+ }
+
/**
* Creates a {@link JavaSourceJarsProvider} from the given list of source jars.
*/
@@ -406,11 +436,7 @@ public class JavaSkylarkCommon {
RuleContext ruleContext = skylarkRuleContext.getRuleContext();
ConfiguredTarget javaToolchainConfigTarget =
(ConfiguredTarget) skylarkRuleContext.getAttr().getValue(javaToolchainAttr);
- JavaToolchainProvider toolchain =
- javaToolchainConfigTarget.getProvider(JavaToolchainProvider.class);
- if (toolchain == null) {
- throw new EvalException(null, javaToolchainAttr + " is not a java_toolchain rule label");
- }
+ JavaToolchainProvider toolchain = getJavaToolchainProvider(javaToolchainConfigTarget);
return ImmutableList.copyOf(Iterables.concat(
toolchain.getJavacOptions(), ruleContext.getTokenizedStringListAttr("javacopts")));
}
@@ -444,6 +470,16 @@ public class JavaSkylarkCommon {
.build();
}
+ private static JavaToolchainProvider getJavaToolchainProvider(ConfiguredTarget javaToolchain)
+ throws EvalException{
+ JavaToolchainProvider javaToolchainProvider =
+ javaToolchain.getProvider(JavaToolchainProvider.class);
+ if (javaToolchainProvider == null) {
+ throw new EvalException(null, javaToolchain.getLabel() + " is not a java_toolchain rule.");
+ }
+ return javaToolchainProvider;
+ }
+
/**
* Returns a new JavaCompilationArgsProvider whose direct-jars part is the union of both the
* direct and indirect jars of 'provider'.