[Commonizer] Demote duplicate dependency libraries to 'warning'
^KT-56729 Verification Pending
This commit is contained in:
committed by
Space Team
parent
7026ca9952
commit
d103f60af8
+20
-6
@@ -7,17 +7,31 @@ package org.jetbrains.kotlin.commonizer.konan
|
||||
|
||||
import org.jetbrains.kotlin.commonizer.ModulesProvider
|
||||
import org.jetbrains.kotlin.commonizer.ModulesProvider.ModuleInfo
|
||||
import org.jetbrains.kotlin.commonizer.konan.DefaultModulesProvider.DuplicateLibraryHandler
|
||||
import org.jetbrains.kotlin.library.SerializedMetadata
|
||||
import org.jetbrains.kotlin.library.metadata.parseModuleHeader
|
||||
import java.io.File
|
||||
import org.jetbrains.kotlin.util.Logger
|
||||
|
||||
internal class DefaultModulesProvider private constructor(
|
||||
libraries: Collection<NativeLibrary>,
|
||||
duplicateLibraryHandler: DuplicateLibraryHandler
|
||||
) : ModulesProvider {
|
||||
|
||||
internal class DefaultModulesProvider(libraries: Collection<NativeLibrary>) : ModulesProvider {
|
||||
internal class NativeModuleInfo(
|
||||
name: String,
|
||||
val dependencies: Set<String>,
|
||||
cInteropAttributes: ModulesProvider.CInteropModuleAttributes?
|
||||
) : ModuleInfo(name, cInteropAttributes)
|
||||
|
||||
private fun interface DuplicateLibraryHandler {
|
||||
fun onDuplicateLibrary(name: String)
|
||||
|
||||
companion object {
|
||||
val error = DuplicateLibraryHandler { name -> error("Duplicated libraries: $name") }
|
||||
fun warning(logger: Logger) = DuplicateLibraryHandler { name -> logger.warning("Duplicated libraries: $name") }
|
||||
}
|
||||
}
|
||||
|
||||
private val libraryMap: Map<String, NativeLibrary>
|
||||
private val moduleInfoMap: Map<String, NativeModuleInfo>
|
||||
|
||||
@@ -36,7 +50,7 @@ internal class DefaultModulesProvider(libraries: Collection<NativeLibrary>) : Mo
|
||||
ModulesProvider.CInteropModuleAttributes(packageFqName, manifestData.exportForwardDeclarations)
|
||||
} else null
|
||||
|
||||
libraryMap.put(name, library)?.let { error("Duplicated libraries: $name") }
|
||||
libraryMap.put(name, library)?.let { duplicateLibraryHandler.onDuplicateLibrary(name) }
|
||||
moduleInfoMap[name] = NativeModuleInfo(name, dependencies, cInteropAttributes)
|
||||
}
|
||||
|
||||
@@ -65,9 +79,9 @@ internal class DefaultModulesProvider(libraries: Collection<NativeLibrary>) : Mo
|
||||
|
||||
companion object {
|
||||
fun create(librariesToCommonize: NativeLibrariesToCommonize): ModulesProvider =
|
||||
DefaultModulesProvider(librariesToCommonize.libraries)
|
||||
DefaultModulesProvider(librariesToCommonize.libraries, DuplicateLibraryHandler.error)
|
||||
|
||||
fun create(libraries: Iterable<NativeLibrary>): ModulesProvider =
|
||||
DefaultModulesProvider(libraries.toList())
|
||||
fun forDependencies(libraries: Iterable<NativeLibrary>, logger: Logger): ModulesProvider =
|
||||
DefaultModulesProvider(libraries.toList(), DuplicateLibraryHandler.warning(logger))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ internal class LibraryCommonizer internal constructor(
|
||||
|
||||
private fun createDependenciesProvider(): TargetDependent<ModulesProvider?> {
|
||||
return TargetDependent(outputTargets + outputTargets.allLeaves()) { target ->
|
||||
DefaultModulesProvider.create(dependencies.getLibraries(target))
|
||||
DefaultModulesProvider.forDependencies(dependencies.getLibraries(target), logger)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user