armv7/8 support (Debian/Ubuntu)
Add armv7 and armv8 Debian/Ubuntu packages to our repositories.
#1 Updated by Dominic Cleal about 4 years ago
Per a conversation on #theforeman, we've had two ARM server donations.
debian01.datacentred.theforeman.org (as it'll be known) is an armv8 server running on datacentred's OpenStack cloud. I've connected it to our Puppet infra, but it has a few errors that will need fixing. I'll join it in Jenkins in a moment (http://ci.theforeman.org/computer/debian01.datacentred.theforeman.org/)
sw04.mrel.de/sw04-mrel-de.cloud.online.net is an armv7 server. Also connected up to Puppet now, which is beginning to run.
Once our regular slave Puppet manifests are working and the builders are available for use in Jenkins, we'll probably then need to:
- add ARM pbuilder configs
- update core/dep build jobs to accept architecture as a parameter
- update build job matrixes to add architecture
#2 Updated by Dominic Cleal about 4 years ago
https://github.com/theforeman/foreman-infra/pull/187 should help fix some Puppet errors and add the necessary pbuilder configs.
#3 Updated by Dominic Cleal about 4 years ago
- Parent task set to #1
Both slaves are now connected and our Puppet manifests are adapted, including with ARM pbuilder configs.
They're both unable to access freight services for uploading built packages however - https://github.com/theforeman/foreman-infra/pull/189 should fix this.
https://github.com/theforeman/foreman-infra/pull/190 should then adapt the deb_corepackage Jenkins job to build core packages on non-x86 platforms (due to different pbuilder configs). Once that's in, we can add the ARM platforms to the matrix job and see how well it works. The same change will be needed for the deb_dependency job.
#6 Updated by Dominic Cleal about 4 years ago
The ARM builders can now access freight, and freight is reconfigured to build armhf and arm64 archives.
The deb_dependency job is updated to also run on armv7 and armv8 builders for packages, and it seems to successfully be building arm64 packages on jessie/trusty.
It's failing to build armhf packages, e.g. http://ci.theforeman.org/job/packaging_build_deb_dependency/arch=armv7,label=debian,os=trusty/966/console
+ sudo pdebuild-trusty W: /root/.pbuilderrc does not exist /usr/bin/pdebuild: line 39: /dev/fd/62: No such file or directory Build step 'Execute shell' marked build as failure
#7 Updated by Dominic Cleal about 4 years ago
The /dev issue was due to udev being missing on the armv7 slave, installed and it's working OK now.
ruby-rkerberos built successfully on both, and we now have armhf and arm64 packages in nightly repos.
ruby-mysql2 had issues with the tests, probably because I had to enable the updates and security components in the pbuilder configs to get the initial buildroot to work properly. The tests have since been fixed in Debian upstream, but we opted to remove them as backporting the changes was going to get tricky: https://github.com/theforeman/foreman-packaging/pull/844. ruby-mysql2 is now built for precise and wheezy on armhf.
With both arch-specific deps built, the smart proxy, CLI and related packages should now work on armhf and arm64.
Attempting to build Foreman core remains.
#8 Updated by Dominic Cleal about 4 years ago
I attempted to build Foreman core on armhf today:
- jessie/trusty on armhf appear to be fine (though trusty failed due to #12431)
- wheezy on armhf failed because it uses V8. We could add wheezy-backports and use nodejs there too, or disable this combination.
- precise on armhf failed because the Brightbox Ruby PPA is x86-only
And on arm64:
- jessie/trusty failed as nodejs isn't built for arm64. We could add an external repo or wait until the next stable releases when both distros look like they'll ship arm64 builds.
#9 Updated by Dominic Cleal about 4 years ago
https://github.com/theforeman/foreman-infra/commit/6555e45 enables builds on armv7 for jessie and trusty in light of the above.
I don't mind adding wheezy-backports if somebody wishes to wheezy to build it with nodejs - though this would then make it a dependency for x86 too. I don't mind what we do about arm64/armv8 either (wait, or add another repo for non-x86).
#13 Updated by Dominic Cleal about 4 years ago
Yep, fine by me. I don't think precise is even possible, thankfully.
The only question that remains in my mind is what to do about arm64 on jessie/trusty. Whether to try adding the nodesource repos (https://github.com/nodesource/distributions) to those build envs or leave it with just deps (smart proxy) support until 16.04 and stretch.
#16 Updated by Dominic Cleal about 4 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
- Legacy Backlogs Release (now unused) set to 63
Okay, thanks all. I'll close this for now and have updated the docs over at https://github.com/theforeman/theforeman.org/pull/477. We've got arm64 packages for the smart proxy at least, and will bring in Foreman core for the new OSes when we add them.