Skip to content

Commit

Permalink
[fix] partial sync properly handles targets outside of project view t…
Browse files Browse the repository at this point in the history
…argets & fix partial sync e2e test
  • Loading branch information
abrams27 authored and Space Team committed Jan 15, 2025
1 parent 511f6f9 commit cf2325a
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ object BazelBspPartialSyncTest : BazelBspTestBaseScenario() {
val partialSyncTargetId = BuildTargetIdentifier("$targetPrefix//java_targets:java_binary")
val architecturePart = if (System.getProperty("os.arch") == "aarch64") "_aarch64" else ""
val javaHomeBazel5And6 = "file://\$BAZEL_OUTPUT_BASE_PATH/external/remotejdk11_\$OS$architecturePart/"
val javaHomeBazel7 = "file://\$BAZEL_OUTPUT_BASE_PATH/external/rules_java~~toolchains~remotejdk11_\$OS$architecturePart/"
val javaHomeBazel7 =
"file://\$BAZEL_OUTPUT_BASE_PATH/external/rules_java" +
"${bzlmodRepoNameSeparator}${bzlmodRepoNameSeparator}toolchains${bzlmodRepoNameSeparator}remotejdk11_\$OS$architecturePart/"
val javaHome = if (isBzlmod) javaHomeBazel7 else javaHomeBazel5And6
val jvmBuildTarget =
JvmBuildTarget().also {
Expand Down Expand Up @@ -125,7 +127,9 @@ object BazelBspPartialSyncTest : BazelBspTestBaseScenario() {
override fun expectedWorkspaceBuildTargetsResult(): WorkspaceBuildTargetsResult {
val architecturePart = if (System.getProperty("os.arch") == "aarch64") "_aarch64" else ""
val javaHomeBazel5And6 = "file://\$BAZEL_OUTPUT_BASE_PATH/external/remotejdk11_\$OS$architecturePart/"
val javaHomeBazel7 = "file://\$BAZEL_OUTPUT_BASE_PATH/external/rules_java~~toolchains~remotejdk11_\$OS$architecturePart/"
val javaHomeBazel7 =
"file://\$BAZEL_OUTPUT_BASE_PATH/external/rules_java" +
"${bzlmodRepoNameSeparator}${bzlmodRepoNameSeparator}toolchains${bzlmodRepoNameSeparator}remotejdk11_\$OS$architecturePart/"
val javaHome = if (isBzlmod) javaHomeBazel7 else javaHomeBazel5And6
val jvmBuildTarget =
JvmBuildTarget().also {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ class BazelBspServer(
)
val bazelToolchainManager = BazelToolchainManager(bazelRunner, featureFlags)
val bazelBspLanguageExtensionsGenerator = BazelBspLanguageExtensionsGenerator(aspectsResolver)
val bazelLabelExpander = BazelLabelExpander(bazelRunner, workspaceContextProvider)
val bazelLabelExpander = BazelLabelExpander(bazelRunner)
val targetTagsResolver = TargetTagsResolver()
val mavenCoordinatesResolver = MavenCoordinatesResolver()
val kotlinAndroidModulesMerger = KotlinAndroidModulesMerger(featureFlags)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ package org.jetbrains.bsp.bazel.server.bsp.managers
import org.eclipse.lsp4j.jsonrpc.CancelChecker
import org.jetbrains.bazel.commons.label.Label
import org.jetbrains.bsp.bazel.bazelrunner.BazelRunner
import org.jetbrains.bsp.bazel.workspacecontext.WorkspaceContextProvider
import org.jetbrains.bsp.bazel.workspacecontext.TargetsSpec

class BazelLabelExpander(private val bazelRunner: BazelRunner, private val workspaceContextProvider: WorkspaceContextProvider) {
fun getAllPossibleTargets(cancelChecker: CancelChecker): List<Label> {
val targets = workspaceContextProvider.currentWorkspaceContext().targets
class BazelLabelExpander(private val bazelRunner: BazelRunner) {
fun getAllPossibleTargets(targets: TargetsSpec, cancelChecker: CancelChecker): List<Label> {
val command =
bazelRunner.buildBazelCommand {
query {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,13 @@ data class AspectSyncProject(
fun findModule(label: Label): Module? = moduleMap[label]

operator fun plus(project: AspectSyncProject): AspectSyncProject {
if (workspaceRoot !=
project.workspaceRoot
) {
if (workspaceRoot != project.workspaceRoot) {
error("Cannot add projects with different workspace roots: $workspaceRoot and ${project.workspaceRoot}")
}
if (bazelRelease !=
project.bazelRelease
) {
if (bazelRelease != project.bazelRelease) {
error("Cannot add projects with different bazel versions: $bazelRelease and ${project.bazelRelease}")
}

val newModules = modules.toSet() + project.modules.toSet()
val newLibraries = libraries + project.libraries
val newGoLibraries = goLibraries + project.goLibraries
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,12 @@ class ProjectResolver(
// resolve root targets (expand wildcards)
val rootTargets =
measured("Calculating root targets") {
bazelLabelExpander.getAllPossibleTargets(cancelChecker).map { it.assumeResolved().canonicalize(repoMapping) }.toSet()
bazelLabelExpander
.getAllPossibleTargets(
targetsToSync,
cancelChecker,
).map { it.assumeResolved().canonicalize(repoMapping) }
.toSet()
}
return@useWithScope measured(
"Mapping to internal model",
Expand Down

0 comments on commit cf2325a

Please sign in to comment.