Skip to content

Commit

Permalink
Try to be more helpful when JNI libraries are missing
Browse files Browse the repository at this point in the history
When directory missing, such as on a fresh clone:

```
* What went wrong:
Execution failed for task ':zipline:jvmProcessResources'.
> Native libraries missing or outdated!

  See https://github.com/cashapp/zipline/blob/trunk/TROUBLESHOOTING.md#missing-jni-libraries

  Expected 6 files, found:
   - None!
```

When missing files:

```
* What went wrong:
Execution failed for task ':zipline:jvmProcessResources'.
> Native libraries missing or outdated!

  See https://github.com/cashapp/zipline/blob/trunk/TROUBLESHOOTING.md#missing-jni-libraries

  Expected 4 files, found:
   - aarch64/libquickjs.dylib
   - aarch64/libquickjs.so
   - x86_64/libquickjs.dylib
```
  • Loading branch information
JakeWharton committed Feb 12, 2025
1 parent 5b0467b commit 17dd837
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion zipline/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import co.touchlab.cklib.gradle.CompileToBitcode.Language.C
import com.vanniktech.maven.publish.JavadocJar
import com.vanniktech.maven.publish.KotlinMultiplatform
import com.vanniktech.maven.publish.MavenPublishBaseExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
import org.jetbrains.kotlin.gradle.plugin.NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME
import org.jetbrains.kotlin.gradle.plugin.PLUGIN_CLASSPATH_CONFIGURATION_NAME
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
Expand Down Expand Up @@ -40,7 +41,29 @@ kotlin {
androidTarget {
publishLibraryVariants("release")
}
jvm()
jvm {
compilations.named(MAIN_COMPILATION_NAME).configure {
tasks.named(processResourcesTaskName).configure {
doFirst {
val jniDir = file("src/${target.name}Main/resources/jni")
val files = fileTree(jniDir).files
val expected = 4
if (files.size != expected) {
throw RuntimeException(
"""Native libraries missing or outdated!
|
|See https://github.com/cashapp/zipline/blob/trunk/TROUBLESHOOTING.md#missing-jni-libraries
|
|Expected $expected files, found:
| - """.trimMargin() +
files.map { it.toRelativeString(jniDir) }.sorted().joinToString("\n - ")
.ifEmpty { "None!" }
)
}
}
}
}
}

js {
nodejs()
Expand Down

0 comments on commit 17dd837

Please sign in to comment.