New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Supporting ARM architectures #62
Comments
Thank you for testing and reporting this early, @gedankenstuecke! Our plans now are:
I think this covers it. |
I looked into how to get docker to use the To get
and that's the only real trick to it. From there on you can use a base image for raspbian, e.g.
After
this yields |
Awesome, @gedankenstuecke! Can you write up a small script similar to https://github.com/jupyterhub/the-littlest-jupyterhub/blob/master/.circleci/integration-test.py that helps run TLJH inside a qemu / arm container? |
Yeah, I tried adapting the whole thing here with a custom Dockerfile and integration-test.py: gedankenstuecke@de1c7ce The building of the image seems to work out fine, but then when trying to start the container it dies right away and I couldn't yet figure out what's going wrong here. |
Things that need to happen here:
|
Sounds like a good JupyterCon paper! I'll check it out later today... |
Is this dead? |
@pisymbol nobody is currently working on it, unfortunately :( The core set of tasks needed haven't changed though. |
I want to throw in a +1 for this ticket. I'd love if there was ARM support for TLJH. |
@cdibble may I ask what you are planning on running this on? Raspberry PI? |
@yuvipanda - Actually I am just interested in taking advantage of the price:performance on the latest generation of AWS servers- the EC2 instances on ARM have pretty attractive specs compared with the previous generations on x64. So it's just about upgrading for me, not a use case with a mandatory ARM architecture. I understand this may not be the most motivating use case for dev work on this ticket. TLJH has made the deployment and maintenance of a Jupyter hub server a dream- many thanks to you and the other contributors. |
At least with docker on mac, you can trivially run arm64 builds. This should make testing much easier! |
This is a good hint. Thank you. FWIW I do see a note in |
@GeorgianaElena did some work on it a few months ago, maybe we can split out the miniforge commits from there? @cdibble I started a test run of TLJH setup with ARM, via this PR: #674. It's compiling so manythings, and the emulation is so slow - I'm still at the point where setup.py dependencies are being installed. We somehow require grpc in our base install - not sure why?! |
Can't install grpcio on arm :( I filed jupyterhub/traefik-proxy#125 |
Seems we got to similar points. I can't start the service:
Though I can't find the reference to the dependency that caused the failure on my end. I'm not seeing the install of I just changed a few things in |
BTW, I had an EC2 instance with ARM running, so I skipped the docker dev environment setup. |
Hah, you have definitely gotten farther than me :D Unfortunately I don't have access to an AWS ARM instance :( |
OK, I got it running locally! Things I had to do:
I think we can do all this independently and get us to aarch64 support |
Nice! Thank you for putting time into this :) I'm not quite there. I've added your fork+branch of I can run the So I modified the
But that isn't working- the published checksum doesn't match what I get with the download. I tried just using the checksum that results from the download, but that does not fix my error with UPDATE- The checksums are fine- I wasn't able to download from the url configured in
|
@cdibble I filed jupyterhub/traefik-proxy#128 to work on the traefik proxy installer. However, that wasn't a problem for me, and I've no idea how :| That it worked makes me suspect the arm-ness of my docker based setup... |
Yes I am surprised you were able to get it to work without an ARM build of traefik. But I haven't been able to get it to work even adding in the url and checksums for the ARM traefik versions in |
Looks like we need
Did the trick. Haven't tested much yet but I will this week. |
@cdibble awesome, yay! Please send PRs when you can. |
Opened jupyterhub/traefik-proxy#129 to allow for ARM builds in the traefik_proxy installer. I opened #675 to switch TLJH to using the traefik installer by default so we don't have to repeat that here. |
Ok- sorry for the delay. Busy week. I've got my fork working properly now and I've tested it with Ubuntu 20.04, python 3.8 on both x86-64 and aarch64 (arm64) servers. Everything seems to work as expected. I've opened a PR #679 if you want to incorporate these changes. I'd be happy to help resolve any issues. There are also some opportunities for code cleanup (e.g., getting rid of old functions used in the miniconda installation), but I've left those pieces in place. So, what is different:
What needs to be updated:
|
FWIW, I started looking at some docker stacks for amd64/arm64/arm32 here crossbuilt in a really inefficient way using Github Actions. To try to speed things up, I also started building the arm32/arm64 packages on RPis and adding them to my own wheelhouse (I'm not sure piwheels does 32 and 64 bit wheels?) |
This issue has been mentioned on Jupyter Community Forum. There might be relevant details there: https://discourse.jupyter.org/t/tljh-on-m1-mac-arm-docker-installer-is-x86-specific/10894/2 |
We've come a long way to support arm64 at this point! I think #679 can be updated to do very little as a lot of changes are already merged in dedicated PRs. |
It would be 💯 to get TLJH running on Raspberry Pis and other small boards. Unfortunately
miniconda
doesn't support their ARM processor architectures, so some changes to the installer are needed.As discussed with @yuvipanda a fix for this would be using
virtualenv
instead ofconda
. The user environment should be configurable to use eitherconda
orvirtualenv
. Furthermore nodesource also supports ARM architectures.The text was updated successfully, but these errors were encountered: