From 478205e6e8a18491335024d672d8ed2eea7daf9d Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Mon, 29 Jan 2024 16:35:10 +0100 Subject: [PATCH] [build] Don't use dependencies on Native backend in KLIB tool ^KT-62340 --- kotlin-native/build.gradle | 1 + kotlin-native/klib/build.gradle.kts | 6 ++-- .../kotlin/cli/klib/DeclarationPrinter.kt | 1 - .../kotlin/cli/klib/SignaturePrinter.kt | 1 - .../kotlin/cli/klib/descriptorUtils.kt | 36 +++++++++++++++++++ .../build.gradle.kts | 1 + 6 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/descriptorUtils.kt diff --git a/kotlin-native/build.gradle b/kotlin-native/build.gradle index ee05b6c7c81..7a4f974c2ec 100644 --- a/kotlin-native/build.gradle +++ b/kotlin-native/build.gradle @@ -169,6 +169,7 @@ dependencies { distPack project(':kotlin-native:utilities:cli-runner') distPack project(':kotlin-native:utilities:basic-utils') distPack project(':kotlin-native:klib') + distPack project(path: ':kotlin-native:backend.native', configuration: 'cli_bcApiElements') distPack project(path: ':kotlin-native:endorsedLibraries:kotlinx.cli', configuration: "jvmRuntimeElements") commonSources project(path: ':kotlin-stdlib', configuration: 'metadataSourcesElements') commonSources project(path: ':kotlin-test', configuration: 'metadataSourcesElements') diff --git a/kotlin-native/klib/build.gradle.kts b/kotlin-native/klib/build.gradle.kts index 7a5537e335c..8f70b8f1e7a 100644 --- a/kotlin-native/klib/build.gradle.kts +++ b/kotlin-native/klib/build.gradle.kts @@ -13,8 +13,10 @@ repositories { } dependencies { - implementation(kotlinStdlib()) - implementation(project(":kotlin-native:backend.native", "cli_bcApiElements")) + implementation(project(":core:descriptors")) + implementation(project(":native:frontend.native")) + implementation(project(":compiler:ir.psi2ir")) + implementation(project(":compiler:ir.serialization.native")) implementation(project(":kotlin-native:utilities:basic-utils")) implementation(project(":kotlin-util-klib-abi")) } diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationPrinter.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationPrinter.kt index a95fa772987..0773850117b 100644 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationPrinter.kt +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationPrinter.kt @@ -1,6 +1,5 @@ package org.jetbrains.kotlin.cli.klib -import org.jetbrains.kotlin.backend.konan.descriptors.getPackageFragments import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC import org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PROTECTED diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/SignaturePrinter.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/SignaturePrinter.kt index 8b82690700b..db8f4901ef3 100644 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/SignaturePrinter.kt +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/SignaturePrinter.kt @@ -1,6 +1,5 @@ package org.jetbrains.kotlin.cli.klib -import org.jetbrains.kotlin.backend.konan.descriptors.getPackageFragments import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies import org.jetbrains.kotlin.utils.Printer diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/descriptorUtils.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/descriptorUtils.kt new file mode 100644 index 00000000000..d990085dbff --- /dev/null +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/descriptorUtils.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.cli.klib + +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor +import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.resolve.descriptorUtil.module + +// Legacy stuff that will be dropped anyway in KT-65380 + +// TODO: remove it, KT-65380 +private fun getPackagesFqNames(module: ModuleDescriptor): Set { + val result = mutableSetOf() + val packageFragmentProvider = (module as? ModuleDescriptorImpl)?.packageFragmentProviderForModuleContentWithoutDependencies + + fun getSubPackages(fqName: FqName) { + result.add(fqName) + val subPackages = packageFragmentProvider?.getSubPackagesOf(fqName) { true } + ?: module.getSubPackagesOf(fqName) { true } + subPackages.forEach { getSubPackages(it) } + } + + getSubPackages(FqName.ROOT) + return result +} + +// TODO: remove it, KT-65380 +internal fun ModuleDescriptor.getPackageFragments(): List = + getPackagesFqNames(this).flatMap { + getPackage(it).fragments.filter { it.module == this }.toSet() + } diff --git a/kotlin-native/prepare/kotlin-native-compiler-embeddable/build.gradle.kts b/kotlin-native/prepare/kotlin-native-compiler-embeddable/build.gradle.kts index 9ed40ba330a..86123538ac0 100644 --- a/kotlin-native/prepare/kotlin-native-compiler-embeddable/build.gradle.kts +++ b/kotlin-native/prepare/kotlin-native-compiler-embeddable/build.gradle.kts @@ -49,6 +49,7 @@ dependencies { kotlinNativeEmbedded(project(":kotlin-native:utilities:cli-runner")) kotlinNativeEmbedded(project(":kotlin-native:utilities:basic-utils")) kotlinNativeEmbedded(project(":kotlin-native:klib")) + kotlinNativeEmbedded(project(":kotlin-native:backend.native", "cli_bcApiElements")) kotlinNativeEmbedded(project(":kotlin-native:endorsedLibraries:kotlinx.cli", "jvmRuntimeElements")) kotlinNativeEmbedded(project(":kotlin-compiler")) { isTransitive = false }