aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java26
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java5
6 files changed, 46 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java
index 0a7d7f7ccd..7f147cb422 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java
@@ -54,6 +54,7 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics
codedOut.writeBoolNoTag(semantics.incompatibleDisallowLegacyJavaInfo());
codedOut.writeBoolNoTag(semantics.incompatibleDisallowOldStyleArgsAdd());
codedOut.writeBoolNoTag(semantics.incompatibleDisallowSlashOperator());
+ codedOut.writeBoolNoTag(semantics.incompatibleGenerateJavaCommonSourceJar());
codedOut.writeBoolNoTag(semantics.incompatibleNewActionsApi());
codedOut.writeBoolNoTag(semantics.incompatibleNoSupportToolsInActionInputs());
codedOut.writeBoolNoTag(semantics.incompatiblePackageNameIsAFunction());
@@ -80,6 +81,7 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics
builder.incompatibleDisallowLegacyJavaInfo(codedIn.readBool());
builder.incompatibleDisallowOldStyleArgsAdd(codedIn.readBool());
builder.incompatibleDisallowSlashOperator(codedIn.readBool());
+ builder.incompatibleGenerateJavaCommonSourceJar(codedIn.readBool());
builder.incompatibleNewActionsApi(codedIn.readBool());
builder.incompatibleNoSupportToolsInActionInputs(codedIn.readBool());
builder.incompatiblePackageNameIsAFunction(codedIn.readBool());
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java
index 14c68c4d90..8781bb5b59 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java
@@ -179,6 +179,19 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable
public boolean incompatibleDisallowLegacyJavaInfo;
@Option(
+ name = "incompatible_generate_javacommon_source_jar",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ metadataTags = {
+ OptionMetadataTag.INCOMPATIBLE_CHANGE,
+ OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
+ },
+ help = "If set to true, java_common.compile will always generate an output source jar."
+ )
+ public boolean incompatibleGenerateJavaCommonSourceJar;
+
+ @Option(
name = "incompatible_disallow_slash_operator",
defaultValue = "false",
documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
@@ -321,6 +334,7 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable
.incompatibleDisallowLegacyJavaInfo(incompatibleDisallowLegacyJavaInfo)
.incompatibleDisallowOldStyleArgsAdd(incompatibleDisallowOldStyleArgsAdd)
.incompatibleDisallowSlashOperator(incompatibleDisallowSlashOperator)
+ .incompatibleGenerateJavaCommonSourceJar(incompatibleGenerateJavaCommonSourceJar)
.incompatibleNewActionsApi(incompatibleNewActionsApi)
.incompatibleNoSupportToolsInActionInputs(incompatibleNoSupportToolsInActionInputs)
.incompatiblePackageNameIsAFunction(incompatiblePackageNameIsAFunction)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
index f1c2b699a7..802d86ca98 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
@@ -40,6 +40,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider.ClasspathType;
+import com.google.devtools.build.lib.syntax.Environment;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.SkylarkList;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -422,7 +423,8 @@ final class JavaInfoBuildHelper {
SkylarkList<Artifact> sourcepathEntries,
SkylarkList<Artifact> resources,
Boolean neverlink,
- JavaSemantics javaSemantics)
+ JavaSemantics javaSemantics,
+ Environment environment)
throws EvalException {
if (sourceJars.isEmpty() && sourceFiles.isEmpty() && exports.isEmpty()) {
throw new EvalException(
@@ -469,13 +471,19 @@ final class JavaInfoBuildHelper {
JavaRuleOutputJarsProvider.Builder outputJarsBuilder = JavaRuleOutputJarsProvider.builder();
- boolean generateMergedSourceJar =
- (sourceJars.size() > 1 || !sourceFiles.isEmpty())
- || (sourceJars.isEmpty() && sourceFiles.isEmpty() && !exports.isEmpty());
- Artifact outputSourceJar =
- generateMergedSourceJar
- ? getSourceJar(skylarkRuleContext.getRuleContext(), outputJar)
- : sourceJars.get(0);
+ boolean createOutputSourceJar;
+ Artifact outputSourceJar;
+ if (environment.getSemantics().incompatibleGenerateJavaCommonSourceJar()) {
+ outputSourceJar = getSourceJar(skylarkRuleContext.getRuleContext(), outputJar);
+ createOutputSourceJar = true;
+ } else {
+ createOutputSourceJar = (sourceJars.size() > 1 || !sourceFiles.isEmpty())
+ || (sourceJars.isEmpty() && sourceFiles.isEmpty() && !exports.isEmpty());
+ outputSourceJar =
+ createOutputSourceJar
+ ? getSourceJar(skylarkRuleContext.getRuleContext(), outputJar)
+ : sourceJars.get(0);
+ }
JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create();
JavaCompilationArtifacts artifacts =
@@ -485,7 +493,7 @@ final class JavaInfoBuildHelper {
javaRuntimeInfo,
SkylarkList.createImmutable(ImmutableList.of()),
outputJarsBuilder,
- /*createOutputSourceJar=*/ generateMergedSourceJar,
+ /*createOutputSourceJar=*/ createOutputSourceJar,
outputSourceJar,
javaInfoBuilder,
// Include JavaGenJarsProviders from both deps and exports in the JavaGenJarsProvider
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 b44fb1138a..1a7d590f45 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
@@ -97,7 +97,8 @@ public class JavaSkylarkCommon implements JavaCommonApi<Artifact, JavaInfo, Skyl
ConfiguredTarget hostJavabase,
SkylarkList<Artifact> sourcepathEntries,
SkylarkList<Artifact> resources,
- Boolean neverlink) throws EvalException, InterruptedException {
+ Boolean neverlink,
+ Environment environment) throws EvalException, InterruptedException {
return JavaInfoBuildHelper.getInstance()
.createJavaCompileAction(
@@ -116,7 +117,8 @@ public class JavaSkylarkCommon implements JavaCommonApi<Artifact, JavaInfo, Skyl
sourcepathEntries,
resources,
neverlink,
- javaSemantics);
+ javaSemantics,
+ environment);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
index 3f8a1dd073..aa99ba579d 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
@@ -309,7 +309,8 @@ public interface JavaCommonApi<FileT extends FileApi, JavaInfoT extends JavaInfo
type = Boolean.class,
defaultValue = "False"
)
- }
+ },
+ useEnvironment = true
)
public JavaInfoT createJavaCompileAction(
SkylarkRuleContextT skylarkRuleContext,
@@ -326,7 +327,8 @@ public interface JavaCommonApi<FileT extends FileApi, JavaInfoT extends JavaInfo
TransitiveInfoCollectionT hostJavabase,
SkylarkList<FileT> sourcepathEntries,
SkylarkList<FileT> resources,
- Boolean neverlink) throws EvalException, InterruptedException;
+ Boolean neverlink,
+ Environment environment) throws EvalException, InterruptedException;
@SkylarkCallable(
name = "run_ijar",
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
index bea8aa7469..5bd711b75e 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
@@ -61,6 +61,8 @@ public abstract class SkylarkSemantics {
public abstract boolean incompatibleDisallowSlashOperator();
+ public abstract boolean incompatibleGenerateJavaCommonSourceJar();
+
public abstract boolean incompatibleNewActionsApi();
public abstract boolean incompatibleNoSupportToolsInActionInputs();
@@ -101,6 +103,7 @@ public abstract class SkylarkSemantics {
.incompatibleDisallowLegacyJavaInfo(false)
.incompatibleDisallowOldStyleArgsAdd(false)
.incompatibleDisallowSlashOperator(false)
+ .incompatibleGenerateJavaCommonSourceJar(false)
.incompatibleNewActionsApi(false)
.incompatibleNoSupportToolsInActionInputs(false)
.incompatiblePackageNameIsAFunction(false)
@@ -137,6 +140,8 @@ public abstract class SkylarkSemantics {
public abstract Builder incompatibleDisallowSlashOperator(boolean value);
+ public abstract Builder incompatibleGenerateJavaCommonSourceJar(boolean value);
+
public abstract Builder incompatibleNewActionsApi(boolean value);
public abstract Builder incompatibleNoSupportToolsInActionInputs(boolean value);