Skip to content

enablePlugins(JniPackage) also enables JniNative and force nativeBuildTool execution #267

@mydimension

Description

@mydimension

i have a project which i'd like to provide a pre-built library into unmanagedNativeDirectories so i would like to simply enablePlugins(JniPackage) without worrying about a local compilation. However, i get the following error when turning that plugin on:

[error] java.lang.RuntimeException: No supported native build tool detected. Check that the setting 'nativeCompile / sourceDirectory' (currently set to /my/project/src/native) points to a directory containing a supported build script. Supported build tools are: CMake,Cargo,Meson
[error]         at scala.sys.package$.error(package.scala:30)
[error]         at com.github.sbt.jni.plugins.JniNative$.$anonfun$settings$8(JniNative.scala:83)
[error]         at scala.Option.getOrElse(Option.scala:189)
[error]         at com.github.sbt.jni.plugins.JniNative$.$anonfun$settings$6(JniNative.scala:79)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error]         at sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error]         at sbt.Execute.work(Execute.scala:292)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[error]         at java.base/java.lang.Thread.run(Thread.java:840)
[error] (nativeBuildTool) No supported native build tool detected. Check that the setting 'nativeCompile / sourceDirectory' (currently set to /my/project/src/native) points to a directory containing a supported build script. Supported build tools are: CMake,Cargo,Meson

setting enableNativeCompilation := false produces an "unused" key warning and settings Compile / enableNativeCompilation := false has no effect.

attempting to disablePlugins(JniNative) seems to confuse sbt:

sbt.AutoPluginException: error determining plugins for project 'project' in /my/project:
Failed to sort List(com.github.sbt.jni.plugins.JniJavah, com.github.sbt.jni.plugins.JniLoad, com.github.sbt.jni.plugins.JniPackage, explicitdeps.ExplicitDepsPlugin, sbt.plugins.CorePlugin, sbt.plugins.Giter8TemplatePlugin, sbt.plugins.IvyPlugin, sbt.plugins.JUnitXmlReportPlugin, sbt.plugins.JvmPlugin, sbt.plugins.MiniDependencyTreePlugin, sbt.plugins.SemanticdbPlugin, sbtassembly.AssemblyPlugin) topologically

i guess the question is: should i be able to use JniPackage without needing to satisfy JniNative? the docs seem to indicate yes, but i can't seem to find a path forward.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions