cjstehno / gradle-natives

Gradle plugin to aid in managing native libraries associated with Java-based projects.
http://cjstehno.github.io/gradle-natives/
Apache License 2.0
32 stars 4 forks source link

gradle-natives and JOGL 2.3.2 #14

Closed egtoney closed 7 years ago

egtoney commented 8 years ago

I was trying to use this plugin to import JOGL 2.3.2 into my project inside of eclipse. Here is my build file and the output when I try and export the natives.

gradle.build

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'

project.ext.jinputVersion = "2.0.5"
project.ext.joglVersion = "2.3.2"

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.com.stehno:gradle-natives:0.2.4"
  }
}

apply plugin: "com.stehno.natives"

natives {
    jars = [
        "jinput-platform-${jinputVersion}-natives-linux",
        "jinput-platform-${jinputVersion}-natives-windows",
        "jinput-platform-${jinputVersion}-natives-osx",
        "jogl-all-${joglVersion}-natives-android-aarch64",
        "jogl-all-${joglVersion}-natives-android-armv6",
        "jogl-all-${joglVersion}-natives-linux-amd64",
        "jogl-all-${joglVersion}-natives-linux-armv6",
        "jogl-all-${joglVersion}-natives-linux-armv6hf",
        "jogl-all-${joglVersion}-natives-linux-i586",
        "jogl-all-${joglVersion}-natives-macoxs-universal",
        "jogl-all-${joglVersion}-natives-solaris-amd64",
        "jogl-all-${joglVersion}-natives-solaris-i586",
        "jogl-all-${joglVersion}-natives-windows-amd64",
        "jogl-all-${joglVersion}-natives-windows-i586",
    ]
}

sourceCompatibility = 1.8
mainClassName = "JInputTest"

run {
    systemProperty 'java.library.path', file( 'build/natives/linux' )
}

repositories {
    jcenter()
}

dependencies {
    compile "org.slf4j:slf4j-api:1.7.12"
    compile "net.java.jinput:jinput:${jinputVersion}"
    compile "org.jogamp.jogl:jogl-all-main:${joglVersion}"

    testCompile 'junit:junit:4.12'
}

Output

./gradlew unpackNatives --stacktrace
com.stehno.gradle.natives.NativesPluginExtension_Decorated@4ace284d
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:startScripts UP-TO-DATE
:distTar UP-TO-DATE
:distZip UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build UP-TO-DATE
:unpackNatives FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':unpackNatives'.
> java.io.FileNotFoundException: /home/ethan/workspace/GameEngine/Test/build/natives/windows/natives/windows-amd64/jogl_desktop.dll (No such file or directory)

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':unpackNatives'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:62)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
    at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:158)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:155)
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:36)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:103)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:97)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:97)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:102)
    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    at org.gradle.launcher.Main.doAction(Main.java:33)
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: org.gradle.api.UncheckedIOException: java.io.FileNotFoundException: /home/ethan/workspace/GameEngine/Test/build/natives/windows/natives/windows-amd64/jogl_desktop.dll (No such file or directory)
    at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:43)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:78)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:226)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 60 more
Caused by: java.io.FileNotFoundException: /home/ethan/workspace/GameEngine/Test/build/natives/windows/natives/windows-amd64/jogl_desktop.dll (No such file or directory)
    at com.stehno.gradle.natives.UnpackNativesTask$_unpackNatives_closure1_closure3.doCall(UnpackNativesTask.groovy:49)
    at com.stehno.gradle.natives.UnpackNativesTask$_unpackNatives_closure1.doCall(UnpackNativesTask.groovy:46)
    at com.stehno.gradle.natives.PlatformJars$_each_closure1_closure2.doCall(PlatformJars.groovy:39)
    at com.stehno.gradle.natives.PlatformJars$_each_closure1.doCall(PlatformJars.groovy:38)
    at com.stehno.gradle.natives.PlatformJars.each(PlatformJars.groovy:37)
    at com.stehno.gradle.natives.PlatformJars$each$0.call(Unknown Source)
    at com.stehno.gradle.natives.UnpackNativesTask.unpackNatives(UnpackNativesTask.groovy:45)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
    ... 67 more

BUILD FAILED

Total time: 4.054 secs

I was wondering if I did something incorrectly or if it is just because how JOGL is set up. I seems that the problem stems from the fact that there is a natives/os-name/ directory in each of the JOGL jars.

cjstehno commented 8 years ago

I would imagine that JOGL has the native libraries in an unexpected configuration. I will look at this in the next couple days.

cjstehno commented 7 years ago

I have started a refactoring of this project and hope to have a new release which will address this issue within the next week or two.

cjstehno commented 7 years ago

This has been addressed in the development branch - will be released within a day or two.