-
Notifications
You must be signed in to change notification settings - Fork 2
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 (CI) (GitHub Actions should work for this in 2025) #12
Comments
|
Tested in a machine with 32-bit ARM. The only changes required are in the |
I expected Travis-CI would be disabled by now, yet it still works. Weird. Maybe our usage is low enough.
|
I thought I’d built for ARM on GitHub actions before? I’ll check, maybe I was cross compiling. We could use BinaryBuilder.jl for building the KLUSolve. I can help set that up if you’d like. |
@kdheepak That could be it (cc). We could cross-compile here, but we still need some minimal testing for the other projects. Besides cc, I've seen a lot of mentions to self-hosted builders, the qemu-based actions.
Oh, that looks nice. Let me adjust the build scripts for ARM64 (maybe armv7 too?) and test a bit more first, but the examples for CMake builds seem simple enough. Someday (very low priority) I'd also like to add either Conan or vcpkg support for DSS C-API and KLUSolve. I think those use some cross-compilation too. By the way, for DSS C-API, Free Pascal can (or used to, for decades) cross-compile too. |
This could solve the 32-bit ARM issue: https://thegeeklab.de/posts/run-arm32-docker-daemon-on-arm64-servers/ I'm getting an SSD to test things better locally on a Raspberry Pi4 (for this and other projects), it should be here by Wednesday. |
@kdheepak Looks like any solution that can use CMake would work fine for KLUSolve. Our main issue is with the Pascal side of things, where the tools are scarce. For building DSS C-API, I add FPC to the base manylinux images from PyPA. If there's indeed a CI service with native compilation, we can use that. Otherwise, we could base the aarch64 binaries on the dockcross image I tested. I pushed the changes to the master and legacy branches (legacy is closer to the original KLUSolve). For dss-extensions/dss_capi#69, I tested both native and cross-compilation for AARCH64: GCC 10 on openSUSE 15.2, GCC 6.3 using the dockcross image (Debian 9, 2017). The cross-compiled binary was slightly slower (~1%), probably because GCC 6.3 is old. This was mostly a test, it's better to use new compilers anyway since C++ features are more mature in the future (from the docs, it seems BinaryBuilder supports this).
I'll try this later (just tested on my phone for the time being). One issue that I noticed is that some ARM32 images are very old. Probably not worth the trouble to distribute pre-built packages, but it would be good to test it from time to time, and keep the build scripts for anyone who needs those. |
For the time being, binaries added at https://github.com/dss-extensions/klusolve/releases/tag/1.0.0a1 so we can test everything. So far I haven't found any issue on the C/C++ side of things, most big and little issues are at the Pascal side. |
Investigate and potentially implement automated builds of ARM binaries.
The text was updated successfully, but these errors were encountered: