Skip to content

Commit

Permalink
[feature] assign value of javac -target flag to JvmBuildTarget's …
Browse files Browse the repository at this point in the history
…`javaVersion`

add support for '--target'

change target version in test

add support for release flag

add a separate target for a target with the flag

add target flag to sample repo test

parse javac '-target' as jvm java version


Merge-request: BAZEL-MR-703
Merged-by: Katarzyna Mielnik <katarzyna.anna.mielnik@jetbrains.com>
  • Loading branch information
mielnikk authored and qodana-bot committed Jan 3, 2024
1 parent c4aaf5e commit 9098181
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,15 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
)
javaTargetsJavaBinarySources.roots = listOf("file://\$WORKSPACE/")

val javaTargetsJavaBinaryWithFlagJava = SourceItem(
"file://\$WORKSPACE/java_targets/JavaBinaryWithFlag.java", SourceItemKind.FILE, false
)
val javaTargetsJavaBinaryWithFlagSources = SourcesItem(
BuildTargetIdentifier("$targetPrefix//java_targets:java_binary_with_flag"),
listOf(javaTargetsJavaBinaryWithFlagJava)
)
javaTargetsJavaBinaryWithFlagSources.roots = listOf("file://\$WORKSPACE/")

val javaTargetsJavaLibraryJava = SourceItem(
"file://\$WORKSPACE/java_targets/JavaLibrary.java", SourceItemKind.FILE, false
)
Expand Down Expand Up @@ -247,6 +256,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
scalaTargetsScalaBinarySources,
scalaTargetsScalaTestSources,
javaTargetsJavaBinarySources,
javaTargetsJavaBinaryWithFlagSources,
javaTargetsJavaLibrarySources,
javaTargetsSubpackageJavaLibrarySources,
javaTargetsJavaLibraryExportedSources,
Expand Down Expand Up @@ -278,6 +288,8 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
)
val javaTargetsJavaBinary =
ResourcesItem(BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"), emptyList())
val javaTargetsJavaBinaryWithFlag =
ResourcesItem(BuildTargetIdentifier("$targetPrefix//java_targets:java_binary_with_flag"), emptyList())
val javaTargetsJavaLibrary =
ResourcesItem(BuildTargetIdentifier("$targetPrefix//java_targets:java_library"), emptyList())
val javaTargetsJavaLibraryExported = ResourcesItem(
Expand Down Expand Up @@ -320,6 +332,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
targetWithResources,
javaTargetsSubpackageJavaLibrary,
javaTargetsJavaBinary,
javaTargetsJavaBinaryWithFlag,
javaTargetsJavaLibrary,
javaTargetsJavaLibraryExported,
scalaTargetsScalaBinary,
Expand Down Expand Up @@ -437,6 +450,9 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
val javaTargetsJavaBinary = DependencySourcesItem(
BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"), emptyList()
)
val javaTargetsJavaBinaryWithFlag = DependencySourcesItem(
BuildTargetIdentifier("$targetPrefix//java_targets:java_binary_with_flag"), emptyList()
)
val javaTargetsJavaLibrary = DependencySourcesItem(
BuildTargetIdentifier("$targetPrefix//java_targets:java_library"), emptyList()
)
Expand Down Expand Up @@ -497,6 +513,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
val expectedDependencies = DependencySourcesResult(
listOf(
javaTargetsJavaBinary,
javaTargetsJavaBinaryWithFlag,
javaTargetsJavaLibrary,
targetWithDependencyJavaBinary,
javaTargetsSubpackageJavaLibrary,
Expand Down Expand Up @@ -543,6 +560,15 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
).apply {
mainClasses = listOf(JvmMainClass("java_targets.JavaBinary", emptyList()))
},
JvmEnvironmentItem(
BuildTargetIdentifier("$targetPrefix//java_targets:java_binary_with_flag"),
listOf(),
emptyList(),
"\$WORKSPACE",
mapOf()
).apply {
mainClasses = listOf(JvmMainClass("java_targets.JavaBinaryWithFlag", emptyList()))
},
JvmEnvironmentItem(
BuildTargetIdentifier("$targetPrefix//java_targets:java_library"),
listOf(),
Expand Down Expand Up @@ -771,6 +797,15 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
).apply {
mainClasses = listOf(JvmMainClass("java_targets.JavaBinary", emptyList()))
},
JvmEnvironmentItem(
BuildTargetIdentifier("$targetPrefix//java_targets:java_binary_with_flag"),
listOf(),
emptyList(),
"\$WORKSPACE",
mapOf()
).apply {
mainClasses = listOf(JvmMainClass("java_targets.JavaBinaryWithFlag", emptyList()))
},
JvmEnvironmentItem(
BuildTargetIdentifier("$targetPrefix//java_targets:java_library"),
listOf(),
Expand Down Expand Up @@ -992,6 +1027,11 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
it.javaVersion = "11"
}

val jvmBuildTargetWithFlag = JvmBuildTarget().also {
it.javaHome = "file://\$BAZEL_OUTPUT_BASE_PATH/external/remotejdk11_\$OS/"
it.javaVersion = "8"
}

val javaTargetsJavaBinary = BuildTarget(
BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"),
listOf("application"),
Expand All @@ -1004,6 +1044,18 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
javaTargetsJavaBinary.dataKind = "jvm"
javaTargetsJavaBinary.data = jvmBuildTarget

val javaTargetsJavaBinaryWithFlag = BuildTarget(
BuildTargetIdentifier("$targetPrefix//java_targets:java_binary_with_flag"),
listOf("application"),
listOf("java"),
emptyList(),
BuildTargetCapabilities().also { it.canCompile = true; it.canTest = false; it.canRun = true; it.canDebug = false }
)
javaTargetsJavaBinaryWithFlag.displayName = "$targetPrefix//java_targets:java_binary_with_flag"
javaTargetsJavaBinaryWithFlag.baseDirectory = "file://\$WORKSPACE/java_targets/"
javaTargetsJavaBinaryWithFlag.dataKind = "jvm"
javaTargetsJavaBinaryWithFlag.data = jvmBuildTargetWithFlag

val scalaBuildTarget = ScalaBuildTarget(
"org.scala-lang",
"2.12.14",
Expand Down Expand Up @@ -1270,6 +1322,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() {
return WorkspaceBuildTargetsResult(
listOf(
javaTargetsJavaBinary,
javaTargetsJavaBinaryWithFlag,
scalaTargetsScalaBinary,
javaTargetsSubpackageSubpackage,
javaTargetsJavaLibrary,
Expand Down
12 changes: 12 additions & 0 deletions e2e/test-resources/sample-repo/java_targets/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@ java_binary(
visibility = ["//visibility:public"],
)

java_binary(
name = "java_binary_with_flag",
srcs = ["JavaBinaryWithFlag.java"],
javacopts = [
"-Werror",
"-Xlint:all",
"-target 8",
],
main_class = "java_targets.JavaBinaryWithFlag",
visibility = ["//visibility:public"],
)

java_library(
name = "java_library",
srcs = ["JavaLibrary.java"],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package java_targets;

public class JavaBinaryWithFlag {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,19 @@ class JavaLanguagePlugin(
buildTarget.data = jvmBuildTarget
}

private fun javaVersionFromJavacOpts(javacOpts: List<String>): String? =
javacOpts.mapNotNull {
val flagName = it.substringBefore(' ')
val argument = it.substringAfter(' ')
if (flagName == "-target" || flagName == "--target" || flagName == "--release") argument else null
}.firstOrNull()


fun toJvmBuildTarget(javaModule: JavaModule): JvmBuildTarget {
val jdk = javaModule.jdk
val javaHome = jdk.javaHome?.toString()
return JvmBuildTarget().also {
it.javaVersion = jdk.version
it.javaVersion = javaVersionFromJavacOpts(javaModule.javacOpts)?: jdk.version
it.javaHome = javaHome
}
}
Expand Down

0 comments on commit 9098181

Please sign in to comment.