-
-
Notifications
You must be signed in to change notification settings - Fork 218
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
error while loading shared libraries: libcrypt-06cd74a6.so.2 on aarch64 #2641
Comments
I just tested the wheel you linked ( By the way, for reproduction, the way I test using GitHub Actions is roughly this (but actually here): name: Build Cross Deb
on: workflow_dispatch
jobs:
aarch64_job:
runs-on: ubuntu-22.04
name: Build on ${{ matrix.distro }} ${{ matrix.arch }}
strategy:
matrix:
include:
- arch: aarch64
distro: ubuntu22.04
steps:
- name: Check-out repository
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-tags: 'true'
- uses: uraimo/run-on-arch-action@v2
name: Compile aarch64
id: runcmd
with:
arch: aarch64
distro: ubuntu22.04
githubToken: ${{ github.token }}
dockerRunArgs: |
--volume "${PWD}:/myproject"
shell: /bin/sh
install: |
apt-get update -q -y
apt-get install -q -y --allow-downgrades python3-pip
run: |
cd myproject
python3 -m pip install --upgrade cx_Freeze-7.3.0.dev0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
# Use cx_Freeze to make a build
export PATH="/usr/local/bin:$PATH"
./mybuildscript.sh
# Do a test run (Actions eats the output without the || true)
timeout 10s ./executable || true |
I checked your logs. So, use pip install --pre |
For the actual run, I didn't remove the
This should already be sufficient. However, I'll make another run that is completely sterile so there is not even any mention of another version. EDIT: Here is the "sterile" version without any overwrites and with |
I had some spare time so I dedicated a repo to this https://github.com/qstokkink/cxFreeze2641 I have some odd results that I hope make sense to you (I'm not sure what to make of this). I installed First methodThe first method was to install the latest development build, as per the instructions in the
This fails (https://github.com/qstokkink/cxFreeze2641/actions/runs/11531913003/job/32103146381) with the expected:
Second methodI also tried manually building.
This works (https://github.com/qstokkink/cxFreeze2641/actions/runs/11531949742/job/32103214597). I'm not sure what to make of this. Was the latest development wheel simply out of date? |
The story is a bit long, but I'll make it short. I managed to test using 'run-on-arch-action' and saw that in the case of aarch64 the issue continues, but I can't debug. I tried to use qemu/podman on my machine, but it got stuck on a file that it doesn't recognize as a dynamic library (not a dynamic executable). In the amd64 version it recognizes it, but in the arm64 version it doesn't, so I think the error may be related to patchelf, which, by the way, has been causing me some errors.
Yes, there was a change in permissions on github and I'm not able to generate them anymore and I haven't had time to research, given the priorities.
Yes, this way it works, if you intend to run only on that machine or with the same packages installed. Until we can solve this, you must update your workaround. Copy the libcrypt library that is distributed with cx_Freeze, it is located in cx_Freeze/bases/lib. |
Thanks for the info! I think I understand the problem now: the issue is the wheel build process. However, first things first, I updated my opening post to quote your recommended workaround. So far, I've only tried to create a clean reproducible problem (feel free to copy the Action into your own CI, by the way). Now, do you want help with a solution? Or, would you rather fix this yourself. EDIT: To prove that the wheel build is the culprit, I copied in your |
If I tell you that the error is not where I thought it would be. I decided to install a VM (KVM/qemu), which is much slower than a container, to clear up a doubt and boom: it worked without problems. In other words, the problem is the emulation used. If you have a way to test it on a real machine or a VM to confirm. I have an idea of how to fix it, avoiding using ldd to detect dependencies. I was already thinking about it, using patchelf for this too, but it has some bugs. So I'll have to test other options first. |
The reason I posted this issue is because my project had an issue reported by a real user. So, technically, yes I have a way to confirm. However, I'd rather avoid sending testing code to users. First, I'd like to see the
|
[EDIT] tl;dr "official" workaround (posted below):
I used
Ubuntu 22.04 aarch64
to create a build, which also works onUbuntu 22.04 amd64
with the same setup. However, when running a build produced onUbuntu 22.04 aarch64
specifically I get the following error.cx_Freeze-7.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
from pip)My solution
To solve this, I had to do two things. First, copy
libcrypt.so.1
into the local directory aslibcrypt-06cd74a6.so.2
:Second, I added the following to the
build_exe
include_files
entry:For now my solution works. However, I guess my approach is very fragile and I think it would be better if this got solved on your side.
The text was updated successfully, but these errors were encountered: