LWJGL 2 maintenance

I forked @Darkchaos lwjgl 2 repo and updated a few things.

https://github.com/Ali-RS/lwjgl/releases/tag/v2.9.4

In the tests I did, it works fine with java 8 and 11+ on Linux. It includes a newly compiled native for Linux that is compiled with java 11 that resolves the below issues on Linux:

I also added @RiccardoBlb patch

The generated lwjgl-2.9.4.zip file contains the jars and the natives for the different OS plus some extra stuff!

I guess the only thing left to do is to move it to JME GitHub and publish it to maven under org.lmonkeyengine.lwjgl and update the engine and SDK to use it.

The natives are not packed in a jar file so we might need to pack the natives into a different jar file for each platform (lwjgl-platform-2.9.4-natives-linux, lwjgl-platform-2.9.4-natives-windows, lwjgl-platform-2.9.4-natives-osx)

I do not know how to do it via Ant and GitHub actions but I may be able to do it manually by generating a pom file using maven and uploading them to maven central manually via the Sonatype “upload artifact” web interface. Not sure!

Please let me know in case someone is willing to help with this.

6 Likes

I noticed there is an ant task for this in the project that generates maven artifacts. I updated the GitHub workflow to use the task and generate those and publish them into GitHub releases. They are in the lwjgl-maven-2.9.4.zip.

https://github.com/Ali-RS/lwjgl/releases/tag/v2.9.4

I have tested this with OpenJDK 8, 11, 17, and 19 from various vendors. (ubuntu, adapt, oracle)

1 Like

During my tests, I noticed running from TestChooser and enabling fullscreen, sometimes it does not automatically switch to the app and the app runs in the background. I needed to click on the window icon on the taskbar to bring it up. This only happens when I run it from TestChooser.

GitHub Actions is fine for continuous integration and test, where you run the same jobs on every commit. It’s tricky for releases, which happen less frequently and therefore the jobs are rarely run (and tested).

SonaType’s “upload artifact” web interface is cumbersome. I recommend using Gradle scripting to automate the upload to SonaType. The next difficulty will be generating a POM that meets all of SonaType’s requirements…

I have practical experience with building natives and uploading artifacts using Gradle. If you wish, I could take this on.

2 Likes

Yes, please, I appreciate it.

Edit:

Note

You can download the lwjgl-maven-2.9.4.zip from my fork and see if the generated poms can be used for this.

I still have not updated the groupId on the project so the poms are still using “org.lwjgl”. I will change them to org.jmonkeyengine and will update the previous release ASAP.

1 Like

I’ve forked Ali-RS/lwjgl to jMonkeyEngine/lwjgl2 and recommend focussing our development efforts there.

3 Likes

Thank you so much :slightly_smiling_face:

2 Likes

Something to take note, there are several PRs in the old lwjgl repo that will never get merged. It may be worth going through them and deciding if any of the fixes should be brought into the jme fork.
Pull requests · LWJGL/lwjgl (github.com)

4 Likes

@Ali_RS Thanks for taking care of that. But in jme3-lwjgl/build.gradle you added a line

 runtimeOnly 'org.jmonkeyengine:lwjgl-platform:2.9.5'

Which causes problems during compilation (at least with maven). I refer to this post which only describes a workaround.

Would it be possible to drop this line in the next minor release? Otherwise I cannot build a binary for my project in a github pipeline unless I stick to jme 3.5

2 Likes

This seems to work fine with Gradle, not sure why it fails with Maven.

I am not using Maven so can’t test this myself, can you please confirm if removing that line fixes this issue? If so, please feel free to submit a PR if you want.

2 Likes

Yes, I manually changed the pom.xml file in my local maven repo and it worked. I hope it will not cause other issues in existing projects. Will do a PR, thanks for the fast response!

PR: remove runtime dependency to lwjgl-platform:2.9.5 so mvn package does not fail by neuweiler · Pull Request #2040 · jMonkeyEngine/jmonkeyengine · GitHub

2 Likes