-
Notifications
You must be signed in to change notification settings - Fork 701
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
Version 0.17 __ARM_ARCH error cross-compiling via manylinux2014-cross:aarch64 #1728
Comments
The BoringSSL code says:
So I think it is surprising to everybody that GCC 11 wouldn't define |
It seems like some versions of GCC define |
Grabbing the right GCC version, it is a lot older but still in the range of that BoringSSL comment:
Env:
|
:sigh: gcc (GCC) 4.8.5 is very old and I'm surprised it's worked for so long up to now. I don't think manylinux's strategy of using ancient decade-old GCC is the right way of solving the problem you have. It would be better to find a solution that uses modern compilers (Clang 17 or GCC 13) with old sysroots, which should have the same effect in supporting old systems but with modern performance. Especially ECC code in ring really needs a good, modern, compiler to work well. |
Perhaps instead pass the correct |
Yeah, looks like manylinux_2_28 based on
Just tried with the only v8 option (
|
Thanks, @bobzilladev. My guess is that the older manylinux probably has a sysroot that's older than GCC 4.8 itself, probably to aid in portability/backward compatibility. Unfortunately, it looks like it will be impractical to support compilers that don't support ACLE (i.e. that don't support |
An update to `ring` broke the maturin-extism builds. Tracked this down to [1]; the maintainers of `ring` don't intend to support linux sysroots that old. This PR updates the ARM Linux MUSL builds in particular to pull in a newer manylinux target. [1]: briansmith/ring#1728
An update to `ring` broke the maturin-extism builds. Tracked this down to [1]; the maintainers of `ring` don't intend to support linux sysroots that old. This PR updates the ARM Linux builds in particular to pull in a newer manylinux target. [1]: briansmith/ring#1728
An update to `ring` broke the maturin-extism builds. Tracked this down to [1]; the maintainers of `ring` don't intend to support linux sysroots that old. This PR updates the ARM Linux builds in particular to pull in a newer manylinux target. Tested on a [private fork](https://github.com/extism/dev-extism/actions/runs/6644247344) of the extism repo. [1]: briansmith/ring#1728
manylinux version aarch64 briansmith/ring#1728
What? The workflow was failing at the build stage for the Linux arch aarch64 Why? The reason was the new Cargo dependencies for reading a csv from http(s)/s3. In particular the ring transitive dependency: https://crates.io/crates/ring Solution: The solution is to drop the architectures armv7, s390x, and ppc64le, which are not supported by Datafusion or Polars. Switch the manylinux to `2_28` when the architecture is aarch64 as suggested by: briansmith/ring#1728 (comment) This change was also implemented by Datafusion https://github.com/apache/datafusion-python/blob/fe0738a9c0b536cdf20b0dc0455d14a0d16d2835/.github/workflows/build.yml#L218-L219
What? The workflow was failing at the build stage for the Linux arch aarch64 Why? The reason was the new Cargo dependencies for reading a csv from http(s)/s3. In particular the ring transitive dependency: https://crates.io/crates/ring Solution: The solution is to drop the architectures armv7, s390x, and ppc64le, which are not supported by Datafusion or Polars. Switch the manylinux to `2_28` when the architecture is aarch64 as suggested by: briansmith/ring#1728 (comment) This change was also implemented by Datafusion https://github.com/apache/datafusion-python/blob/fe0738a9c0b536cdf20b0dc0455d14a0d16d2835/.github/workflows/build.yml#L218-L219
Seeing this behavior change when
webpki
started including0.17
ofring
, an error about__ARM_ARCH
missing when cross-compiling fromx86_64 Ubuntu
toaarch64 manylinux2014
. Guessing the included GCC does not have ARM_ARCH defined, and the newer BoringSSL requires it.Adding this as a workaround gets compilation working again:
export CFLAGS_aarch64_unknown_linux_gnu="-D__ARM_ARCH=8"
22.04.2 LTS
x86_64ghcr.io/rust-cross/manylinux2014-cross:aarch64
gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
aarch64-unknown-linux-gnu-gcc (GCC) 4.8.5
The error:
Don't know if this is something that should have a fix put in for, or if ring-poc is holding it wrong, but it's a change from
0.16
to0.17
so wanted to bring it up. The project where this was found is usingmanylinux2014
to create highly-compatible distributable pre-compiled artifacts.The text was updated successfully, but these errors were encountered: