-
Notifications
You must be signed in to change notification settings - Fork 167
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
ARM builds #2
Comments
At ninjablocks we are using the a couple of odroid XU boxes (8 core Arm A15 processor) as our build agents, each has 2gig of ram and flash based storage. These systems cost about $200 each. Build time for NodeJS is approx. 5 minutes, which is better than the 45 minutes on either beagle bone or RaspberryPi... In our case we run Ubuntu LTS on all our ARM based systems as they are now providing security updates in line with the x86 distribution, this was added when they released 14.04. We found native builds where way more reliable and many times faster than QEMU arm emulation offered by Amazon, last time I checked performance was worse than Raspberry Pi. Hosted ARM is currently pretty wild west, with very few commercial services, hopefully this will change once AMDs new ARM based Opterons go on sale later this year. Look forward to tested and supported ARM NodeJS builds! |
So my idea here was to connect a few A20 boards (dual core, 1 GB RAM) over distcc and create a build cluster. So instead of having a single beefy machine as @wolfeidau does, cluster commodity hardware. We don't have any data on how long such a cluster will take to compile node, or even how many machines this cluster will exactly have, but we're working on figuring that out. |
@mmalecki I don't know much about distcc but is it going to give us a standard build as if you were to compile on a single machine? |
@rvagg yup! distcc was build to do exactly that, so it takes a bunch of precautions to make sure that's true, like not relaying on local header files. Here's an excerpt from distcc overview:
|
In my mind another option to get or find hardware would be asking Linux distributions that are already deploying/building their complete stack and packages on arm. See for example Debian who support an extensive amount of "ports" of the debian distribution on different hardware. They also use donated or hosted hardware from community members and maintainers. As luck would have it they already support nodejs on a lot of "non-standard" arches:
So if there was a supportive developer or even the package maintainers themselves we could ask for assistance that would certainly help this task along. Any opinions? |
Debian Node builds today are useful (as they exist) but they are built in a non-standard way if we compare it to binaries created by Joyent. They dynamically link in the openssl libraries (probably a good idea) and also libv8 (a less good idea given some of the patches Node has made to V8 in the 0.10.x stream). So you'd really be asking them to do an entirely different build than when they do today. There is also the gcc compile farm https://gcc.gnu.org/wiki/CompileFarm |
@andrewlow Thanks for pointing out gcc.gnu.org. Haven't had it on my radar. And as you were pointing out the differences between Debians build of node vs. joyent: Wouldn't it help the nodejs project to get some queues from the package maintainers of the larger distributions? Asking them what they see is a pain, where they'd like things improved. What goes and doesn't go for their distribution as in upstream changes etc. etc. I feel like it's not for nothing that nodejs on Debian is lagging behind 4/5(!) versions behind the most recent stable releases. The situation on CentOS however is largely different. Having Red Hat as strong contributor is a good thing. [as of this writing] Comparatively they're only a merely version behind most recent stable. I don't know how the rest of the core team or community sees this but being an administrator for a long time now trying to support and plan a larg-ish node infrastructure seems very much of a hassle unless theres is some support from the distribution or upstream. |
@andreas-marschke Convincing the Debian maintainers to "do it the Node way" is challenging at best. They have a very specific way that they like to do things. If you're interested in the history, search for "debian" on the Node.js mailing list. Many Linux admins choose to use Chris Lea's PPA which he's moved over to NodeSource. https://github.com/nodesource/distributions |
Just a suggestion but may want to ping and chat with this startup http://labs.online.net/ we have started using them for build agents, they are in beta and by all accounts the product performs well. Saves the need for hosting your own ARM machines. Need to verify but they may also support docker, we have it running on our much smaller ARM platform, so builds for debian will be easier and in line with your existing tooling. |
Closing, we have ARM machines (including arm64 - woo!) hooked up. |
👍 awesome effort! |
I believe ARM is an important target but I'm unsure the best way to tackle CI with it. We either need to find some beefy ARM cpus somewhere that don't take 12h to compile Node or do a cross-compile then push to actual boxes to test or a distcc as @mmalecki has suggested or perhaps some crazy virtualization?
Need some input from cleverer people than me on this.
/cc @wolfeidau
The text was updated successfully, but these errors were encountered: