JogAmp Build v2.4.0-rc-20210111

classic Classic list List threaded Threaded
25 messages Options
12
Reply | Threaded
Open this post in threaded view
|

JogAmp Build v2.4.0-rc-20210111

Sven Gothel
Administrator
JogAmp Build v2.4.0-rc-20210111

<https://jogamp.org/deployment/v2.4.0-rc-20210111/>
(incl. sha512sum.txt and my gpg signature)

Sorry, a little late.

This is based on last source tip,

<https://jogamp.org/chuck/view/fwd/job/jogl/1507/>

Besides the unit tests on the platforms,
I did a quick validation on the fat jars
using OpenJDK 14 Debian 11 Bullseye (amd64, amd gpu).
The gears were spinning via
- java -jar jogamp-fat-test.jar


If no fundamental issues arise with this build,
I will mark this 2.4.0.

Then we may discuss what shall happen with the project.

Despite all the big crazy things happening,
I hope you had a Merry Christmas and wish you a happy year!

Best .. and laters,

~Sven



signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
Hello

I wish you an happy new year :)

Thank you so much :)
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Peer Heijnen
In reply to this post by Sven Gothel
Thank you very much and the best of wishes for 2021 to all of you!

We have been successfully using the current RC version with various clients in the past year. So we would welcome this official 2.4.0 release!

Once again, many thanks for your sustained effort on this project!

Greetings,
Peer

PS: Have you considered opening a Patreon page or something similar, maybe people who rely on this project can support you this way as well?
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
You can already ask for commercial support instead of giving some money to Patreon itself.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Manu
Thanks for posting this new version.
From JOGL Git log, it includes all the changes committed until 2020-06-15, right?

Any chances that you'll add "universal" libraries in the final version that will include x86 and arm architectures under macOS? As suggested here, you just have to generate .dylibs with compiler and linker options set to arm64 instead of x86_64, then run lipo command to create universal .dylib files that will include both architectures.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Sven Gothel
Administrator
On 1/12/21 7:25 PM, Manu [via jogamp] wrote:
> Thanks for posting this new version.
> From JOGL Git log <https://jogamp.org/cgit/jogl.git/>, it includes all the
> changes committed until 2020-06-15, right?
yes

>
> Any chances that you'll add "universal" libraries in the final version that
> will include x86 and arm architectures under macOS? As suggested here
> <http://forum.jogamp.org/JOGL-for-Mac-ARM-Silicon-td4040887.html>, you just
> have to generate .dylibs with compiler and linker options set to
> /arm64/ instead of /x86_64/, then run /lipo/ command to create universal
> .dylib files that will include both architectures.

Ist it possible to that the xcode 'beast' generates
a fat or universal dylib for amd64 and arm64?

Will this xcode still produce bw compatible code as we have defined it?
(maybe not that important)

If this is possible and can give me the Xcode version required
I will install it on the build machine and
apply the required 'universal' target changes in the 4 projects.
(If you have these .. maybe send a patch, otherwise I would dig into
the ant build file's history and bring back that removed universal,
once for x86-32bit and amd64-64bit).

~Sven

> Emmanuel Puybaret
>


signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Peer Heijnen
In reply to this post by gouessej
We currently don't have a direct need for commercial support. I was merely suggesting offering other ways to support this project than offering commercial support, but if that's not desired, that's totally fine, of course! And secondly, I was only mentioning Patreon as an example, I don't care, any other way is fine too, I don't care.
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
It's not up to me to decide but Patreon charges a commission of 5 to 12 percent.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Manu
In reply to this post by Sven Gothel
Sven Gothel wrote
Ist it possible to that the xcode 'beast' generates
a fat or universal dylib for amd64 and arm64?
As explained here, I built universal .dylibs with the command line following build instructions, using Ant, CMake and lipo command.
So if by "xcode beast", you mean a cool option in XCode that would be able to do the same thing, I don't know well enough XCode to answer you.

Sven Gothel wrote
Will this xcode still produce bw compatible code as we have defined it?
(maybe not that important)
It's important and it's one of the reasons of my late answer once I discovered the YafaRay universal .dylibs that I also built didn't work under Mac OS X 10.10.
This led me to discover that you should take care of using the right -mmacosx-version-min compiler option (something that is done for JOGL and Gluegen) and avoid signing universal libraries under Big Sur at the moment.

Sven Gothel wrote
If this is possible and can give me the Xcode version required
I will install it on the build machine and
apply the required 'universal' target changes in the 4 projects.
My attempt to build universal .dylibs was made with  with two computers, an Intel Mac running under macOS 10.14.6 and an ARM Mac running under macOS 11.1.
As you may not have an ARM Mac yet, I restarted the Intel Mac under macOS 10.15.7 and installed XCode 12.3 to check if compiling Gluegen was possible with arm64 architecture, the same way I tried under the ARM Mac.
But it failed giving the following kinds of error:
[cc] /usr/include/sys/cdefs.h:707:2: error: Unsupported architecture
[cc] #error Unsupported architecture

