Integrating JDK8u312 into ikvm-revived
I'm currently working on porting the changes made here to ikvm-revived/ikvm@develop, though I'm running into a weird issue where Build OpenJDK Harness fails with chmod permission denied^1. What is needed in order for me to validate that the workflow runs go through?
@wasabii can probably fill you in on the details, but he did mention that he attempted to upgrade the OpenJDK to a more recent version of JDK 8, but ran into trouble due to some customizations that were made to the current version, then he ended up reverting back. This is just so we could get a release out faster, the plan is to upgrade to a later patch to a later JDK 8 and then eventually more recent versions. There is still much work to do before we get there, though^1.
He also mentioned that the environment with the old Linux distribution was required for the OpenJDK only because the JDK version was so old that it won't work on modern Windows. So, as long as the version of OpenJDK you are upgrading to builds on Windows you should be able to eliminate the Linux environment. You may have already noticed there is bit of info about this on the README, but I am posting it here for context:
The OpenJDK JDK8u source hierarchy and build results for Linux/x64 is required. These build artifacts cannot be built on Windows, or modern Linux hosts. Instead, they must be built on a host with GCC 4.3 available. Debian Lenny is known to work acceptably. The CI/CD GitHub action can serve as a demonstration of this.
The GitHub action's generated artifact can simply be extract into the appropriate spot in openjdk8/build to avoid building it yourself. Navigate to the GitHub Actions, find the latest successfuly build for the branch you're concerned with, and download the openjdk8-build-linux-x86_64-normal-server-release artifact. Extract this zip file into openjdk8/build.
IKVM includes a native library named 'ikvm-native' which must be built for the JNI functionality to work. The solution includes .vcxproj files that build both the win-x86, win-x64, linux-x86 and linux-x64 versions of these libraries. However, the linux-* version require WSL to be enabled on your development machine. Within this WSL distribution ensure you have installed the GCC toolset. For Debian based distributions, this should be as simple as typing apt-get install g++.
You are welcome to join the conversation and search the chat history on Discord to answer some of your questions: https://discord.gg/MpzNd5Tk8P
I figured that much, though the Github Workflow Actions, which I created a branch off of, don't work for me.
Btw. you can build OpenJDK 8 with OpenJDK 8 without issue, did that here before - it says it's not recommended, but it works. The customizations are tedious, but as mentioned here we are running the original IKVM sources on JDK8u312 (including TLS1.3 support).
Huh. The chmod issue is odd. It seems to be working in our Actions runs. Why would your Actions VM not have permissions to chmod + x a file where ours does?
Hmm. I'll think on that. It's a weird one for sure.
you can build OpenJDK 8 with OpenJDK 8 without issue, did that here before
Yeah. I opted for 7 merely because they said it was recommended, and not for any particular reason. It did work fine on 8.
Btw. you can build OpenJDK 8 with OpenJDK 8 without issue, did that here before - it says it's not recommended, but it works.
Yea, I figured it was possible to but there would be too many prerequisites to go into to make it into an officially supported procedure.
The customizations are tedious, but as mentioned https://github.com/ikvm-revived/ikvm/issues/40#issuecomment-989748771 we are running the original IKVM sources on JDK8u312 (including TLS1.3 support).
If you have any insights about how to maintain the customizations across future JDK versions without a lot of manual work, please share them.
Of course, we would like to merge the updates to JDK8u312, but it would be good to have a conversation on Discord to help ensure we are all working in the same direction to make that happen.
On integrating JDK8u312: that would be awesome.
What I found was that a number of the source files which had been forked into IKVM versions had simply been changed, and I didn't want to spend my time harmonizing those changes instead of releasing something that could actually build and function and attract interest.
I wanted to make sure we went over all of the forked IKVM changes, and fully understood their rational, before just blindly porting them a second time. Are the source files yanked from icedtea still needed? What about the classpath ones?
But yeah, a newer JDK version builds fine on a newer Linux.
Oh, IKVM does use some artifacts specifically from the Linux build output that don't exist or are different on the Windows one. I forget which ones.... Tzmappings maybe?
I actually figure there's a good chance some of this stuff is actually available in .Net now and can be generated from that at some point.
Get Outlook for Androidhttps://aka.ms/AAb9ysg
From: Shad Storhaug @.> Sent: Tuesday, May 31, 2022 9:14:09 AM To: ikvm-revived/ikvm @.> Cc: Jerome Haltom @.>; Comment @.> Subject: Re: [ikvm-revived/ikvm] Integrating JDK8u312 into ikvm-revived (Issue #68)
Btw. you can build OpenJDK 8 with OpenJDK 8 without issue, did that here before - it says it's not recommended, but it works.
Yea, I figured it was possible to but there would be too many prerequisites to go into to make it into an officially supported procedure.
The customizations are tedious, but as mentioned #40 (comment)https://github.com/ikvm-revived/ikvm/issues/40#issuecomment-989748771 we are running the original IKVM sources on JDK8u312 (including TLS1.3 support).
If you have any insights about how to maintain the customizations across future JDK versions without a lot of manual work, please share them.
Of course, we would like to merge the updates to JDK8u312, but it would be good to have a conversation on Discord to help ensure we are all working in the same direction to make that happen.
— Reply to this email directly, view it on GitHubhttps://github.com/ikvm-revived/ikvm/issues/68#issuecomment-1142192673, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAEGGST6W3O7RHDMPTS5OETVMYNDDANCNFSM5XNP5PUQ. You are receiving this because you commented.Message ID: @.***>