[Commonizer] NativeKlibCommonize: Remove optimization for only loading dependencies from native distribution

This is removed for now, because of test failures on Windows.
It seems like the dependencies in the klib produced by Windows are not
correct.

See: https://youtrack.jetbrains.com/issue/KT-45471
^KT-45471
This commit is contained in:
sebastian.sellmair
2021-03-15 10:11:51 +01:00
committed by Space
parent b777c89bc8
commit 80e964c166
2 changed files with 2 additions and 26 deletions
@@ -70,11 +70,8 @@ internal class NativeKlibCommonize(options: Collection<Option<*>>) : Task(option
LibraryCommonizer(
konanDistribution = distribution,
repository = repository,
dependencies =
KonanDistributionRepository(
distribution, commonizerTargets.toSet(), libraryLoader,
filter = KonanDistributionRepository.Filter.onlyDependenciesOf(repository)
) + FilesRepository(dependencyLibraries.toSet(), libraryLoader),
dependencies = KonanDistributionRepository(distribution, commonizerTargets.toSet(), libraryLoader) +
FilesRepository(dependencyLibraries.toSet(), libraryLoader),
libraryLoader = libraryLoader,
targets = commonizerTargets,
resultsConsumer = resultsConsumer,
@@ -10,20 +10,12 @@ import org.jetbrains.kotlin.descriptors.commonizer.LeafCommonizerTarget
import org.jetbrains.kotlin.descriptors.commonizer.NativeLibraryLoader
import org.jetbrains.kotlin.descriptors.commonizer.konan.NativeLibrary
import org.jetbrains.kotlin.descriptors.commonizer.platformLibsDir
import org.jetbrains.kotlin.descriptors.commonizer.repository.KonanDistributionRepository.Filter
internal class KonanDistributionRepository(
konanDistribution: KonanDistribution,
targets: Set<LeafCommonizerTarget>,
libraryLoader: NativeLibraryLoader,
filter: Filter = Filter.none()
) : Repository {
fun interface Filter {
operator fun invoke(target: LeafCommonizerTarget, library: NativeLibrary): Boolean
companion object Factory
}
private val librariesByTarget: Map<LeafCommonizerTarget, Lazy<Set<NativeLibrary>>> =
targets.associateWith { target ->
lazy {
@@ -33,7 +25,6 @@ internal class KonanDistributionRepository(
?.listFiles()
.orEmpty().toList()
.map { libraryLoader(it) }
.filter { filter(target, it) }
.toSet()
}
}
@@ -42,15 +33,3 @@ internal class KonanDistributionRepository(
return librariesByTarget[target]?.value ?: error("Missing target $target")
}
}
internal fun Filter.Factory.onlyDependenciesOf(libraries: Repository): Filter {
val requestedDependencies = mutableMapOf<LeafCommonizerTarget, Set<String>>()
return Filter { target, dependency ->
val requestedDependenciesForTarget = requestedDependencies.getOrPut(target) {
libraries.getLibraries(target).flatMap { library -> library.manifestData.dependencies }.toSet()
}
dependency.manifestData.uniqueName in requestedDependenciesForTarget
}
}
internal fun Filter.Factory.none() = Filter { _, _ -> true }