Support alpine images for aarch64
mrdziuban opened this issue Β· 48 comments
Building the alpine images on an Apple silicon (M1) Mac currently fails with an "Unsupported arch: aarch64" error, e.g. from this code. Would it be possible to add support for this architecture? Thanks in advance!
@mrdziuban: As a workaround you can use Bellsoft's images. They already have alpine/musl images for aarch64: https://hub.docker.com/r/bellsoft/liberica-openjdk-alpine-musl/tags?page=1&name=17
I guess it would be more difficult than just adding aarch64
for alpine
, am I right? (yes, I did it, and it wasn't enough to generate the right Dockerfile
in 11/jre/alpine/
for example.
/8/jdk/ubuntu
is building fine.
I guess it would be more difficult than just adding
aarch64
foralpine
, am I right? (yes, I did it, and it wasn't enough to generate the rightDockerfile
in11/jre/alpine/
for example./8/jdk/ubuntu
is building fine.
Definitely more work required (we haven't looked into it yet)
Let me know if I ever can help.
@karianna : if ever the blocking point was the lack of hardware for building/testing, let me know, and I'll see what I can do.
We are getting ever closer with Alpine aarch64 images. We now have some nightly builds available on the website and aim to get some release builds available soon which can in turn be added to our docker images
@gdams - is there a published roadmap that would show roughly when the nightly aarch64 images will move to into the release builds?
July PSU is our next best bet (no promised though!)
Hi there π
I see regular builds for aarch64
Alpine, which is nice. π«
Could anyone please give me a link to the July PSU? I don't know how to find the date linked to that event.
Thanks.
FYI - The Alpine aarch64 builds aren't very stable at the moment. The July PSU even hasn't been created yet.
Update: Note that at the moment JDK11u buids for Alpine/aarch64 are unstable so we've switched off the nightlies on those for now. Other releases have been left in but have not yet undergone significant analysis of testing results yet.
Hi @sxa, any further updates re timelines for this ticket
We need to get it to a state where it fully passes the AQA tests. We've got some versions in a reasonable state and are looking to get systems available that we can run the TCK on (We cannot distribute JDKs that do not pass the TCK.
We have seen some hangs with some Alpine/aarch64 builds with some versions though, which will be blockers for releasing those (From memory JDK11 was affected by that).
You can see the latest nightly build jobs, and grab the artifacts to test them if you want, from the following jenkins jobs:
- jdk8u-alpine-linux-aarch64-temurin
- jdk11u-alpine-linux-aarch64-temurin
- jdk17u-alpine-linux-aarch64-temurin
- jdk19-linux-aarch64-temurin
It's also worth pointing out that as an interim measure if you have Rosetta2 installed on your M1 system you can run the x64 version e.g.
podman run --rm -it --platform=linux/amd64 eclipse-temurin:17-alpine
Or s/podman/docker/
if that's what you have installed
Azul Zulu is an alternative vs Bellsoft Liberica for local development:
And this project is building arm64 images of Temurin.
Is there any updates on java 11 on alpine/aarch64?
It would be really good if there was a version for arm64. That would make it so much easier in the daily work of development.
@paoliniluis We don't have anyone currently working on this (waiting for a volunteer basically :-))
Thank you @karianna for your quick reply and honesty
What happens if the aarch64 releases from https://github.com/adoptium/temurin17-binaries/releases
are added to the alpine image switch case?
For me, it just won't work because it's built for libc and not musl.
Really need arm support for 20.0.1_9-jdk-alpine, 20-jdk-alpine, 20-alpine
cc carlossg/docker-maven#356
Finally, we have moved all our cluster services images to Amazon Corretto because of this
This is a much-needed feature that affects the developer experience. Would be great if we can have this ;(
To be clear on what's required here:
- We need to make sure the builds are stable for the versions we're interested in (Ideally we'd start from JDK21, but 17 is a possibility, I've had hangs from JDK11 so that is likely completely out of scope for now). We have already integrated the platform into regular jenkins pipelines - here the are for each version with a quick summary of where it is:
- JDK11 - This was hanging quite regularly so we disabled regular build+test although the last two runs that were done looked ok. I've kicked off a test today of the last tagged release - jdk-11.0.18+7 - to see how that goes.
- JDK17 - Looks in a reasonable state at the moment :-)
- JDK20 - Build failure, although that's likely not too hard to fix as it's currently trying to use the wrong boot JDK (JDK18 for JDK20 which isn't supported)
- JDK21 - Build failure with a missing class - potentially because it uses a JDK20 for the bootstrapping and that build is quite out of date now with the JDK20 pipelines failing
- Once those are done we need to run the TCK compliance suite before we can ship on this platform (That part of it is restricted access sadly, but if we can get the normal build and AQA test jobs to a state where they are all running cleanly then we can look at doing that side of it)
- Once the builds are clean and passing the TCK we will be able to generate and publish container images to dockerhub alongside the existing ones.
As @karianna said earlier, volunteers to move this forward are welcome :-) Ideal requirements would be if you have a system on which you can run builds and test suites and diagnose any problems. Quick samples on how to get started
- Start up the adoptopenjdk/alpine3_build_image container from dockerhub
- Follow the steps in this FAQ entry which shows you what to run to build the JDK inside the container
- Follow this FAQ entry as a quick intro on how to run the test suites. The test jobs in jenkins can hopefully provide an idea of the current state of the jobs so you can target your efforts.
If we had the ability to "launch" this support with JDK17 (and JRE17) only due to it being the closest to being "ready" that'd be a huge win in my view.
If we had the ability to "launch" this support with JDK17 (and JRE17) only due to it being the closest to being "ready" that'd be a huge win in my view.
The most likely scenario is to attempt to it with JDK21 - which is LTS and will be GA in September, but that is of course subject to having people to analyse the test results and ensure they are good enough for us to release it.
As an update to what I said in the earlier comment, JDK20 and JDK21 (which was blocked on JDK20) are now able to build successfully so they are in a reasonable state too, subject to testing.
Can we get a status update if this will be shipped with JDK 21 (which will be GA in ~5 days)?
Thanks in advance :)
The binaries have been working well for us (Jenkins) for a few weeks. Hopefully, the official images will be updated accordingly.
@smlambert FWIW the page you reference is from an earlier version of the project plan. The latest plan update (Feb 2023 update) shows the following table - but no material difference for that platform for the reasons you state.
FYI The latest run (73) of https://ci.adoptium.net/job/build-scripts/job/jobs/job/evaluation/job/jobs/job/jdk21/job/jdk21-evaluation-alpine-linux-aarch64-temurin/ looks pretty good (I believe it's only showing some failures we've seen on x64). SO while I'm not making any promises or setting any target dates if that's consistent then we're close to being able to ship JDK21 on this platform if we can complete a TCK run successfully.
That's fantastic news, Stewart!
Thanks. π
We have done a release build and validated that it passes all of the AQA test suite (Not surprising since it's the same code level as the one I mentioned above!) so the TCK is the only thing outstanding (And we do not yet have the TCK material for 21 so none of the platforms have completed that part yet for JDK21)
The PMC discussed this topic at the last meeting. Provided the build passes the applicable compatibility tests we will release it as tertiary (Priority 3) platform. Additional work will be required to deliver as container images etc.
We would appreciate Java 17 for alpine-aarc64. It's a big problem for developers on new Macs M-series.
We would appreciate Java 17 for alpine-aarc64. It's a big problem for developers on new Macs M-series.
Similar to JDK21 there are nightly builds available through the website at https://adoptium.net/en-GB/temurin/nightly/ or via the API, however unlike JDK21 those are latest nightly development snapshots at present instead of builds based on specific tags.
At present we do not have any specific plan to release this version (especially in light of 21 being the new latest LTS) but you're welcome to try it and give feedback on stability etc.
Good news! Temurin 21 for Alpine/aarch64 is now available as a tarball download - a container image will follow:
/tmp # wget https://api.adoptium.net/v3/binary/version/jdk-21+35/alpine-linux/aarch64/jdk/hotspot/normal/adoptium
Connecting to api.adoptium.net (20.62.244.126:443)
Connecting to github.com (140.82.114.3:443)
Connecting to objects.githubusercontent.com (185.199.108.133:443)
saving to 'adoptium'
adoptium 100% |****************************************************************| 195M 0:00:00 ETA
'adoptium' saved
/tmp # cat /etc/alpine-release
3.15.4
/tmp # uname -m
aarch64
/tmp # tar xpfz adoptium
/tmp # jdk-21+35/bin/java -version
openjdk version "21" 2023-09-19 LTS
OpenJDK Runtime Environment Temurin-21+35 (build 21+35-LTS)
OpenJDK 64-Bit Server VM Temurin-21+35 (build 21+35-LTS, mixed mode, sharing)
/tmp #
Enjoy :-)
Since this is a new platform, all feedback on it is welcome.
That's excellent news, thank you!
container now live too as eclipse-temurin:21-alpine
:-) I haven't tested specifically on a mac but I can't think of a reason why it wouldn't work:
sxa@test-equinix-ubuntu2004-armv8l-02:~$ uname -a
Linux test-equinix-ubuntu2004-armv8l-02 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:36:35 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
sxa@test-equinix-ubuntu2004-armv8l-02:~$ docker run eclipse-temurin:21-alpine java -version
openjdk version "21" 2023-09-19 LTS
OpenJDK Runtime Environment Temurin-21+35 (build 21+35-LTS)
OpenJDK 64-Bit Server VM Temurin-21+35 (build 21+35-LTS, mixed mode, sharing)
sxa@test-equinix-ubuntu2004-armv8l-02:~$
Closing this issue now. An APK installer for Alpine will be published in the coming days. Thanks to everyone who requested aarch64 builds!
Thank you so much for the amazing work.
We'll be able to propose Alpine Jenkins agents for amd64 and aarch64 with jdk21 thanks to you.
Thanks a lot for this guys. Please do consider this for Java 17 also if possible =)
Thank you so much for the amazing work. We'll be able to propose Alpine Jenkins agents for amd64 and aarch64 with jdk21 thanks to you.
We are using a Temurin build on our own jenkins agents (not all yet) so hopefully you won't encounter too many problems with it in that environment @gounthar :-)
All should go fine, thanks for your testimony, Stewart. π
Thanks a lot for this guys. Please do consider this for Java 17 also if possible =)
Seconded!