From 31f3efd1130a91b2cd72e718c6f4211cfc21a442 Mon Sep 17 00:00:00 2001 From: Tomasz Pasternak Date: Thu, 22 Dec 2022 15:32:59 +0100 Subject: [PATCH 1/3] Support Bazel 6.0.0 1. Main Repository Target Label Prefixes. In Bazel 5 and older, the target labels were strigified to "//"-prefixed names. Since 6.0.0, they are stringified to "@//"-prefixed names. Unfortunately, this does not apply to data coming from BEP. Targets references in BEP events payload are "//"-prefixed. For this reason we need to add "@" manually after retrieving data from BEP. 2. aspects.bzl: Retrieve runtime toolchain in the new way (Bazel 6.0.0) 3. cpp-project: Old GTest version is incompatible with Bazel 6.0.0, the new one required cpp version bump (--std=c++17) 4. e2e tests are now adapted to run across multiple Bazel versions (currently 5 and 6) 5. JdkResolver: JDK version was inferred from source version, which is not always true. That's why it is safer just to pass null. --- .bazelversion | 2 +- .github/workflows/integration-tests.yml | 80 ++---- CHANGELOG.md | 2 + WORKSPACE | 4 +- .../bsp/bazel/bazelrunner/BazelInfo.kt | 21 +- .../bazel/bazelrunner/BazelInfoResolver.kt | 3 +- .../bazel/bazelrunner/StoredBazelInfoTest.kt | 4 +- e2e/runTest.sh | 4 +- .../bsp/bazel/BazelBspCppProjectTest.kt | 8 +- .../bsp/bazel/BazelBspLocalJdkTest.kt | 4 +- .../bsp/bazel/BazelBspRemoteJdkTest.kt | 4 +- .../bsp/bazel/BazelBspSampleRepoTest.kt | 254 +++++++++--------- .../bazel/base/BazelBspTestBaseScenario.kt | 3 + e2e/test-resources/cpp-project/.bazelrc | 3 +- e2e/test-resources/cpp-project/.bazelversion | 1 - e2e/test-resources/cpp-project/WORKSPACE | 9 +- e2e/test-resources/local-jdk-project/.bazelrc | 0 .../local-jdk-project/.bazelversion | 1 - .../remote-jdk-project/.bazelversion | 1 - e2e/test-resources/sample-repo/.bazelrc | 2 +- e2e/test-resources/sample-repo/.bazelversion | 1 - install/src/main/resources/aspects.bzl | 7 +- .../bsp/bazel/server/bloop/Naming.java | 3 + .../bazel/server/common/ServerContainer.kt | 5 +- .../bazel/server/sync/BazelPathsResolver.kt | 2 +- .../bazel/server/sync/BazelProjectMapper.kt | 7 +- .../bsp/bazel/server/sync/ProjectResolver.kt | 14 +- .../server/sync/languages/java/JdkResolver.kt | 9 +- .../languages/LanguagePluginServiceTest.kt | 3 +- 29 files changed, 229 insertions(+), 232 deletions(-) delete mode 100644 e2e/test-resources/cpp-project/.bazelversion delete mode 100644 e2e/test-resources/local-jdk-project/.bazelrc delete mode 100644 e2e/test-resources/local-jdk-project/.bazelversion delete mode 100644 e2e/test-resources/remote-jdk-project/.bazelversion delete mode 100644 e2e/test-resources/sample-repo/.bazelversion diff --git a/.bazelversion b/.bazelversion index 8a30e8f94..09b254e90 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -5.4.0 +6.0.0 diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 3e4bb86a4..ca884340a 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -25,72 +25,34 @@ jobs: - name: Build installer run: bazel build //server/src/main/java/org/jetbrains/bsp/bazel:bsp-install - sample-repo-test: - runs-on: ubuntu-latest - needs: setup - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 - - name: Cache bazel - uses: actions/cache@v2 - env: - cache-name: cache-bazel - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-${{ env.cache-name }}-${{ github.sha }} - - name: Run test - run: bazel run //e2e:BazelBspSampleRepoTest - local-jdk-test: - runs-on: ubuntu-latest - needs: setup - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v1 - with: - java-version: 17 - - name: Cache bazel - uses: actions/cache@v2 - env: - cache-name: cache-bazel - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-${{ env.cache-name }}-${{ github.sha }} - - name: Run test - run: bazel run //e2e:BazelBspLocalJdkTest - remote-jdk-test: + integration-test: runs-on: ubuntu-latest needs: setup + strategy: + matrix: + bazel_version: ["5.4.0", "6.0.0"] + test_target: ["//e2e:BazelBspSampleRepoTest", "//e2e:BazelBspLocalJdkTest", "//e2e:BazelBspRemoteJdkTest", "//e2e:BazelBspCppProjectTest"] + include: + - test_name: sample-repo-test + test_target: //e2e:BazelBspSampleRepoTest + java_version: 11 + - test_name: local-jdk-test + test_target: //e2e:BazelBspLocalJdkTest + java_version: 17 + - test_name: remote-jdk-test + test_target: //e2e:BazelBspRemoteJdkTest + java_version: 17 + - test_name: cpp-project-test + test_target: //e2e:BazelBspCppProjectTest + java_version: 11 steps: - uses: actions/checkout@v2 - - name: Set up JDK 17 + - name: Set up JDK ${{ matrix.java_version }} uses: actions/setup-java@v1 with: - java-version: 17 - - name: Cache bazel - uses: actions/cache@v2 - env: - cache-name: cache-bazel - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-${{ env.cache-name }}-${{ github.sha }} - - name: Run test - run: bazel run //e2e:BazelBspRemoteJdkTest - - cpp-project-test: - runs-on: ubuntu-latest - needs: setup - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 + java-version: ${{ matrix.java_version }} - name: Cache bazel uses: actions/cache@v2 env: @@ -99,4 +61,4 @@ jobs: path: ~/.cache/bazel key: ${{ runner.os }}-${{ env.cache-name }}-${{ github.sha }} - name: Run test - run: bazel run //e2e:BazelBspCppProjectTest + run: USE_BAZEL_VERSION=${{ matrix.bazel_version }} bazel run ${{ matrix.test_target }} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c5e01ffa..57fd734c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ## [Unreleased] +- Support Bazel 6.0.0 + | [#318](https://github.com/JetBrains/bazel-bsp/pull/318) ## [2.3.1] - 21.12.2022 diff --git a/WORKSPACE b/WORKSPACE index d3ba42293..84f416074 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -22,9 +22,9 @@ http_archive( # ====================================================================================================================== # kotlin -IO_BAZEL_KOTLIN_RULES_TAG = "v1.6.0" +IO_BAZEL_KOTLIN_RULES_TAG = "v1.7.0" -IO_BAZEL_KOTLIN_RULES_SHA = "a57591404423a52bd6b18ebba7979e8cd2243534736c5c94d35c89718ea38f94" +IO_BAZEL_KOTLIN_RULES_SHA = "15afe2d727f0dba572e0ce58f1dac20aec1441422ca65f7c3f7671b47fd483bf" http_archive( name = "io_bazel_rules_kotlin", diff --git a/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/BazelInfo.kt b/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/BazelInfo.kt index b3b39888c..6c3b6a850 100644 --- a/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/BazelInfo.kt +++ b/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/BazelInfo.kt @@ -1,16 +1,31 @@ package org.jetbrains.bsp.bazel.bazelrunner +import java.lang.RuntimeException import java.nio.file.Path interface BazelInfo { val execRoot: String val workspaceRoot: Path + val release: BazelRelease } - +data class BazelRelease( + val versionString: String +) { + val major: Int by lazy { + """(?<=release )\d+(?=[0-9.]*)""".toRegex().find(versionString)?.value?.toInt()!! + } + + fun mainRepositoryReferencePrefix() = when(major) { + in 0..3 -> throw RuntimeException("Unsupported Bazel version, use Bazel 4 or newer") + in 4..5 -> "//" + else -> "@//" + } +} data class BasicBazelInfo( override val execRoot: String, - override val workspaceRoot: Path + override val workspaceRoot: Path, + override val release: BazelRelease ) : BazelInfo @@ -21,5 +36,7 @@ class LazyBazelInfo(bazelInfoSupplier: () -> BazelInfo) : BazelInfo { get() = bazelInfo.execRoot override val workspaceRoot: Path get() = bazelInfo.workspaceRoot + override val release: BazelRelease + get() = bazelInfo.release } diff --git a/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/BazelInfoResolver.kt b/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/BazelInfoResolver.kt index b285c5874..c41a15521 100644 --- a/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/BazelInfoResolver.kt +++ b/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/BazelInfoResolver.kt @@ -29,7 +29,8 @@ class BazelInfoResolver( return BasicBazelInfo( execRoot = extract("execution_root"), - workspaceRoot = Paths.get(extract("workspace")) + workspaceRoot = Paths.get(extract("workspace")), + release = BazelRelease(extract("release")) ) } diff --git a/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/StoredBazelInfoTest.kt b/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/StoredBazelInfoTest.kt index d06e9905f..a132ddcf5 100644 --- a/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/StoredBazelInfoTest.kt +++ b/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/StoredBazelInfoTest.kt @@ -17,7 +17,9 @@ class ProjectStorageTest { val bazelInfo = BasicBazelInfo( "/private/var/tmp/_bazel/125c7a6ca879ed16a4b4b1a74bc5f27b/execroot/bazel_bsp", - Paths.get("/Users/user/workspace/bazel-bsp")) + Paths.get("/Users/user/workspace/bazel-bsp"), + BazelRelease("6.0.0")) + storage.store(bazelInfo) val loaded = storage.load() diff --git a/e2e/runTest.sh b/e2e/runTest.sh index 867ca2179..5f405ff1a 100755 --- a/e2e/runTest.sh +++ b/e2e/runTest.sh @@ -30,7 +30,7 @@ cd "$BUILD_WORKSPACE_DIRECTORY" || exit bazel build //server/src/main/java/org/jetbrains/bsp/bazel:bsp-install EXECUTION_CODE=$? if [ $EXECUTION_CODE -ne 0 ]; then - echo -e "${RED}building failed :(" + echo -e "${RED}building failed :(${NC}" exit 1 fi @@ -60,7 +60,7 @@ foo1=invalid_val1 foo2=invalid_val2 foo3=val3 foo4=val4 BSP_WORKSPACE="$BSP_ROOT EXECUTION_CODE=$? if [ $EXECUTION_CODE -ne 0 ]; then - echo -e "${RED}'$TEST_TARGET' test failed :(" + echo -e "${RED}'$TEST_TARGET' test failed :(${NC}" exit 1 fi diff --git a/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspCppProjectTest.kt b/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspCppProjectTest.kt index d294a5483..8578c7d8e 100644 --- a/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspCppProjectTest.kt +++ b/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspCppProjectTest.kt @@ -30,13 +30,13 @@ object BazelBspCppProjectTest : BazelBspTestBaseScenario() { val exampleExampleBuildTarget = BuildTarget( - BuildTargetIdentifier("//example:example"), + BuildTargetIdentifier("$targetPrefix//example:example"), ImmutableList.of("application"), ImmutableList.of(Constants.CPP), ImmutableList.of(BuildTargetIdentifier("@com_google_googletest//:gtest_main")), BuildTargetCapabilities(true, false, true) ) - exampleExampleBuildTarget.displayName = "//example:example" + exampleExampleBuildTarget.displayName = "$targetPrefix//example:example" exampleExampleBuildTarget.baseDirectory = "file://\$WORKSPACE/example/" exampleExampleBuildTarget.data = exampleExampleCppBuildTarget exampleExampleBuildTarget.dataKind = BuildTargetDataKind.CPP @@ -61,11 +61,11 @@ object BazelBspCppProjectTest : BazelBspTestBaseScenario() { private fun cppOptions(): BazelBspTestScenarioStep { val cppOptionsParams = - CppOptionsParams(ImmutableList.of(BuildTargetIdentifier("//example:example"))) + CppOptionsParams(ImmutableList.of(BuildTargetIdentifier("$targetPrefix//example:example"))) val exampleExampleCppOptionsItem = CppOptionsItem( - BuildTargetIdentifier("//example:example"), + BuildTargetIdentifier("$targetPrefix//example:example"), ImmutableList.of("-Iexternal/gtest/include"), ImmutableList.of("BOOST_FALLTHROUGH"), ImmutableList.of("-pthread") diff --git a/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspLocalJdkTest.kt b/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspLocalJdkTest.kt index 3675c9c36..80393ab6e 100644 --- a/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspLocalJdkTest.kt +++ b/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspLocalJdkTest.kt @@ -27,13 +27,13 @@ object BazelBspLocalJdkTest : BazelBspTestBaseScenario() { ) val exampleExampleBuildTarget = BuildTarget( - BuildTargetIdentifier("//example:example"), + BuildTargetIdentifier("$targetPrefix//example:example"), listOf("application"), listOf("java"), emptyList(), BuildTargetCapabilities(true, false, true, false) ) - exampleExampleBuildTarget.displayName = "//example:example" + exampleExampleBuildTarget.displayName = "$targetPrefix//example:example" exampleExampleBuildTarget.baseDirectory = "file://\$WORKSPACE/example/" exampleExampleBuildTarget.data = exampleExampleJvmBuildTarget exampleExampleBuildTarget.dataKind = BuildTargetDataKind.JVM diff --git a/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspRemoteJdkTest.kt b/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspRemoteJdkTest.kt index e2edfc064..07a194d25 100644 --- a/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspRemoteJdkTest.kt +++ b/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspRemoteJdkTest.kt @@ -27,13 +27,13 @@ object BazelBspRemoteJdkTest : BazelBspTestBaseScenario() { ) val exampleExampleBuildTarget = BuildTarget( - BuildTargetIdentifier("//example:example"), + BuildTargetIdentifier("$targetPrefix//example:example"), listOf("application"), listOf("java"), emptyList(), BuildTargetCapabilities(true, false, true, false) ) - exampleExampleBuildTarget.displayName = "//example:example" + exampleExampleBuildTarget.displayName = "$targetPrefix//example:example" exampleExampleBuildTarget.baseDirectory = "file://\$WORKSPACE/example/" exampleExampleBuildTarget.data = exampleExampleJvmBuildTarget exampleExampleBuildTarget.dataKind = BuildTargetDataKind.JVM diff --git a/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspSampleRepoTest.kt b/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspSampleRepoTest.kt index f4ac1f879..ab6d7573c 100644 --- a/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspSampleRepoTest.kt +++ b/e2e/src/main/java/org/jetbrains/bsp/bazel/BazelBspSampleRepoTest.kt @@ -81,7 +81,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/target_without_jvm_flags/Example.scala", SourceItemKind.FILE, false ) val targetWithoutJvmFlagsSources = SourcesItem( - BuildTargetIdentifier("//target_without_jvm_flags:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_jvm_flags:binary"), listOf(targetWithoutJvmFlagsExampleScala) ) targetWithoutJvmFlagsSources.roots = listOf("file://\$WORKSPACE/") @@ -90,7 +90,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/target_without_args/Example.scala", SourceItemKind.FILE, false ) val targetWithoutArgsSources = SourcesItem( - BuildTargetIdentifier("//target_without_args:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_args:binary"), listOf(targetWithoutArgsExampleScala) ) targetWithoutArgsSources.roots = listOf("file://\$WORKSPACE/") @@ -101,7 +101,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { false ) val targetWithoutMainClassSources = SourcesItem( - BuildTargetIdentifier("//target_without_main_class:library"), + BuildTargetIdentifier("$targetPrefix//target_without_main_class:library"), listOf(targetWithoutMainClassExampleScala) ) targetWithoutMainClassSources.roots = listOf("file://\$WORKSPACE/") @@ -110,7 +110,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/target_with_resources/JavaBinary.java", SourceItemKind.FILE, false ) val targetWithResourcesSources = SourcesItem( - BuildTargetIdentifier("//target_with_resources:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_resources:java_binary"), listOf(targetWithResourcesJavaBinaryJava) ) targetWithResourcesSources.roots = listOf("file://\$WORKSPACE/") @@ -119,7 +119,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/target_with_dependency/JavaBinary.java", SourceItemKind.FILE, false ) val targetWithDependencySources = SourcesItem( - BuildTargetIdentifier("//target_with_dependency:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_dependency:java_binary"), listOf(targetWithDependencyJavaBinaryJava) ) targetWithDependencySources.roots = listOf("file://\$WORKSPACE/") @@ -128,7 +128,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/scala_targets/ScalaBinary.scala", SourceItemKind.FILE, false ) val scalaTargetsScalaBinarySources = SourcesItem( - BuildTargetIdentifier("//scala_targets:scala_binary"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_binary"), listOf(scalaTargetsScalaBinaryScala) ) scalaTargetsScalaBinarySources.roots = listOf("file://\$WORKSPACE/") @@ -137,7 +137,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/scala_targets/ScalaTest.scala", SourceItemKind.FILE, false ) val scalaTargetsScalaTestSources = SourcesItem( - BuildTargetIdentifier("//scala_targets:scala_test"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_test"), listOf(scalaTargetsScalaTestScala) ) scalaTargetsScalaTestSources.roots = listOf("file://\$WORKSPACE/") @@ -146,7 +146,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/java_targets/JavaBinary.java", SourceItemKind.FILE, false ) val javaTargetsJavaBinarySources = SourcesItem( - BuildTargetIdentifier("//java_targets:java_binary"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"), listOf(javaTargetsJavaBinaryJava) ) javaTargetsJavaBinarySources.roots = listOf("file://\$WORKSPACE/") @@ -155,7 +155,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/java_targets/JavaLibrary.java", SourceItemKind.FILE, false ) val javaTargetsJavaLibrarySources = SourcesItem( - BuildTargetIdentifier("//java_targets:java_library"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_library"), listOf(javaTargetsJavaLibraryJava) ) javaTargetsJavaLibrarySources.roots = listOf("file://\$WORKSPACE/") @@ -166,13 +166,13 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { false ) val javaTargetsSubpackageJavaLibrarySources = SourcesItem( - BuildTargetIdentifier("//java_targets/subpackage:java_library"), + BuildTargetIdentifier("$targetPrefix//java_targets/subpackage:java_library"), listOf(javaTargetsSubpackageJavaLibraryJava) ) javaTargetsSubpackageJavaLibrarySources.roots = listOf("file://\$WORKSPACE/") val javaTargetsJavaLibraryExportedSources = SourcesItem( - BuildTargetIdentifier("//java_targets:java_library_exported"), emptyList() + BuildTargetIdentifier("$targetPrefix//java_targets:java_library_exported"), emptyList() ) javaTargetsJavaLibraryExportedSources.roots = emptyList() @@ -180,7 +180,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/manual_target/TestJavaFile.java", SourceItemKind.FILE, false ) val manualTargetTestJavaFileSources = SourcesItem( - BuildTargetIdentifier("//manual_target:java_library"), + BuildTargetIdentifier("$targetPrefix//manual_target:java_library"), listOf(manualTargetTestJavaFile) ) manualTargetTestJavaFileSources.roots = listOf("file://\$WORKSPACE/") @@ -189,7 +189,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/manual_target/TestScalaFile.scala", SourceItemKind.FILE, false ) val manualTargetTestScalaFileSources = SourcesItem( - BuildTargetIdentifier("//manual_target:scala_library"), + BuildTargetIdentifier("$targetPrefix//manual_target:scala_library"), listOf(manualTargetTestScalaFile) ) manualTargetTestScalaFileSources.roots = listOf("file://\$WORKSPACE/") @@ -197,7 +197,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { val manualTargetTestJavaTest = SourceItem("file://\$WORKSPACE/manual_target/JavaTest.java", SourceItemKind.FILE, false) val manualTargetTestJavaTestSources = SourcesItem( - BuildTargetIdentifier("//manual_target:java_test"), + BuildTargetIdentifier("$targetPrefix//manual_target:java_test"), listOf(manualTargetTestJavaTest) ) manualTargetTestJavaTestSources.roots = listOf("file://\$WORKSPACE/") @@ -206,7 +206,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/manual_target/ScalaTest.scala", SourceItemKind.FILE, false ) val manualTargetTestScalaTestSources = SourcesItem( - BuildTargetIdentifier("//manual_target:scala_test"), + BuildTargetIdentifier("$targetPrefix//manual_target:scala_test"), listOf(manualTargetTestScalaTest) ) manualTargetTestScalaTestSources.roots = listOf("file://\$WORKSPACE/") @@ -215,7 +215,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/manual_target/TestJavaBinary.java", SourceItemKind.FILE, false ) val manualTargetTestJavaBinarySources = SourcesItem( - BuildTargetIdentifier("//manual_target:java_binary"), + BuildTargetIdentifier("$targetPrefix//manual_target:java_binary"), listOf(manualTargetTestJavaBinary) ) manualTargetTestJavaBinarySources.roots = listOf("file://\$WORKSPACE/") @@ -224,7 +224,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { "file://\$WORKSPACE/manual_target/TestScalaBinary.scala", SourceItemKind.FILE, false ) val manualTargetTestScalaBinarySources = SourcesItem( - BuildTargetIdentifier("//manual_target:scala_binary"), + BuildTargetIdentifier("$targetPrefix//manual_target:scala_binary"), listOf(manualTargetTestScalaBinary) ) manualTargetTestScalaBinarySources.roots = listOf("file://\$WORKSPACE/") @@ -232,7 +232,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { val environmentVariablesJavaBinary = SourceItem("file://\$WORKSPACE/environment_variables/JavaEnv.java", SourceItemKind.FILE, false) val environmentVariablesJavaBinarySources = SourcesItem( - BuildTargetIdentifier("//environment_variables:java_binary"), + BuildTargetIdentifier("$targetPrefix//environment_variables:java_binary"), listOf(environmentVariablesJavaBinary) ) environmentVariablesJavaBinarySources.roots = listOf("file://\$WORKSPACE/") @@ -240,7 +240,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { val environmentVariablesJavaTest = SourceItem("file://\$WORKSPACE/environment_variables/JavaTest.java", SourceItemKind.FILE, false) val environmentVariablesJavaTestSources = SourcesItem( - BuildTargetIdentifier("//environment_variables:java_test"), + BuildTargetIdentifier("$targetPrefix//environment_variables:java_test"), listOf(environmentVariablesJavaTest) ) environmentVariablesJavaTestSources.roots = listOf("file://\$WORKSPACE/") @@ -276,53 +276,53 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { private fun resourcesResults(): BazelBspTestScenarioStep { val targetWithResources = ResourcesItem( - BuildTargetIdentifier("//target_with_resources:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_resources:java_binary"), listOf( "file://\$WORKSPACE/target_with_resources/file1.txt", "file://\$WORKSPACE/target_with_resources/file2.txt" ) ) val javaTargetsSubpackageJavaLibrary = ResourcesItem( - BuildTargetIdentifier("//java_targets/subpackage:java_library"), emptyList() + BuildTargetIdentifier("$targetPrefix//java_targets/subpackage:java_library"), emptyList() ) val javaTargetsJavaBinary = - ResourcesItem(BuildTargetIdentifier("//java_targets:java_binary"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"), emptyList()) val javaTargetsJavaLibrary = - ResourcesItem(BuildTargetIdentifier("//java_targets:java_library"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//java_targets:java_library"), emptyList()) val javaTargetsJavaLibraryExported = ResourcesItem( - BuildTargetIdentifier("//java_targets:java_library_exported"), emptyList() + BuildTargetIdentifier("$targetPrefix//java_targets:java_library_exported"), emptyList() ) val scalaTargetsScalaBinary = - ResourcesItem(BuildTargetIdentifier("//scala_targets:scala_binary"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//scala_targets:scala_binary"), emptyList()) val scalaTargetsScalaTest = - ResourcesItem(BuildTargetIdentifier("//scala_targets:scala_test"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//scala_targets:scala_test"), emptyList()) val targetWithDependencyJavaBinary = ResourcesItem( - BuildTargetIdentifier("//target_with_dependency:java_binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//target_with_dependency:java_binary"), emptyList() ) val targetWithoutArgsBinary = - ResourcesItem(BuildTargetIdentifier("//target_without_args:binary"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//target_without_args:binary"), emptyList()) val targetWithoutJvmFlagsBinary = ResourcesItem( - BuildTargetIdentifier("//target_without_jvm_flags:binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//target_without_jvm_flags:binary"), emptyList() ) val targetWithoutMainClassLibrary = ResourcesItem( - BuildTargetIdentifier("//target_without_main_class:library"), emptyList() + BuildTargetIdentifier("$targetPrefix//target_without_main_class:library"), emptyList() ) val manualTargetJavaLibrary = - ResourcesItem(BuildTargetIdentifier("//manual_target:java_library"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//manual_target:java_library"), emptyList()) val manualTargetScalaLibrary = - ResourcesItem(BuildTargetIdentifier("//manual_target:scala_library"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//manual_target:scala_library"), emptyList()) val manualTargetJavaBinary = - ResourcesItem(BuildTargetIdentifier("//manual_target:java_binary"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//manual_target:java_binary"), emptyList()) val manualTargetScalaBinary = - ResourcesItem(BuildTargetIdentifier("//manual_target:scala_binary"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//manual_target:scala_binary"), emptyList()) val manualTargetJavaTest = - ResourcesItem(BuildTargetIdentifier("//manual_target:java_test"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//manual_target:java_test"), emptyList()) val manualTargetScalaTest = - ResourcesItem(BuildTargetIdentifier("//manual_target:scala_test"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//manual_target:scala_test"), emptyList()) val environmentVariablesJavaBinary = - ResourcesItem(BuildTargetIdentifier("//environment_variables:java_binary"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//environment_variables:java_binary"), emptyList()) val environmentVariablesJavaTest = - ResourcesItem(BuildTargetIdentifier("//environment_variables:java_test"), emptyList()) + ResourcesItem(BuildTargetIdentifier("$targetPrefix//environment_variables:java_test"), emptyList()) val expectedResourcesResult = ResourcesResult( listOf( @@ -358,7 +358,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { private fun inverseSourcesResults(): BazelBspTestScenarioStep { val inverseSourcesDocument = TextDocumentIdentifier("file://\$WORKSPACE/java_targets/JavaBinary.java") val expectedInverseSourcesResult = - InverseSourcesResult(listOf(BuildTargetIdentifier("//java_targets:java_binary"))) + InverseSourcesResult(listOf(BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"))) val inverseSourcesParams = InverseSourcesParams(inverseSourcesDocument) return BazelBspTestScenarioStep( "inverse sources results" @@ -374,7 +374,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { private fun scalaMainClasses(): BazelBspTestScenarioStep { val scalaMainClassesParams = ScalaMainClassesParams(expectedTargetIdentifiers()) val scalaTargetsScalaBinary = ScalaMainClassesItem( - BuildTargetIdentifier("//scala_targets:scala_binary"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_binary"), listOf( ScalaMainClass( "example.Example", listOf("arg1", "arg2"), listOf("-Xms2G -Xmx5G") @@ -382,11 +382,11 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { ) ) val targetWithoutJvmFlagsBinary = ScalaMainClassesItem( - BuildTargetIdentifier("//target_without_jvm_flags:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_jvm_flags:binary"), listOf(ScalaMainClass("example.Example", listOf("arg1", "arg2"), emptyList())) ) val targetWithoutArgsBinary = ScalaMainClassesItem( - BuildTargetIdentifier("//target_without_args:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_args:binary"), listOf( ScalaMainClass( "example.Example", @@ -418,7 +418,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { private fun scalaTestClasses(): BazelBspTestScenarioStep { val scalaTestClassesParams = ScalaTestClassesParams(expectedTargetIdentifiers()) val scalaTargetsScalaTest = ScalaTestClassesItem( - BuildTargetIdentifier("//scala_targets:scala_test"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_test"), listOf("io.bazel.rulesscala.scala_test.Runner") ) val expectedScalaTestClassesResult = ScalaTestClassesResult(listOf(scalaTargetsScalaTest)) @@ -433,64 +433,64 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { private fun dependencySourcesResults(): BazelBspTestScenarioStep { val javaTargetsJavaBinary = DependencySourcesItem( - BuildTargetIdentifier("//java_targets:java_binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"), emptyList() ) val javaTargetsJavaLibrary = DependencySourcesItem( - BuildTargetIdentifier("//java_targets:java_library"), emptyList() + BuildTargetIdentifier("$targetPrefix//java_targets:java_library"), emptyList() ) val targetWithDependencyJavaBinary = DependencySourcesItem( - BuildTargetIdentifier("//target_with_dependency:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_dependency:java_binary"), listOf( "file://\$BAZEL_CACHE/external/guava/guava-28.0-jre-src.jar" ) ) val javaTargetsSubpackageJavaLibrary = DependencySourcesItem( - BuildTargetIdentifier("//java_targets/subpackage:java_library"), emptyList() + BuildTargetIdentifier("$targetPrefix//java_targets/subpackage:java_library"), emptyList() ) val scalaTargetsScalaBinary = DependencySourcesItem( - BuildTargetIdentifier("//scala_targets:scala_binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_binary"), emptyList() ) val scalaTargetsScalaTest = DependencySourcesItem( - BuildTargetIdentifier("//scala_targets:scala_test"), emptyList() + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_test"), emptyList() ) val targetWithResourcesJavaBinary = DependencySourcesItem( - BuildTargetIdentifier("//target_with_resources:java_binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//target_with_resources:java_binary"), emptyList() ) val targetWithoutArgsBinary = DependencySourcesItem( - BuildTargetIdentifier("//target_without_args:binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//target_without_args:binary"), emptyList() ) val targetWithoutJvmFlagsBinary = DependencySourcesItem( - BuildTargetIdentifier("//target_without_jvm_flags:binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//target_without_jvm_flags:binary"), emptyList() ) val targetWithoutMainClassLibrary = DependencySourcesItem( - BuildTargetIdentifier("//target_without_main_class:library"), emptyList() + BuildTargetIdentifier("$targetPrefix//target_without_main_class:library"), emptyList() ) val javaTargetsJavaLibraryExported = DependencySourcesItem( - BuildTargetIdentifier("//java_targets:java_library_exported"), emptyList() + BuildTargetIdentifier("$targetPrefix//java_targets:java_library_exported"), emptyList() ) val manualTargetJavaLibrary = DependencySourcesItem( - BuildTargetIdentifier("//manual_target:java_library"), emptyList() + BuildTargetIdentifier("$targetPrefix//manual_target:java_library"), emptyList() ) val manualTargetScalaLibrary = DependencySourcesItem( - BuildTargetIdentifier("//manual_target:scala_library"), emptyList() + BuildTargetIdentifier("$targetPrefix//manual_target:scala_library"), emptyList() ) val manualTargetJavaBinary = DependencySourcesItem( - BuildTargetIdentifier("//manual_target:java_binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//manual_target:java_binary"), emptyList() ) val manualTargetScalaBinary = DependencySourcesItem( - BuildTargetIdentifier("//manual_target:scala_binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//manual_target:scala_binary"), emptyList() ) val manualTargetJavaTest = DependencySourcesItem( - BuildTargetIdentifier("//manual_target:java_test"), emptyList() + BuildTargetIdentifier("$targetPrefix//manual_target:java_test"), emptyList() ) val manualTargetScalaTest = DependencySourcesItem( - BuildTargetIdentifier("//manual_target:scala_test"), emptyList() + BuildTargetIdentifier("$targetPrefix//manual_target:scala_test"), emptyList() ) val environmentVariablesJavaBinary = DependencySourcesItem( - BuildTargetIdentifier("//environment_variables:java_binary"), emptyList() + BuildTargetIdentifier("$targetPrefix//environment_variables:java_binary"), emptyList() ) val environmentVariablesJavaTest = DependencySourcesItem( - BuildTargetIdentifier("//environment_variables:java_test"), emptyList() + BuildTargetIdentifier("$targetPrefix//environment_variables:java_test"), emptyList() ) val expectedDependencies = DependencySourcesResult( listOf( @@ -533,7 +533,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { val expectedResult = JvmRunEnvironmentResult( listOf( JvmEnvironmentItem( - BuildTargetIdentifier("//java_targets:java_binary"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/java_targets/java_binary.jar" ), @@ -542,7 +542,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//java_targets:java_library"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_library"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/java_targets/libjava_library.jar" ), @@ -551,7 +551,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_with_dependency:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_dependency:java_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_with_dependency/java_binary.jar", "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/java_targets/subpackage/libjava_library.jar", @@ -562,7 +562,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//java_targets/subpackage:java_library"), + BuildTargetIdentifier("$targetPrefix//java_targets/subpackage:java_library"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/java_targets/subpackage/libjava_library.jar" ), @@ -571,7 +571,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//scala_targets:scala_binary"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/scala_targets/scala_binary.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -582,7 +582,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//scala_targets:scala_test"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_test"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/scala_targets/scala_test.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -605,7 +605,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_with_resources:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_resources:java_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_with_resources/java_binary.jar" ), @@ -614,7 +614,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_without_args:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_args:binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_without_args/binary.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -625,7 +625,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_without_jvm_flags:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_jvm_flags:binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_without_jvm_flags/binary.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -636,7 +636,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_without_main_class:library"), + BuildTargetIdentifier("$targetPrefix//target_without_main_class:library"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_without_main_class/library.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -647,7 +647,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//environment_variables:java_binary"), + BuildTargetIdentifier("$targetPrefix//environment_variables:java_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/environment_variables/java_binary.jar" ), @@ -656,7 +656,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf("foo1" to "val1", "foo2" to "val2") ), JvmEnvironmentItem( - BuildTargetIdentifier("//environment_variables:java_test"), + BuildTargetIdentifier("$targetPrefix//environment_variables:java_test"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/environment_variables/java_test.jar", "file://\$BAZEL_CACHE/external/remote_java_tools/java_tools/Runner_deploy.jar" @@ -678,7 +678,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { val expectedResult = JvmTestEnvironmentResult( listOf( JvmEnvironmentItem( - BuildTargetIdentifier("//java_targets:java_binary"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/java_targets/java_binary.jar" ), @@ -687,7 +687,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//java_targets:java_library"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_library"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/java_targets/libjava_library.jar" ), @@ -696,7 +696,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_with_dependency:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_dependency:java_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_with_dependency/java_binary.jar", "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/java_targets/subpackage/libjava_library.jar", @@ -707,7 +707,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//java_targets/subpackage:java_library"), + BuildTargetIdentifier("$targetPrefix//java_targets/subpackage:java_library"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/java_targets/subpackage/libjava_library.jar" ), @@ -716,7 +716,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//scala_targets:scala_binary"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/scala_targets/scala_binary.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -727,7 +727,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//scala_targets:scala_test"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_test"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/scala_targets/scala_test.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -750,7 +750,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_with_resources:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_resources:java_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_with_resources/java_binary.jar" ), @@ -759,7 +759,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_without_args:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_args:binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_without_args/binary.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -770,7 +770,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_without_jvm_flags:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_jvm_flags:binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_without_jvm_flags/binary.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -781,7 +781,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//target_without_main_class:library"), + BuildTargetIdentifier("$targetPrefix//target_without_main_class:library"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/target_without_main_class/library.jar", "file://\$BAZEL_CACHE/external/io_bazel_rules_scala_scala_library/scala-library-2.12.14.jar", @@ -792,7 +792,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf() ), JvmEnvironmentItem( - BuildTargetIdentifier("//environment_variables:java_binary"), + BuildTargetIdentifier("$targetPrefix//environment_variables:java_binary"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/environment_variables/java_binary.jar" ), @@ -801,7 +801,7 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { mapOf("foo1" to "val1", "foo2" to "val2") ), JvmEnvironmentItem( - BuildTargetIdentifier("//environment_variables:java_test"), + BuildTargetIdentifier("$targetPrefix//environment_variables:java_test"), listOf( "file://\$BAZEL_CACHE/bazel-out/k8-fastbuild/bin/environment_variables/java_test.jar", "file://\$BAZEL_CACHE/external/remote_java_tools/java_tools/Runner_deploy.jar" @@ -829,13 +829,13 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { ) val javaTargetsJavaBinary = BuildTarget( - BuildTargetIdentifier("//java_targets:java_binary"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_binary"), listOf("application"), listOf("java"), emptyList(), BuildTargetCapabilities(true, false, true, false) ) - javaTargetsJavaBinary.displayName = "//java_targets:java_binary" + javaTargetsJavaBinary.displayName = "$targetPrefix//java_targets:java_binary" javaTargetsJavaBinary.baseDirectory = "file://\$WORKSPACE/java_targets/" javaTargetsJavaBinary.dataKind = "jvm" javaTargetsJavaBinary.data = jvmBuildTarget @@ -854,125 +854,125 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { scalaBuildTarget.jvmBuildTarget = jvmBuildTarget val scalaTargetsScalaBinary = BuildTarget( - BuildTargetIdentifier("//scala_targets:scala_binary"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_binary"), listOf("application"), listOf("scala"), emptyList(), BuildTargetCapabilities(true, false, true, false) ) - scalaTargetsScalaBinary.displayName = "//scala_targets:scala_binary" + scalaTargetsScalaBinary.displayName = "$targetPrefix//scala_targets:scala_binary" scalaTargetsScalaBinary.baseDirectory = "file://\$WORKSPACE/scala_targets/" scalaTargetsScalaBinary.dataKind = "scala" scalaTargetsScalaBinary.data = scalaBuildTarget val javaTargetsSubpackageSubpackage = BuildTarget( - BuildTargetIdentifier("//java_targets/subpackage:java_library"), + BuildTargetIdentifier("$targetPrefix//java_targets/subpackage:java_library"), listOf("library"), listOf("java"), emptyList(), BuildTargetCapabilities(true, false, false, false) ) - javaTargetsSubpackageSubpackage.displayName = "//java_targets/subpackage:java_library" + javaTargetsSubpackageSubpackage.displayName = "$targetPrefix//java_targets/subpackage:java_library" javaTargetsSubpackageSubpackage.baseDirectory = "file://\$WORKSPACE/java_targets/subpackage/" javaTargetsSubpackageSubpackage.dataKind = "jvm" javaTargetsSubpackageSubpackage.data = jvmBuildTarget val javaTargetsJavaLibrary = BuildTarget( - BuildTargetIdentifier("//java_targets:java_library"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_library"), listOf("library"), listOf("java"), emptyList(), BuildTargetCapabilities(true, false, false, false) ) - javaTargetsJavaLibrary.displayName = "//java_targets:java_library" + javaTargetsJavaLibrary.displayName = "$targetPrefix//java_targets:java_library" javaTargetsJavaLibrary.baseDirectory = "file://\$WORKSPACE/java_targets/" javaTargetsJavaLibrary.dataKind = "jvm" javaTargetsJavaLibrary.data = jvmBuildTarget val targetWithoutJvmFlagsBinary = BuildTarget( - BuildTargetIdentifier("//target_without_jvm_flags:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_jvm_flags:binary"), listOf("application"), listOf("scala"), emptyList(), BuildTargetCapabilities(true, false, true, false) ) - targetWithoutJvmFlagsBinary.displayName = "//target_without_jvm_flags:binary" + targetWithoutJvmFlagsBinary.displayName = "$targetPrefix//target_without_jvm_flags:binary" targetWithoutJvmFlagsBinary.baseDirectory = "file://\$WORKSPACE/target_without_jvm_flags/" targetWithoutJvmFlagsBinary.dataKind = "scala" targetWithoutJvmFlagsBinary.data = scalaBuildTarget val targetWithoutMainClassLibrary = BuildTarget( - BuildTargetIdentifier("//target_without_main_class:library"), + BuildTargetIdentifier("$targetPrefix//target_without_main_class:library"), listOf("library"), listOf("scala"), emptyList(), BuildTargetCapabilities(true, false, false, false) ) - targetWithoutMainClassLibrary.displayName = "//target_without_main_class:library" + targetWithoutMainClassLibrary.displayName = "$targetPrefix//target_without_main_class:library" targetWithoutMainClassLibrary.baseDirectory = "file://\$WORKSPACE/target_without_main_class/" targetWithoutMainClassLibrary.dataKind = "scala" targetWithoutMainClassLibrary.data = scalaBuildTarget val targetWithoutArgsBinary = BuildTarget( - BuildTargetIdentifier("//target_without_args:binary"), + BuildTargetIdentifier("$targetPrefix//target_without_args:binary"), listOf("application"), listOf("scala"), emptyList(), BuildTargetCapabilities(true, false, true, false) ) - targetWithoutArgsBinary.displayName = "//target_without_args:binary" + targetWithoutArgsBinary.displayName = "$targetPrefix//target_without_args:binary" targetWithoutArgsBinary.baseDirectory = "file://\$WORKSPACE/target_without_args/" targetWithoutArgsBinary.dataKind = "scala" targetWithoutArgsBinary.data = scalaBuildTarget val targetWithDependencyJavaBinary = BuildTarget( - BuildTargetIdentifier("//target_with_dependency:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_dependency:java_binary"), listOf("application"), listOf("java"), listOf( - BuildTargetIdentifier("//java_targets:java_library_exported"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_library_exported"), BuildTargetIdentifier("@guava//:guava"), - BuildTargetIdentifier("//java_targets/subpackage:java_library") + BuildTargetIdentifier("$targetPrefix//java_targets/subpackage:java_library") ), BuildTargetCapabilities(true, false, true, false) ) - targetWithDependencyJavaBinary.displayName = "//target_with_dependency:java_binary" + targetWithDependencyJavaBinary.displayName = "$targetPrefix//target_with_dependency:java_binary" targetWithDependencyJavaBinary.baseDirectory = "file://\$WORKSPACE/target_with_dependency/" targetWithDependencyJavaBinary.dataKind = "jvm" targetWithDependencyJavaBinary.data = jvmBuildTarget val scalaTargetsScalaTest = BuildTarget( - BuildTargetIdentifier("//scala_targets:scala_test"), + BuildTargetIdentifier("$targetPrefix//scala_targets:scala_test"), listOf("test"), listOf("scala"), emptyList(), BuildTargetCapabilities(true, true, false, false) ) - scalaTargetsScalaTest.displayName = "//scala_targets:scala_test" + scalaTargetsScalaTest.displayName = "$targetPrefix//scala_targets:scala_test" scalaTargetsScalaTest.baseDirectory = "file://\$WORKSPACE/scala_targets/" scalaTargetsScalaTest.dataKind = "scala" scalaTargetsScalaTest.data = scalaBuildTarget val targetWithResourcesJavaBinary = BuildTarget( - BuildTargetIdentifier("//target_with_resources:java_binary"), + BuildTargetIdentifier("$targetPrefix//target_with_resources:java_binary"), listOf("application"), listOf("java"), emptyList(), BuildTargetCapabilities(true, false, true, false) ) - targetWithResourcesJavaBinary.displayName = "//target_with_resources:java_binary" + targetWithResourcesJavaBinary.displayName = "$targetPrefix//target_with_resources:java_binary" targetWithResourcesJavaBinary.baseDirectory = "file://\$WORKSPACE/target_with_resources/" targetWithResourcesJavaBinary.dataKind = "jvm" targetWithResourcesJavaBinary.data = jvmBuildTarget val javaTargetsJavaLibraryExported = BuildTarget( - BuildTargetIdentifier("//java_targets:java_library_exported"), + BuildTargetIdentifier("$targetPrefix//java_targets:java_library_exported"), listOf("library"), emptyList(), - listOf(BuildTargetIdentifier("//java_targets/subpackage:java_library")), + listOf(BuildTargetIdentifier("$targetPrefix//java_targets/subpackage:java_library")), BuildTargetCapabilities(true, false, false, false) ) - javaTargetsJavaLibraryExported.displayName = "//java_targets:java_library_exported" + javaTargetsJavaLibraryExported.displayName = "$targetPrefix//java_targets:java_library_exported" javaTargetsJavaLibraryExported.baseDirectory = "file://\$WORKSPACE/java_targets/" val manualScalaBuildTarget = ScalaBuildTarget( @@ -988,91 +988,91 @@ object BazelBspSampleRepoTest : BazelBspTestBaseScenario() { ) val manualTargetScalaLibrary = BuildTarget( - BuildTargetIdentifier("//manual_target:scala_library"), + BuildTargetIdentifier("$targetPrefix//manual_target:scala_library"), listOf("library"), listOf("scala"), emptyList(), BuildTargetCapabilities(false, false, false, false) ) - manualTargetScalaLibrary.displayName = "//manual_target:scala_library" + manualTargetScalaLibrary.displayName = "$targetPrefix//manual_target:scala_library" manualTargetScalaLibrary.baseDirectory = "file://\$WORKSPACE/manual_target/" manualTargetScalaLibrary.dataKind = "scala" manualTargetScalaLibrary.data = manualScalaBuildTarget val manualTargetJavaLibrary = BuildTarget( - BuildTargetIdentifier("//manual_target:java_library"), + BuildTargetIdentifier("$targetPrefix//manual_target:java_library"), listOf("library"), listOf("java"), emptyList(), BuildTargetCapabilities(false, false, false, false) ) - manualTargetJavaLibrary.displayName = "//manual_target:java_library" + manualTargetJavaLibrary.displayName = "$targetPrefix//manual_target:java_library" manualTargetJavaLibrary.baseDirectory = "file://\$WORKSPACE/manual_target/" val manualTargetScalaBinary = BuildTarget( - BuildTargetIdentifier("//manual_target:scala_binary"), + BuildTargetIdentifier("$targetPrefix//manual_target:scala_binary"), listOf("application"), listOf("scala"), emptyList(), BuildTargetCapabilities(false, false, false, false) ) - manualTargetScalaBinary.displayName = "//manual_target:scala_binary" + manualTargetScalaBinary.displayName = "$targetPrefix//manual_target:scala_binary" manualTargetScalaBinary.baseDirectory = "file://\$WORKSPACE/manual_target/" manualTargetScalaBinary.dataKind = "scala" manualTargetScalaBinary.data = manualScalaBuildTarget val manualTargetJavaBinary = BuildTarget( - BuildTargetIdentifier("//manual_target:java_binary"), + BuildTargetIdentifier("$targetPrefix//manual_target:java_binary"), listOf("application"), listOf("java"), emptyList(), BuildTargetCapabilities(false, false, false, false) ) - manualTargetJavaBinary.displayName = "//manual_target:java_binary" + manualTargetJavaBinary.displayName = "$targetPrefix//manual_target:java_binary" manualTargetJavaBinary.baseDirectory = "file://\$WORKSPACE/manual_target/" val manualTargetScalaTest = BuildTarget( - BuildTargetIdentifier("//manual_target:scala_test"), + BuildTargetIdentifier("$targetPrefix//manual_target:scala_test"), listOf("test"), listOf("scala"), emptyList(), BuildTargetCapabilities(false, false, false, false) ) - manualTargetScalaTest.displayName = "//manual_target:scala_test" + manualTargetScalaTest.displayName = "$targetPrefix//manual_target:scala_test" manualTargetScalaTest.baseDirectory = "file://\$WORKSPACE/manual_target/" manualTargetScalaTest.dataKind = "scala" manualTargetScalaTest.data = manualScalaBuildTarget val manualTargetJavaTest = BuildTarget( - BuildTargetIdentifier("//manual_target:java_test"), + BuildTargetIdentifier("$targetPrefix//manual_target:java_test"), listOf("test"), listOf("java"), emptyList(), BuildTargetCapabilities(false, false, false, false) ) - manualTargetJavaTest.displayName = "//manual_target:java_test" + manualTargetJavaTest.displayName = "$targetPrefix//manual_target:java_test" manualTargetJavaTest.baseDirectory = "file://\$WORKSPACE/manual_target/" val environmentVariablesJavaLibrary = BuildTarget( - BuildTargetIdentifier("//environment_variables:java_binary"), + BuildTargetIdentifier("$targetPrefix//environment_variables:java_binary"), listOf("application"), listOf("java"), emptyList(), BuildTargetCapabilities(true, false, true, false) ) - environmentVariablesJavaLibrary.displayName = "//environment_variables:java_binary" + environmentVariablesJavaLibrary.displayName = "$targetPrefix//environment_variables:java_binary" environmentVariablesJavaLibrary.baseDirectory = "file://\$WORKSPACE/environment_variables/" environmentVariablesJavaLibrary.dataKind = "jvm" environmentVariablesJavaLibrary.data = jvmBuildTarget val environmentVariablesJavaTest = BuildTarget( - BuildTargetIdentifier("//environment_variables:java_test"), + BuildTargetIdentifier("$targetPrefix//environment_variables:java_test"), listOf("test"), listOf("java"), emptyList(), BuildTargetCapabilities(true, true, false, false) ) - environmentVariablesJavaTest.displayName = "//environment_variables:java_test" + environmentVariablesJavaTest.displayName = "$targetPrefix//environment_variables:java_test" environmentVariablesJavaTest.baseDirectory = "file://\$WORKSPACE/environment_variables/" environmentVariablesJavaTest.dataKind = "jvm" environmentVariablesJavaTest.data = jvmBuildTarget diff --git a/e2e/src/main/java/org/jetbrains/bsp/bazel/base/BazelBspTestBaseScenario.kt b/e2e/src/main/java/org/jetbrains/bsp/bazel/base/BazelBspTestBaseScenario.kt index 641d98d08..b57b0954b 100644 --- a/e2e/src/main/java/org/jetbrains/bsp/bazel/base/BazelBspTestBaseScenario.kt +++ b/e2e/src/main/java/org/jetbrains/bsp/bazel/base/BazelBspTestBaseScenario.kt @@ -9,6 +9,9 @@ import java.nio.file.Paths import kotlin.system.exitProcess abstract class BazelBspTestBaseScenario { + val targetPrefix = Runtime.getRuntime().exec("bazel version").inputStream.bufferedReader().readText() + .let {"""(?<=Build label: )\d+(?=[0-9.]+)""".toRegex().find(it)!!.value.toInt() } + .let { if(it < 6) "" else "@" } protected val testClient = createClient() diff --git a/e2e/test-resources/cpp-project/.bazelrc b/e2e/test-resources/cpp-project/.bazelrc index 7766dc2e0..1265929de 100644 --- a/e2e/test-resources/cpp-project/.bazelrc +++ b/e2e/test-resources/cpp-project/.bazelrc @@ -1,2 +1 @@ -build --java_toolchain=@bazel_tools//tools/jdk:toolchain_java8 -build --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java8 +build --cxxopt=--std=c++17 diff --git a/e2e/test-resources/cpp-project/.bazelversion b/e2e/test-resources/cpp-project/.bazelversion deleted file mode 100644 index 1e20ec35c..000000000 --- a/e2e/test-resources/cpp-project/.bazelversion +++ /dev/null @@ -1 +0,0 @@ -5.4.0 \ No newline at end of file diff --git a/e2e/test-resources/cpp-project/WORKSPACE b/e2e/test-resources/cpp-project/WORKSPACE index 64930c8c6..024ff0f3d 100644 --- a/e2e/test-resources/cpp-project/WORKSPACE +++ b/e2e/test-resources/cpp-project/WORKSPACE @@ -2,12 +2,13 @@ workspace(name = "cpp_test") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +GTEST_SHA = "5ab508a01f9eb089207ee87fd547d290da39d015" + http_archive( name = "com_google_googletest", - sha256 = "9a8a166eb6a56c7b3d7b19dc2c946fe4778fd6f21c7a12368ad3b836d8f1be48", - strip_prefix = "googletest-8567b09290fe402cf01923e2131c5635b8ed851b", - # Keep this URL in sync with ABSL_GOOGLETEST_COMMIT in ci/cmake_common.sh. - urls = ["https://github.com/google/googletest/archive/8567b09290fe402cf01923e2131c5635b8ed851b.zip"], # 2020-06-12T22:24:28Z + sha256 = "755f9a39bc7205f5a0c428e920ddad092c33c8a1b46997def3f1d4a82aded6e1", + strip_prefix = "googletest-{}".format(GTEST_SHA), + urls = ["https://github.com/google/googletest/archive/{}.zip".format(GTEST_SHA)], ) local_repository( diff --git a/e2e/test-resources/local-jdk-project/.bazelrc b/e2e/test-resources/local-jdk-project/.bazelrc deleted file mode 100644 index e69de29bb..000000000 diff --git a/e2e/test-resources/local-jdk-project/.bazelversion b/e2e/test-resources/local-jdk-project/.bazelversion deleted file mode 100644 index 831446cbd..000000000 --- a/e2e/test-resources/local-jdk-project/.bazelversion +++ /dev/null @@ -1 +0,0 @@ -5.1.0 diff --git a/e2e/test-resources/remote-jdk-project/.bazelversion b/e2e/test-resources/remote-jdk-project/.bazelversion deleted file mode 100644 index 831446cbd..000000000 --- a/e2e/test-resources/remote-jdk-project/.bazelversion +++ /dev/null @@ -1 +0,0 @@ -5.1.0 diff --git a/e2e/test-resources/sample-repo/.bazelrc b/e2e/test-resources/sample-repo/.bazelrc index 7785a935c..810ee0352 100644 --- a/e2e/test-resources/sample-repo/.bazelrc +++ b/e2e/test-resources/sample-repo/.bazelrc @@ -1 +1 @@ -build --java_runtime_version=remotejdk_11 \ No newline at end of file +build --java_runtime_version=remotejdk_11 diff --git a/e2e/test-resources/sample-repo/.bazelversion b/e2e/test-resources/sample-repo/.bazelversion deleted file mode 100644 index ac14c3dfa..000000000 --- a/e2e/test-resources/sample-repo/.bazelversion +++ /dev/null @@ -1 +0,0 @@ -5.1.1 diff --git a/install/src/main/resources/aspects.bzl b/install/src/main/resources/aspects.bzl index 494a8633c..2cb71d240 100644 --- a/install/src/main/resources/aspects.bzl +++ b/install/src/main/resources/aspects.bzl @@ -272,11 +272,15 @@ def extract_java_toolchain(target, ctx, dep_targets): else: return None, dict() +JAVA_RUNTIME_TOOLCHAIN_TYPE = "@bazel_tools//tools/jdk:runtime_toolchain_type" + def extract_java_runtime(target, ctx, dep_targets): runtime = None - if java_common.JavaRuntimeInfo in target: + if java_common.JavaRuntimeInfo in target: # Bazel 5.4.0 way runtime = target[java_common.JavaRuntimeInfo] + elif JAVA_RUNTIME_TOOLCHAIN_TYPE in ctx.toolchains: # Bazel 6.0.0 way + runtime = ctx.toolchains[JAVA_RUNTIME_TOOLCHAIN_TYPE].java_runtime else: runtime_jdk = getattr(ctx.rule.attr, "runtime_jdk", None) if runtime_jdk and java_common.JavaRuntimeInfo in runtime_jdk: @@ -512,4 +516,5 @@ bsp_target_info_aspect = aspect( implementation = _bsp_target_info_aspect_impl, required_aspect_providers = [[JavaInfo]], attr_aspects = ALL_DEPS, + toolchains = [JAVA_RUNTIME_TOOLCHAIN_TYPE], ) diff --git a/server/src/main/java/org/jetbrains/bsp/bazel/server/bloop/Naming.java b/server/src/main/java/org/jetbrains/bsp/bazel/server/bloop/Naming.java index 1209adc51..25819aee3 100644 --- a/server/src/main/java/org/jetbrains/bsp/bazel/server/bloop/Naming.java +++ b/server/src/main/java/org/jetbrains/bsp/bazel/server/bloop/Naming.java @@ -22,7 +22,10 @@ public static String safeName(Label label) { var labelName = label.getValue(); if (labelName.startsWith("//")) { labelName = labelName.substring(2); + } else if (labelName.startsWith("@//")) { + labelName = labelName.substring(3); } + return labelName; } } diff --git a/server/src/main/java/org/jetbrains/bsp/bazel/server/common/ServerContainer.kt b/server/src/main/java/org/jetbrains/bsp/bazel/server/common/ServerContainer.kt index edb0972f7..a04106618 100644 --- a/server/src/main/java/org/jetbrains/bsp/bazel/server/common/ServerContainer.kt +++ b/server/src/main/java/org/jetbrains/bsp/bazel/server/common/ServerContainer.kt @@ -61,14 +61,15 @@ class ServerContainer internal constructor( ) val targetKindResolver = TargetKindResolver() val bazelProjectMapper = - BazelProjectMapper(languagePluginsService, bazelPathsResolver, targetKindResolver) + BazelProjectMapper(languagePluginsService, bazelPathsResolver, targetKindResolver, bazelInfo) val targetInfoReader = TargetInfoReader() val projectResolver = ProjectResolver( bazelBspAspectsManager, workspaceContextProvider, bazelProjectMapper, bspClientLogger, - targetInfoReader + targetInfoReader, + bazelInfo ) val finalProjectStorage = projectStorage ?: FileProjectStorage(bspInfo, bspClientLogger) val projectProvider = ProjectProvider(projectResolver, finalProjectStorage) diff --git a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/BazelPathsResolver.kt b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/BazelPathsResolver.kt index 13d0af9fe..b852cf3da 100644 --- a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/BazelPathsResolver.kt +++ b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/BazelPathsResolver.kt @@ -55,7 +55,7 @@ class BazelPathsResolver(private val bazelInfo: BazelInfo) { } private fun extractRelativePath(label: String): String { - val prefix = "//" + val prefix = bazelInfo.release.mainRepositoryReferencePrefix() require(label.startsWith(prefix)) { String.format( "%s didn't start with %s", label, prefix diff --git a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/BazelProjectMapper.kt b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/BazelProjectMapper.kt index 6858f856f..8c9c6cfa5 100644 --- a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/BazelProjectMapper.kt +++ b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/BazelProjectMapper.kt @@ -5,6 +5,7 @@ import kotlinx.coroutines.flow.filterNot import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.toList import kotlinx.coroutines.runBlocking +import org.jetbrains.bsp.bazel.bazelrunner.BazelInfo import org.jetbrains.bsp.bazel.info.BspTargetInfo.FileLocation import org.jetbrains.bsp.bazel.info.BspTargetInfo.TargetInfo import org.jetbrains.bsp.bazel.server.sync.dependencytree.DependencyTree @@ -17,7 +18,8 @@ import java.net.URI class BazelProjectMapper( private val languagePluginsService: LanguagePluginsService, private val bazelPathsResolver: BazelPathsResolver, - private val targetKindResolver: TargetKindResolver + private val targetKindResolver: TargetKindResolver, + private val bazelInfo: BazelInfo ) { fun createProject( targets: Map, @@ -42,8 +44,7 @@ class BazelProjectMapper( workspaceContext.importDepth.value, rootTargets ).asSequence().filter(::isWorkspaceTarget) - - private fun isWorkspaceTarget(target: TargetInfo): Boolean = target.id.startsWith("//") + private fun isWorkspaceTarget(target: TargetInfo): Boolean = target.id.startsWith(bazelInfo.release.mainRepositoryReferencePrefix()) private fun createModules( targetsToImport: Sequence, dependencyTree: DependencyTree diff --git a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/ProjectResolver.kt b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/ProjectResolver.kt index 4e4bf8ca9..eb0db396b 100644 --- a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/ProjectResolver.kt +++ b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/ProjectResolver.kt @@ -1,5 +1,6 @@ package org.jetbrains.bsp.bazel.server.sync +import org.jetbrains.bsp.bazel.bazelrunner.BazelInfo import java.net.URI import org.jetbrains.bsp.bazel.info.BspTargetInfo.TargetInfo import org.jetbrains.bsp.bazel.logger.BspClientLogger @@ -15,7 +16,8 @@ class ProjectResolver( private val workspaceContextProvider: WorkspaceContextProvider, private val bazelProjectMapper: BazelProjectMapper, private val logger: BspClientLogger, - private val targetInfoReader: TargetInfoReader + private val targetInfoReader: TargetInfoReader, + private val bazelInfo: BazelInfo ) { fun resolve(): Project { @@ -29,13 +31,19 @@ class ProjectResolver( val aspectOutputs = logger.timed>( "Reading aspect output paths" ) { bepOutput.filesByOutputGroupNameTransitive(BSP_INFO_OUTPUT_GROUP) } - val rootTargets = bepOutput.rootTargets() + val rootTargets = when(bazelInfo.release.major){ + // Since bazel 6, the main repository targets are stringified to "@//"-prefixed labels, + // contrary to "//"-prefixed in older Bazel versions. Unfortunately this does not apply + // to BEP data, probably due to a bug, so we need to add the "@" prefix here. + in 0..5 -> bepOutput.rootTargets() + else -> bepOutput.rootTargets().map { target -> "@$target" } + } val targets = logger.timed>( "Parsing aspect outputs" ) { targetInfoReader.readTargetMapFromAspectOutputs(aspectOutputs) } return logger.timed( "Mapping to internal model" - ) { bazelProjectMapper.createProject(targets, rootTargets, workspaceContext) } + ) { bazelProjectMapper.createProject(targets, rootTargets.toSet(), workspaceContext) } } private fun buildProjectWithAspect(workspaceContext: WorkspaceContext): BepOutput = diff --git a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/languages/java/JdkResolver.kt b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/languages/java/JdkResolver.kt index fb2737c0e..24a08c840 100644 --- a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/languages/java/JdkResolver.kt +++ b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/languages/java/JdkResolver.kt @@ -59,14 +59,9 @@ class JdkResolver( null val javaHome = javaHomeFile?.let { bazelPathsResolver.resolveUri(it) } - val version = - if (targetInfo.hasJavaToolchainInfo()) - targetInfo.javaToolchainInfo.sourceVersion - else - null - + val version = null return JdkCandidateData(hasRuntimeJavaHome, javaHome, version) - .takeIf { javaHome != null || version != null } + .takeIf { javaHome != null } } private inner class JdkCandidate(private val data: JdkCandidateData) { diff --git a/server/src/test/java/org/jetbrains/bsp/bazel/server/sync/languages/LanguagePluginServiceTest.kt b/server/src/test/java/org/jetbrains/bsp/bazel/server/sync/languages/LanguagePluginServiceTest.kt index 6ced381f1..a36985aba 100644 --- a/server/src/test/java/org/jetbrains/bsp/bazel/server/sync/languages/LanguagePluginServiceTest.kt +++ b/server/src/test/java/org/jetbrains/bsp/bazel/server/sync/languages/LanguagePluginServiceTest.kt @@ -3,6 +3,7 @@ package org.jetbrains.bsp.bazel.server.sync.languages import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe import org.jetbrains.bsp.bazel.bazelrunner.BasicBazelInfo +import org.jetbrains.bsp.bazel.bazelrunner.BazelRelease import org.jetbrains.bsp.bazel.server.sync.BazelPathsResolver import org.jetbrains.bsp.bazel.server.sync.languages.cpp.CppLanguagePlugin import org.jetbrains.bsp.bazel.server.sync.languages.java.JavaLanguagePlugin @@ -28,7 +29,7 @@ class LanguagePluginServiceTest { @BeforeEach fun beforeEach() { - val bazelInfo = BasicBazelInfo("", Paths.get("")) + val bazelInfo = BasicBazelInfo("", Paths.get(""), BazelRelease("6.0.0")) val bazelPathsResolver = BazelPathsResolver(bazelInfo) val jdkResolver = JdkResolver(bazelPathsResolver, JdkVersionResolver()) val javaLanguagePlugin = JavaLanguagePlugin(bazelPathsResolver, jdkResolver, bazelInfo) From 7f74cae8dbe2d16e69a584a795d78819df82a23b Mon Sep 17 00:00:00 2001 From: Tomasz Pasternak Date: Mon, 2 Jan 2023 12:05:10 +0100 Subject: [PATCH 2/3] Test Bazel Version parsing --- .../bsp/bazel/bazelrunner/BazelReleaseTest.kt | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/BazelReleaseTest.kt diff --git a/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/BazelReleaseTest.kt b/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/BazelReleaseTest.kt new file mode 100644 index 000000000..0fb6098f0 --- /dev/null +++ b/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/BazelReleaseTest.kt @@ -0,0 +1,32 @@ +package org.jetbrains.bsp.bazel.bazelrunner + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +class BazelReleaseTest { + @Test + fun oldBazel(){ + val release = BazelRelease("release 4.0.0") + assertThat(release.major).isEqualTo(4) + assertThat(release.mainRepositoryReferencePrefix()).isEqualTo("//") + } + + @Test + fun newBazel(){ + val release = BazelRelease("release 6.0.0") + assertThat(release.major).isEqualTo(6) + assertThat(release.mainRepositoryReferencePrefix()).isEqualTo("@//") + } + + @Test + fun newBazelUnofficial(){ + val release = BazelRelease("release 6.0.0-pre20230102") + assertThat(release.major).isEqualTo(6) + } + + @Test + fun newBuazelMutliDigit(){ + val release = BazelRelease("release 16.0.0") + assertThat(release.major).isEqualTo(16) + } +} \ No newline at end of file From 2bf767cf77df76b342f0f70eaf051c28da75cf0a Mon Sep 17 00:00:00 2001 From: Tomasz Pasternak Date: Mon, 2 Jan 2023 12:22:13 +0100 Subject: [PATCH 3/3] Remove 'version' field from JdkCandidateData It was based on "source" version of the jdk, which was not always equal to the JDK version. Now, we always call "java -version" to retrieve the version number --- .../bsp/bazel/server/sync/languages/java/JdkResolver.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/languages/java/JdkResolver.kt b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/languages/java/JdkResolver.kt index 24a08c840..be4bd44c9 100644 --- a/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/languages/java/JdkResolver.kt +++ b/server/src/main/java/org/jetbrains/bsp/bazel/server/sync/languages/java/JdkResolver.kt @@ -59,13 +59,12 @@ class JdkResolver( null val javaHome = javaHomeFile?.let { bazelPathsResolver.resolveUri(it) } - val version = null - return JdkCandidateData(hasRuntimeJavaHome, javaHome, version) + return JdkCandidateData(hasRuntimeJavaHome, javaHome) .takeIf { javaHome != null } } private inner class JdkCandidate(private val data: JdkCandidateData) { - val version = data.version ?: data.javaHome?.let { jdkVersionResolver.resolve(it.toPath()) }?.toString() + val version = data.javaHome?.let { jdkVersionResolver.resolve(it.toPath()) }?.toString() val javaHome by data::javaHome val isRuntime by data::isRuntime val isComplete = javaHome != null && version != null @@ -75,7 +74,6 @@ class JdkResolver( private data class JdkCandidateData( val isRuntime: Boolean, val javaHome: URI?, - val version: String? ) }