ubccr / hpc-toolset-tutorial

Tutorial for installing Open XDMoD, OnDemand, & ColdFront
GNU General Public License v3.0
121 stars 72 forks source link

OnDemand aarch64 builds #116

Closed aebruno closed 2 years ago

aebruno commented 2 years ago

We added multi-arch builds to support M1 macs. All seems to work fine except for OnDemand as only x86_64 rpm builds exist. Is it possible to get aarch64 builds? If not, what is arch specific? We now install TurboVNC directly from their yum repo which provides aarch64 builds. We also install python-websockify from source. Same for Dex, we just build the binary directly. What else is there?

johrstrom commented 2 years ago

I would say it's unlikely. We build on OSC machines, we may have an aarch64 machine but I don't know for sure.

@treydock PTAL.

treydock commented 2 years ago

I've been discussing this with @aebruno out-of-band via email. There are Docker tools to build multi-arch containers on x86_64 hosts but it would be a pretty big change to 2.0 build tools to incorporate a new arch. The OnDemand source install procedures aren't that complicated due to Rake tasks that try and handle the bulk of the work. If this is just for the HPC toolset I'd say go with source builds of OnDemand. The issue with EL8 builds is we utilize SCL runtime RPMs to setup a lot of the SCL things. Those should be just files, no binaries, but looks like I built them as x86_64 but should still work to install things like ondemand-runtime RPM.

Would the same tools for multi-arch builds be able to be utilized to run x86_64 HPC toolset containers on M1 Macs? On my x86_64 Mac the Docker Desktop might be able to do it, ie I see buildkit and buildx present. Quick google: https://forums.docker.com/t/run-x86-intel-and-arm-based-images-on-apple-silicon-m1-macs/117123

johrstrom commented 2 years ago

Yea we can build from the source fairly easily that's what our dev containers used to do. So I'd say that's the route. Though we'd likely have to build dex too - I believe that'd be it all we'd need.

@aebruno I can submit a patch to our Dockerfile.

treydock commented 2 years ago

Dex is fairly easy to build, get Go 1.17.x and ensure Go is in PATH then run "make build" in Dex source and copy binary to like /usr/local/sbin or something. There is also the Dex theme we created for OnDemand, in main ondemand-dex repo: https://github.com/OSC/ondemand-dex.

aebruno commented 2 years ago

After discussing with @treydock, I took a stab at building Dex based off the ondemand-dex rpm source, see here. It was pretty straightforward but feel free to edit as you see fit.

Yea we can build from the source fairly easily that's what our dev containers used to do

+1 for building from source. This is only for the HPC toolset containers so if it's not too much work it would be really nice to have arm64 builds for toolset containers.

I did some initial testing on an M1 mac and all the arm64 container builds (ldap, mysql, mongo, slurm, coldfront, etc.) all seem to be working well. So if we can get one for OnDemand that would be great.