[cc] /usr/include/sys/_types.h:55:9: error: unknown type name '__int64_t'; did you mean '__int128_t'?
[cc] typedef __int64_t       __darwin_blkcnt_t;      

[cc] /usr/include/sys/_types.h:56:9: error: unknown type name '__int32_t'; did you mean '__int128_t'?
[cc] typedef __int32_t       __darwin_blksize_t;

A quick search on Internet didn't give any valuable information. There must be some other options required to compile for arm64. I tried also with XCode 11.3 under macOS 10.14.6, with the same failure.
Hope you know them since you tried to compile these libraries under iOS.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Manu
Today, I tried again to build universal .dylib files under Catalina and XCode 12.3, and this time it worked, so it could worth to try with the Mac used to build and deliver JOGL. On my side, the difference was that I built this time Gluegen and JOGL in a virtual machine but there must have been something else.

The only difficulty was to succeed to link with libjawt.dylib for ARM under an Intel computer. I tried to set DYLD_LIBRARY_PATH env variable but it didn't work.
So here's the solution to build Gluegen and JOGL for Mac ARM that I used:
- download Zulu OpenJDK 11 for x86_64 and arm64
- install Zulu OpenJDK 11 for x86_64 in /Library/Java/JavaVirtualMachines to use it for build process
- unzip Zulu OpenJDK 11 for arm64 somewhere on your disk and prepare a universal libjawt.dylib file for x86_64 and arm64 with a command similar to:
lipo /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/lib/libjawt.dylib /path/to/zulu11.43.1021-ca-jdk11.0.9.1-macosx_aarch64/zulu-11.jdk/Contents/Home/lib/libjawt.dylib -output /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/lib/libjawt.dylib -create
- check libjawt.dylib is universal with the command:
lipo /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/lib/libjawt.dylib -info
- get Gluegen and JOGL with Git as explained at http://forum.jogamp.com/jogl/doc/HowToBuild.html
- before running Ant scripts, edit gluegen/make/gluegen-cpptasks-base.xml to replace "x86_64" by "arm64" in the following lines:
<compilerarg value="x86_64" if="use.macosx64"/> 
<linkerarg value="x86_64" if="use.macosx64"/>
- run Ant scripts
- pick generated .dylib files in gluegen/build/gluegen-rt-natives-macosx-universal.jar and jogl/build/jar/jogl-all-natives-macosx-universal.jar files
- finally, if you want universal .dylib files use lipo command to combine x86_64 and arm64 .dylib files, with commands similar to:
lipo path/to/arm64/libgluegen_rt.dylib path/to/x86_64/libgluegen_rt.dylib -output path/to/universal/libgluegen_rt.dylib -create

Sven, I hope you'll be able to adapt your Ant scripts to perform these operations.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Sven Gothel
Administrator
On 1/18/21 6:12 PM, Manu [via jogamp] wrote:
> Today, I tried again to build universal .dylib files under Catalina and XCode
> 12.3, and this time it worked, so it could worth to try with the Mac used to
> build and deliver JOGL.

Thank you, I will give it a try this month.

> On my side, the difference was that I built this time
> Gluegen and JOGL in a virtual machine but there must have been something else.
>
> The only difficulty was to succeed to link with libjawt.dylib for ARM under an
> Intel computer. I tried to set DYLD_LIBRARY_PATH env variable but it didn't work.
> So here's the solution to build Gluegen and JOGL for Mac ARM that I used:
> - download Zulu OpenJDK 11
> <https://www.azul.com/downloads/zulu-community/?version=java-11-lts&os=macos&package=jdk> for
> x86_64 *and* arm64
> - install Zulu OpenJDK 11 for x86_64 in /Library/Java/JavaVirtualMachines to
> use it for build process
> - unzip Zulu OpenJDK 11 for arm64 somewhere on your disk and prepare a
> universal libjawt.dylib file for x86_64 and arm64 with a command similar to:
>
> lipo /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/lib/libjawt.dylib /path/to/zulu11.43.1021-ca-jdk11.0.9.1-macosx_aarch64/zulu-11.jdk/Contents/Home/lib/libjawt.dylib -output /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/lib/libjawt.dylib -create
>
> - check libjawt.dylib is universal with the command:
>
> lipo /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/lib/libjawt.dylib -info
>
> - get Gluegen and JOGL with Git as explained at
> http://forum.jogamp.com/jogl/doc/HowToBuild.html
> - before running Ant scripts, edit /gluegen/make/gluegen-cpptasks-base.xml/ to
> replace "x86_64" by "arm64" in the following lines:
>
> <compilerarg value="x86_64" if="use.macosx64"/>
> <linkerarg value="x86_64" if="use.macosx64"/>
>
> - run Ant scripts
> - pick generated .dylib files in
> /gluegen/build/gluegen-rt-natives-macosx-universal.jar/ and
> /jogl/build/jar/jogl-all-natives-macosx-universal.jar/ files
> - finally, if you want universal .dylib files use /lipo/ command to combine
> x86_64 and arm64 .dylib files, with commands similar to:
>
> lipo path/to/arm64/libgluegen_rt.dylib path/to/x86_64/libgluegen_rt.dylib -output path/to/universal/libgluegen_rt.dylib -create
>
>
> Sven, I hope you'll be able to adapt your Ant scripts to perform these
> operations.
That part should be easy, as long I get the right tools in place, see above.

