| 20 Sep 2025 |
msgilligan | I’d prefer building OpenJDK with the previous OpenJDK like Guix does, but I assume there’s a reason for not doing it that way. | 02:38:08 |
emily | turtle stack has to stop somewhere. IIRC they eventually detour via Jikes or something else that eventually bootstraps via C, but last I heard they hadn't wired up the full path yet? | 02:38:52 |
emily | and it requires lots of old versions of compilers, forked patch GNU Classpath hacks, etc. | 02:39:00 |
emily | it also means that every time you do a toolchain change that rebuilds the world (so, every couple weeks for us) you need to build some 20 JDKs in sequence | 02:39:27 |
emily | bootstrappability is nice, but there are trade-offs | 02:39:41 |
msgilligan | Yes, I guess you could say it’s a can of turtles! | 02:40:06 |
emily | https://bootstrappable.org/projects/java.html "Moving on to JDK 9 and 10 is left as an exercise for the reader." :) | 02:40:31 |
emily | "Unfortunately, most of the software needed for the bootstrap has been abandoned. To ensure that the JDK can be built from sources without the need for an existing installation of the OpenJDK we propose to continue maintaining the links of this bootstrap chain." | 02:40:49 |
emily | a small project that we have plenty of available slack for, I'm sure | 02:41:00 |
emily | I forgot that they actually go through like (multiple versions of) three unmaintained JDKs | 02:41:45 |
emily | * I forgot that they actually go through like (multiple versions of) three unmaintained Java implementations | 02:41:50 |
msgilligan | I looked at it once — it’s pretty crazy | 02:42:45 |
emily | looks like even if you do all of this Gradle scuppers it:
Gradle is a build tool in the Java ecosystem. It needs Gradle to build. It also depends on Groovy, Scala and Kotlin. Groovy is already bootstrapped, but Scala is currently not bootstrappable and we do not know of a way to build Kotlin either, to see the status of work in progress on the issue see Bootstrapping JVM Languages.
https://bootstrappable.org/projects/java-tools.html
| 02:43:14 |
msgilligan | I would love to see Nix do it, too. But I agree it’s not realistic at the present time with our current tools and team. | 02:44:31 |
emily | we do not even have the core stdenv bootstrapping without binary seeds yet | 02:44:38 |
emily | there is a partial implementation in Nixpkgs | 02:44:43 |
emily | but it needs additional work and wiring up to replace our current bootstrap tools | 02:44:48 |
emily | likely not worth putting large effort into source-based bootstraps before that is done | 02:44:58 |
msgilligan | Yeah, Gradle (aka franken-gradle) is a bootstrapping nightmare | 02:45:16 |
msgilligan | I’ve been following the efforts of the Debian team on getting newer than the (heavily-modified, “franken-gradle”) 4.4 that they are currently shipping. | 02:47:29 |
msgilligan | I’ll probably move some of my main projects to Maven just for this reason. I’ve proposed it for bitcoinj, because making it build with Gradle 4.4 is very time-consuming. But the lead developer wants to be able to bundle in Debian | 02:49:37 |
emily | Debian and language ecosystems is a painful combination :) | 02:51:01 |
msgilligan | Part of the reason Debian Gradle is blocked at 4.4 is that is when they added Kotlin | 02:51:24 |
msgilligan | I’m a noob with big ambitions! | 02:52:18 |
msgilligan | And I know that bootstrapping is out of reach for JDK in Nix for now, but someday I hope we can do it. | 02:54:10 |
msgilligan | I need to take a second look at Guix, but I don’t even have time for that right now. | 02:54:53 |
msgilligan | Would it be possible to use OpenJDK 25 to build OpenJDK 26 (at least initially) ? | 03:04:58 |
msgilligan | (after we bootstrap 25 with Temurin) | 03:05:33 |
emily | yes, but very low value | 03:08:56 |
emily | it mostly just means it will take longer, since it is still rooting to a binary Temurin | 03:09:06 |