Skip to content

Commit

Permalink
bugfix: Fix the @@ prefix issue if bazel.module and WORKSPACE are use…
Browse files Browse the repository at this point in the history
…d together
  • Loading branch information
tgodzik committed Feb 29, 2024
1 parent 55e4faa commit 8195423
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 15 deletions.
Expand Up @@ -16,12 +16,10 @@ data class BazelRelease(
val major: Int
) {

fun mainRepositoryReferencePrefix(isBzlModEnabled: Boolean) = when (major) {
fun mainRepositoryReferencePrefix() = when (major) {
in 0..3 -> throw RuntimeException("Unsupported Bazel version, use Bazel 4 or newer")
in 4..5 -> "//"
else ->
if (isBzlModEnabled) "@@//"
else "@//"
else -> "@//"
}

companion object {
Expand Down
Expand Up @@ -17,7 +17,7 @@ class BazelReleaseTest {

// then
release?.major shouldBe 4
release?.mainRepositoryReferencePrefix(false) shouldBe "//"
release?.mainRepositoryReferencePrefix() shouldBe "//"
}

@Test
Expand All @@ -27,7 +27,7 @@ class BazelReleaseTest {

// then
release?.major shouldBe 6
release?.mainRepositoryReferencePrefix(false) shouldBe "@//"
release?.mainRepositoryReferencePrefix() shouldBe "@//"
}

@Test
Expand Down
Expand Up @@ -90,7 +90,7 @@ class BazelPathsResolver(private val bazelInfo: BazelInfo) {
Paths.get(bazelInfo.execRoot, path)

fun isRelativeWorkspacePath(label: String): Boolean {
val prefix = bazelInfo.release.mainRepositoryReferencePrefix(bazelInfo.isBzlModEnabled)
val prefix = bazelInfo.release.mainRepositoryReferencePrefix()
return label.startsWith(prefix)
}

Expand All @@ -107,7 +107,7 @@ class BazelPathsResolver(private val bazelInfo: BazelInfo) {
}

fun extractRelativePath(label: String): String {
val prefix = bazelInfo.release.mainRepositoryReferencePrefix(bazelInfo.isBzlModEnabled)
val prefix = bazelInfo.release.mainRepositoryReferencePrefix()

require(isRelativeWorkspacePath(label)) { "$label didn't start with $prefix" }
val labelWithoutPrefix = label.substring(prefix.length)
Expand Down
Expand Up @@ -349,7 +349,7 @@ class BazelProjectMapper(
}

private fun isWorkspaceTarget(target: TargetInfo): Boolean =
target.id.startsWith(bazelInfo.release.mainRepositoryReferencePrefix(bazelInfo.isBzlModEnabled)) &&
target.id.startsWith(bazelInfo.release.mainRepositoryReferencePrefix()) &&
(hasKnownSources(target) ||
target.kind in setOf(
"java_library",
Expand Down Expand Up @@ -504,7 +504,7 @@ class BazelProjectMapper(
targetInfo.envInheritList.associateWith { System.getenv(it) }

private fun removeDotBazelBspTarget(targets: List<String>): List<String> {
val prefix = bazelInfo.release.mainRepositoryReferencePrefix(bazelInfo.isBzlModEnabled) + ".bazelbsp"
val prefix = bazelInfo.release.mainRepositoryReferencePrefix() + ".bazelbsp"
return targets.filter { !it.startsWith(prefix) }
}

Expand Down
Expand Up @@ -68,7 +68,7 @@ class ProjectResolver(
val rootTargets = buildAspectResult.bepOutput.rootTargets().let { formatTargetsIfNeeded(it) }
val targets = measured(
"Parsing aspect outputs"
) { targetInfoReader.readTargetMapFromAspectOutputs(aspectOutputs) }
) { targetInfoReader.readTargetMapFromAspectOutputs(aspectOutputs).let { it.mapKeys { it.key.replace("@@", "@") } } }
return measured(
"Mapping to internal model"
) { bazelProjectMapper.createProject(targets, rootTargets.toSet(), allTargetNames, workspaceContext, bazelInfo) }
Expand All @@ -88,10 +88,7 @@ class ProjectResolver(
// 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 -> targets.toList()
else ->
if (bazelInfo.isBzlModEnabled)
targets.map { "@@$it" }
else targets.map { "@$it" }
else -> targets.map { "@$it" }
}.toList()

companion object {
Expand Down

0 comments on commit 8195423

Please sign in to comment.