Thank you for digging out the details.

~Sven

--
health & wealth
mailto:[hidden email] ; http://jausoft.com
land : +49 (471) 4707742 ; fax : +49 (471) 4707741
Timezone CET: PST+9, EST+6, UTC+1


signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
In reply to this post by Manu
It should work with AdoptOpenJDK too, shouldn't it?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Manu
Thanks for taking care of the build for Mac ARM too.
AdoptOpenJDK doesn’t provide a version of OpenJDK for Mac ARM yet, so you won’t get there the required libjawt.dylib for Mac ARM to be able to link for that architecture.
But if you don’t want to change the OpenJDK you chose, you may also run lipo to merge libjawt.dylib for X86_64 coming from AdoptOpenJDK and libjawt.dylib for ARM coming from Zulu OpenJDK.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
I confirm that AdoptOpenJDK doesn't support Apple ARM yet:
https://github.com/AdoptOpenJDK/openjdk-build/issues/1922

OpenJFX/JavaFX isn't supported yet:
https://bugs.openjdk.java.net/browse/JDK-8257222

I'm not sure that supporting Apple ARM should be done in JOGL 2.4, maybe it's too early.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Manu
What would be the problem to use Azul OpenJDK build?

gouessej wrote
OpenJFX/JavaFX isn't supported yet
I don't use FX, so I can't tell if it's important for JOGL. Is it?

I'm not sure that supporting Apple ARM should be done in JOGL 2.4, maybe it's too early.
As I know how to build JOGL .dylib files for Mac ARM now, I'll build them on my side if JOGL 2.4 is released without them.
But be sure that I won't be the only developer to want this support. See wspear's comment.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
I don't want to rely on the custom patches used in Zulu and if its stuff was clean, it would already be in AdoptOpenJDK but it doesn't mean that JOGL shouldn't support Apple ARM.

I rarely use OpenJFX, I can't tell.

I don't want JOGL 2.4.0 to be postponed because of the lack of support for Apple ARM, I'd prefer seeing JOGL 2.4.0 released without it so that we get JOGL 2.4.0 as soon as possible, many developers have been waiting for this release for years and we could spend some time to add Apple ARM support into a small maintenance release later. In my humble opinion, either it's absolutely trivial to add and it would be a pity not to put it into JOGL 2.4.0 right now or there is still some work to do and then it's better to spend the necessary time to make things correctly in JOGL 2.4.1. Do you think that you could make a pull request? Is there anything missing?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Manu
This post was updated on .
gouessej wrote
I don't want to rely on the custom patches used in Zulu and if its stuff was clean, it would already be in AdoptOpenJDK but it doesn't mean that JOGL shouldn't support Apple ARM.
Zulu OpenJDK is required just to create a universal version of libjawt.dylib and link to it. As Zulu OpenJDK is released under GNU GPL v2 with classpath exception license, its source code can be requested as explained here. I agree that it's astonishing that they don't have a public repository, but the GPL lets developers the choice to distribute their source code the way they want.

I don't want JOGL 2.4.0 to be postponed because of the lack of support for Apple ARM, I'd prefer seeing JOGL 2.4.0 released without it so that we get JOGL 2.4.0 as soon as possible, many developers have been waiting for this release for years and we could spend some time to add Apple ARM support into a small maintenance release later.
I thought it could be a "nice to have" to list in JOGL 2.4.0 new features, but I won't push you. I can build the .dylib files for Mac ARM on my side now, so if they are not distributed with JOGL 2.4.0, I'll use my own build in Sweet Home 3D. As it's an open source project, developers interested by these .dylib files will be able to download them from its repository, once updated.

In my humble opinion, either it's absolutely trivial to add and it would be a pity not to put it into JOGL 2.4.0 right now or there is still some work to do and then it's better to spend the necessary time to make things correctly in JOGL 2.4.1. Do you think that you could make a pull request? Is there anything missing?
I think it's trivial when you know where to place the required changes in the build procedure. It's not my case and I already gave all the details for an update.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Manu
Time goes by, and we are now in February with still no final release 2.4.0.
Sven, forget about my idea to include Mac ARM support in version 2.4.0, please just release the latest RC as final release if possible.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Manu
Any news about the final release?
Please give us some news...
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Martin
In reply to this post by Sven Gothel
Great news, thanks for the work!

I was about to give a try it with Jzy3d and noticed I can't get that release from the public maven repository.  

Is there a maven repository for JOGL candidate releases?

Thanks!
12