-
Notifications
You must be signed in to change notification settings - Fork 36
aarch64 wheel not working; cmake binary segfault #115
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
Comments
Thanks for contributing 🙏
Great, this is preferred.
Perhaps qemu can help here?
Thanks.
It ended up that we had to use a native build instead of a dockcross build, at least for now, as discussed in #96 . It would be nice if we can cross-compile the wheel, but a CI / CD setup to build test and deploy a native wheel would be a step up 🚀
There should not be any licensing issues with bundling the libstdc++, openssl, or cmake dynamic libraries in the wheel.
Sounds great, and migration of open source projects to travis-ci.com seems to encouraged now. @jcfr what do you think? |
Yes, it definitely could, and I was successful in my attempts to use it. However, because of the bug with dockcross, we can't produce a compliant wheel, so building the whole project natively seemed like a better option to me.
Excellent. I'm working on getting the necessary legal approvals from AWS to make my contribution. Expect it soon. |
@thewtex Would you take a quick look at the Windows build failures on Appveyor for #116 ? I don't understand how the changes that I made would have affected the windows build in the way that it's failing. I'm wondering if it's some change in an upstream dependency. Is it possible to retry the build on the current head of master to make sure they are passing there? Additionally, the arm64 build sometimes times out on Travis-CI. This problem would be fixed by switching to Travis-CI.com and using |
I am not sure why it is failing now. This issue appears to be related to picking up Python 2 / an extension build. While it is supposed to be a Python 3 build: Environment: APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, PYTHON_DIR=C:\Python37, PYTHON_VERSION=3.7.x, PYTHON_ARCH=64, BLOCK=0, the scikit-ci installation is using Python 2 and failing in the compilation of the ruamel.ordereddict dependency.
A few ideas how to move forward:
I will defer to @jcfr on how he would like to proceed.
Sounds good to me. I sent a request to install the Travis-CI.com GitHub App on this repository, but @jcfr has to approve to enable. ✔️ |
Thanks for the suggestions. I was able to figure out how to fix the AppVeyor build. I'm not sure why it spontaneously broke, but it's passing now. |
I'm working on a contribution to fix this problem, so I want to engage the community to see which solutions are acceptable.
After installing
cmake
frompip
, the cmake binary does not work, failing with a segmentation fault. Below is a test on Ubuntu 20.04, arm64:After some debugging I discovered this problem could be fixed by dynamically linking against
libstdc++
andlibgcc
instead of statically linking. I changed these lines:cmake-python-distributions/CMakeLists.txt
Lines 189 to 191 in 1f845d0
to
This fixed the problem for Ubuntu 20.04. The wheel works correctly after this change. However, testing in the manylinux2014-aarch64, I discovered that the
cmake
binary was linked against newer versions than were available oflibcrypto
andlibssl
. This problem could be fixed with theauditwheel
tool, but this had two new problems: 1. theauditwheel
tool couldn't be run in the cross compiler container so it has to be run in a separate emulated container or natively. 2. After I switched to run natively on an Arm system,auditwheel
refused to repair the wheel because of linkage withglibc
2.25.From there I discovered that the dockcross container used to cross compile the arm64 wheel is using libraries that aren't compliant with the PEP599 spec, so I reported this bug to dockcross.
Finally, I am working on a change to use Travis-CI to do a native build for Linux on Arm with the manylinux2014-aarch64 container. Since the build uses
scikit-build
which itself depends oncmake
, it must first download, build, and installcmake
before it can be built again for the wheel.I have the following questions to the community:
auditwheel
bundles the dynamic libraries with the wheel. Does this present any licensing problems?The text was updated successfully, but these errors were encountered: