From 88a913c7dcf8d8cb555271117099e9521c7f250c Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Thu, 1 Apr 2021 10:04:42 +0200 Subject: [PATCH] [Commonizer] NativeLibraryLoader: Improve error message when loading a library fails --- .../kotlin/commonizer/NativeLibraryLoader.kt | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/NativeLibraryLoader.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/NativeLibraryLoader.kt index eaa080c8985..c9696d1d3b6 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/NativeLibraryLoader.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/NativeLibraryLoader.kt @@ -21,24 +21,31 @@ internal class DefaultNativeLibraryLoader( private val logger: Logger ) : NativeLibraryLoader { override fun invoke(file: File): NativeLibrary { - val library = resolveSingleFileKlib( - libraryFile = org.jetbrains.kotlin.konan.file.File(file.path), - logger = logger, - strategy = ToolingSingleFileKlibResolveStrategy - ) + try { + val library = resolveSingleFileKlib( + libraryFile = org.jetbrains.kotlin.konan.file.File(file.path), + logger = logger, + strategy = ToolingSingleFileKlibResolveStrategy + ) - if (library.versions.metadataVersion == null) - logger.fatal("Library does not have metadata version specified in manifest: $file") + if (library.versions.metadataVersion == null) + logger.fatal("Library does not have metadata version specified in manifest: $file") - val metadataVersion = library.metadataVersion - if (metadataVersion?.isCompatible() != true) - logger.fatal( - """ + val metadataVersion = library.metadataVersion + if (metadataVersion?.isCompatible() != true) + logger.fatal( + """ Library has incompatible metadata version ${metadataVersion ?: "\"unknown\""}: $file Please make sure that all libraries passed to commonizer compatible metadata version ${KlibMetadataVersion.INSTANCE} """.trimIndent() + ) + return NativeLibrary(library) + } catch (cause: Throwable) { + throw NativeLibraryLoadingException( + "Failed loading library at ${file.path}", cause ) - - return NativeLibrary(library) + } } } + +internal class NativeLibraryLoadingException(message: String, cause: Throwable? = null) : Exception(message, cause)