Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: Add support for buildTarget/jvmCompileClasspath #542

Merged
merged 2 commits into from Mar 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Expand Up @@ -30,6 +30,8 @@
| [6b45eb6](https://github.com/JetBrains/bazel-bsp/commit/6b45eb61fb90c143b845cae69e2f69c6c1b4460d)
- Include libraries defined in `jdeps` files during sync.
| [bb47e49](https://github.com/JetBrains/bazel-bsp/commit/bb47e493fc595ddf21438f454cee7a6cd756fc0b)
- Add support for buildTarget/jvmCompileClasspath
| [f7f2662](https://github.com/JetBrains/bazel-bsp/commit/f7f26623ce3254b2f1ecda95329b665d05862109)

### Fixes 🛠️

Expand Down
4 changes: 2 additions & 2 deletions MODULE.bazel
Expand Up @@ -71,7 +71,7 @@ maven.install(
artifacts = [
"com.google.code.gson:gson:2.10.1",
"com.google.guava:guava:31.0.1-jre",
"ch.epfl.scala:bsp4j:2.2.0-M1",
"ch.epfl.scala:bsp4j:2.2.0-M2",
"commons-io:commons-io:jar:2.15.1",
"commons-cli:commons-cli:jar:1.6.0",
"org.apache.logging.log4j:log4j-api:2.23.1",
Expand Down Expand Up @@ -99,7 +99,7 @@ maven.install(
fetch_sources = True,
lock_file = "//:maven_install.json",
repositories = [
"https://repo.maven.apache.org/maven2",
"https://repo.maven.apache.org/maven2"
],
)
use_repo(
Expand Down
273 changes: 113 additions & 160 deletions MODULE.bazel.lock

Large diffs are not rendered by default.

11 changes: 6 additions & 5 deletions maven_install.json
@@ -1,8 +1,9 @@
{
"__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
"__INPUT_ARTIFACTS_HASH": -175229471,
"__RESOLVED_ARTIFACTS_HASH": 1516630770,
"__INPUT_ARTIFACTS_HASH": 1340442464,
"__RESOLVED_ARTIFACTS_HASH": -1828073000,
"conflict_resolution": {
"ch.epfl.scala:bsp4j:2.2.0-M1": "ch.epfl.scala:bsp4j:2.2.0-M2",
"com.google.code.gson:gson:2.8.9": "com.google.code.gson:gson:2.10.1",
"com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.23.0",
"com.google.guava:guava:31.0.1-jre": "com.google.guava:guava:32.1.3-android",
Expand All @@ -15,10 +16,10 @@
"artifacts": {
"ch.epfl.scala:bsp4j": {
"shasums": {
"jar": "b21b471404f989c3351a6cd02160f3f7de7f7b7276ced6d65b192260c6a9ef04",
"sources": "41cddede304e9439d98c193f3882b81b1c50ea77a20531949f79575b63e5401d"
"jar": "cf13ce15161190b2fa88dc646229979d3cfb48407c0ca5f4b866d1c32d9f5c19",
"sources": "4c1108ffcd20efa4f46448fddc29249c1d4400ba4cfbc0f36135404b60269d61"
},
"version": "2.2.0-M1"
"version": "2.2.0-M2"
},
"com.fasterxml.jackson.core:jackson-annotations": {
"shasums": {
Expand Down
Expand Up @@ -24,6 +24,7 @@ public class BazelBuildServerCapabilities(
jvmRunEnvironmentProvider: Boolean = false,
jvmTestEnvironmentProvider: Boolean = false,
canReload: Boolean = false,
jvmCompileClasspathProvider: Boolean = false,
public val workspaceLibrariesProvider: Boolean = false,
public val workspaceDirectoriesProvider: Boolean = false,
public val workspaceInvalidTargetsProvider: Boolean = false,
Expand All @@ -44,5 +45,6 @@ public class BazelBuildServerCapabilities(
this.jvmRunEnvironmentProvider = jvmRunEnvironmentProvider
this.jvmTestEnvironmentProvider = jvmTestEnvironmentProvider
this.canReload = canReload
this.jvmCompileClasspathProvider = jvmCompileClasspathProvider
}
}
Expand Up @@ -23,6 +23,8 @@ import ch.epfl.scala.bsp4j.JavaBuildServer
import ch.epfl.scala.bsp4j.JavacOptionsParams
import ch.epfl.scala.bsp4j.JavacOptionsResult
import ch.epfl.scala.bsp4j.JvmBuildServer
import ch.epfl.scala.bsp4j.JvmCompileClasspathParams
import ch.epfl.scala.bsp4j.JvmCompileClasspathResult
import ch.epfl.scala.bsp4j.JvmRunEnvironmentParams
import ch.epfl.scala.bsp4j.JvmRunEnvironmentResult
import ch.epfl.scala.bsp4j.JvmTestEnvironmentParams
Expand Down Expand Up @@ -362,6 +364,17 @@ class BspServerApi(private val bazelServicesBuilder: (BuildClient) -> BazelServi
)
}

override fun buildTargetJvmCompileClasspath(params: JvmCompileClasspathParams): CompletableFuture<JvmCompileClasspathResult> {
return runner.handleRequest(
"jvmCompileClasspath",
{ cancelChecker: CancelChecker, params: JvmCompileClasspathParams ->
projectSyncService.jvmCompileClasspath(
cancelChecker, params
)
}, params
)
}

override fun buildTargetJvmTestEnvironment(
params: JvmTestEnvironmentParams
): CompletableFuture<JvmTestEnvironmentResult> {
Expand Down
Expand Up @@ -16,6 +16,9 @@ import ch.epfl.scala.bsp4j.InverseSourcesResult
import ch.epfl.scala.bsp4j.JavacOptionsItem
import ch.epfl.scala.bsp4j.JavacOptionsParams
import ch.epfl.scala.bsp4j.JavacOptionsResult
import ch.epfl.scala.bsp4j.JvmCompileClasspathItem
import ch.epfl.scala.bsp4j.JvmCompileClasspathParams
import ch.epfl.scala.bsp4j.JvmCompileClasspathResult
import ch.epfl.scala.bsp4j.JvmEnvironmentItem
import ch.epfl.scala.bsp4j.JvmMainClass
import ch.epfl.scala.bsp4j.JvmRunEnvironmentParams
Expand Down Expand Up @@ -108,6 +111,7 @@ class BspProjectMapper(
workspaceInvalidTargetsProvider = true,
runWithDebugProvider = true,
jvmBinaryJarsProvider = true,
jvmCompileClasspathProvider = true,
)
return InitializeBuildResult(
Constants.NAME, Constants.VERSION, Constants.BSP_VERSION, capabilities
Expand Down Expand Up @@ -304,6 +308,15 @@ class BspProjectMapper(
return JvmTestEnvironmentResult(result)
}

fun jvmCompileClasspath(
project: Project, params: JvmCompileClasspathParams, cancelChecker: CancelChecker
): JvmCompileClasspathResult {
val items = params.targets.collectClasspathForTargetsAndApply(project, cancelChecker) { module, ideClasspath ->
JvmCompileClasspathItem(BspMappings.toBspId(module), ideClasspath.map { it.toString() })
}
return JvmCompileClasspathResult(items)
}

private fun getJvmEnvironmentItems(
project: Project, targets: List<BuildTargetIdentifier>, cancelChecker: CancelChecker
): List<JvmEnvironmentItem> {
Expand Down
Expand Up @@ -11,6 +11,8 @@ import ch.epfl.scala.bsp4j.InverseSourcesParams
import ch.epfl.scala.bsp4j.InverseSourcesResult
import ch.epfl.scala.bsp4j.JavacOptionsParams
import ch.epfl.scala.bsp4j.JavacOptionsResult
import ch.epfl.scala.bsp4j.JvmCompileClasspathParams
import ch.epfl.scala.bsp4j.JvmCompileClasspathResult
import ch.epfl.scala.bsp4j.JvmRunEnvironmentParams
import ch.epfl.scala.bsp4j.JvmRunEnvironmentResult
import ch.epfl.scala.bsp4j.JvmTestEnvironmentParams
Expand Down Expand Up @@ -120,6 +122,11 @@ class ProjectSyncService(private val bspMapper: BspProjectMapper, private val pr
return bspMapper.jvmBinaryJars(project, params)
}

fun jvmCompileClasspath(cancelChecker: CancelChecker, params: JvmCompileClasspathParams): JvmCompileClasspathResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.jvmCompileClasspath(project, params, cancelChecker)
}

fun buildTargetJavacOptions(cancelChecker: CancelChecker, params: JavacOptionsParams): JavacOptionsResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.buildTargetJavacOptions(project, params, cancelChecker)
Expand Down