Broken build on arm in qcms because of nightly-only functions (vaddq_f32)
Categories
(Core :: Graphics: Color Management, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr78 | --- | unaffected |
firefox83 | --- | wontfix |
firefox84 | --- | wontfix |
firefox85 | --- | wontfix |
firefox86 | --- | wontfix |
firefox87 | --- | fix-optional |
People
(Reporter: msirringhaus, Unassigned)
References
(Regression)
Details
(Keywords: regression)
We are seeing a broken build on arm:
[ 1072s] 13:15.88 error[E0432]: unresolved imports `core::arch::arm::float32x4_t`, `core::arch::arm::int32x4_t`, `core::arch::arm::vaddq_f32`
[ 1072s] 13:15.89 --> gfx/qcms/src/transform_neon.rs:6:23
[ 1072s] 13:15.89 |
[ 1072s] 13:15.89 6 | use core::arch::arm::{float32x4_t, int32x4_t, vaddq_f32};
[ 1072s] 13:15.89 | ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ no `vaddq_f32` in `arch::arm`
[ 1072s] 13:15.89 | | |
[ 1072s] 13:15.89 | | no `int32x4_t` in `arch::arm`
[ 1072s] 13:15.89 | | help: a similar name exists in the module: `int8x4_t`
[ 1072s] 13:15.89 | no `float32x4_t` in `arch::arm`
All of those functions seem to be nightly-only, thus not available with stable rust compiler (https://doc.rust-lang.org/core/arch/arm/fn.vaddq_f32.html)
Updated•5 years ago
|
Reporter | ||
Comment 1•5 years ago
|
||
Looking at the code, aarch64 should be affected by the same thing.
Comment 2•5 years ago
|
||
We're able to build for ARM: https://treeherder.mozilla.org/jobs?repo=autoland&selectedTaskRun=E1uNbHvLRtmBuklDEKT0TA.0
qcms sets RUSTC_BOOTSTRAP=1
to get access to nightly only things: https://searchfox.org/mozilla-central/source/gfx/qcms/build.rs#2
Is there something different about your builds that causes this not to work?
Reporter | ||
Comment 3•5 years ago
|
||
Hm, we are currently building with rustc 1.46. Maybe that is too old? Couldn't find in the docs since when these functions are available.
Comment 4•5 years ago
|
||
1.46.0 should be new enough. Can you try compiling qcms standalone with your toolchain? i.e. cargo build
in the qcms directory.
Updated•5 years ago
|
Comment 5•5 years ago
|
||
Set release status flags based on info from the regressing bug 1666057
Updated•5 years ago
|
![]() |
||
Updated•5 years ago
|
Comment 6•5 years ago
|
||
(In reply to msirringhaus from comment #1)
Looking at the code, aarch64 should be affected by the same thing.
aarch64 is not affected. Tested with version 84.0.0 and 84.0.1.
Comment 7•5 years ago
|
||
(In reply to Jeff Muizelaar [:jrmuizel] from comment #2)
We're able to build for ARM: https://treeherder.mozilla.org/jobs?repo=autoland&selectedTaskRun=E1uNbHvLRtmBuklDEKT0TA.0
qcms sets
RUSTC_BOOTSTRAP=1
to get access to nightly only things: https://searchfox.org/mozilla-central/source/gfx/qcms/build.rs#2Is there something different about your builds that causes this not to work?
RUSTC_BOOTSTRAP=1
is set.
Build log:
[ 1224s] 15:56.02 Running `CARGO=/usr/bin/cargo CARGO_CRATE_NAME=qcms CARGO_MANIFEST_DIR=/home/abuild/rpmbuild/BUILD/firefox-84.0.1/gfx/qcms CARGO_PKG_AUTHORS='Jeff Muizelaar:Benoit Girard:Andrew Osmond' CARGO_PKG_DESCRIPTION='lightweight color management' CARGO_PKG_HOMEPAGE= CARGO_PKG_LICENSE=MIT CARGO_PKG_LICENSE_FILE= CARGO_PKG_NAME=qcms CARGO_PKG_REPOSITORY= CARGO_PKG_VERSION=0.1.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=1 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE= LD_LIBRARY_PATH='/home/abuild/rpmbuild/BUILD/obj/release/deps:/usr/lib' OUT_DIR=/home/abuild/rpmbuild/BUILD/obj/armv7-unknown-linux-gnueabihf/release/build/qcms-9a3ba5ee86f2d7de/out RUSTC_BOOTSTRAP=1 /usr/bin/rustc --crate-name qcms --edition=2018 gfx/qcms/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=2 -C panic=abort -Cembed-bitcode=no -C metadata=252e7b0a200b450d -C extra-filename=-252e7b0a200b450d --out-dir /home/abuild/rpmbuild/BUILD/obj/armv7-unknown-linux-gnueabihf/release/deps --target armv7-unknown-linux-gnueabihf -C linker=/home/abuild/rpmbuild/BUILD/firefox-84.0.1/build/cargo-linker -L dependency=/home/abuild/rpmbuild/BUILD/obj/armv7-unknown-linux-gnueabihf/release/deps -L dependency=/home/abuild/rpmbuild/BUILD/obj/release/deps --extern libc=/home/abuild/rpmbuild/BUILD/obj/armv7-unknown-linux-gnueabihf/release/deps/liblibc-67c9d94d6ae701d2.rmeta -C opt-level=2 --cap-lints warn -Cembed-bitcode=yes -C codegen-units=1`
[ 1225s] 15:56.69 error[E0432]: unresolved imports `core::arch::arm::float32x4_t`, `core::arch::arm::int32x4_t`, `core::arch::arm::vaddq_f32`
[ 1225s] 15:56.69 --> gfx/qcms/src/transform_neon.rs:6:23
[ 1225s] 15:56.69 |
[ 1225s] 15:56.69 6 | use core::arch::arm::{float32x4_t, int32x4_t, vaddq_f32};
[ 1225s] 15:56.69 | ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ no `vaddq_f32` in `arch::arm`
[ 1225s] 15:56.69 | | |
[ 1225s] 15:56.69 | | no `int32x4_t` in `arch::arm`
[ 1225s] 15:56.69 | | help: a similar name exists in the module: `int8x4_t`
[ 1225s] 15:56.69 | no `float32x4_t` in `arch::arm`
Comment 8•5 years ago
|
||
If I run cargo build --features c_bindings --target armv7-unknown-linux-gnueabihf
in gfx/qcms
it correctly builds for me. Does it build for you?
Comment 9•5 years ago
|
||
(In reply to Jeff Muizelaar [:jrmuizel] from comment #8)
If I run
cargo build --features c_bindings --target armv7-unknown-linux-gnueabihf
ingfx/qcms
it correctly builds for me. Does it build for you?
I get:
error: Package `qcms v0.1.0 (/mnt/firefox-84.0.1/gfx/qcms)` does not have these features: `c_bindings`
I I drop the c_bindings
part (and add --verbose
), I get:
Running `rustc --crate-name qcms --edition=2018 gfx/qcms/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=1 -C panic=abort -Cembed-bitcode=no -C debuginfo=2 -C debug-assertions=on -C metadata=41c65a762eba3519 -C extra-filename=-41c65a762eba3519 --out-dir /mnt/firefox-84.0.1/target/armv7-unknown-linux-gnueabihf/debug/deps --target armv7-unknown-linux-gnueabihf -C incremental=/mnt/firefox-84.0.1/target/armv7-unknown-linux-gnueabihf/debug/incremental -L dependency=/mnt/firefox-84.0.1/target/armv7-unknown-linux-gnueabihf/debug/deps -L dependency=/mnt/firefox-84.0.1/target/debug/deps --extern libc=/mnt/firefox-84.0.1/target/armv7-unknown-linux-gnueabihf/debug/deps/liblibc-a4c6e2d0c1645a32.rmeta`
error[E0432]: unresolved imports `core::arch::arm::float32x4_t`, `core::arch::arm::int32x4_t`, `core::arch::arm::vaddq_f32`
--> gfx/qcms/src/transform_neon.rs:6:23
|
6 | use core::arch::arm::{float32x4_t, int32x4_t, vaddq_f32};
| ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ no `vaddq_f32` in `arch::arm`
| | |
| | no `int32x4_t` in `arch::arm`
| | help: a similar name exists in the module: `int8x4_t`
| no `float32x4_t` in `arch::arm`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0432`.
error: could not compile `qcms`.
Caused by:
process didn't exit successfully: `rustc --crate-name qcms --edition=2018 gfx/qcms/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=1 -C panic=abort -Cembed-bitcode=no -C debuginfo=2 -C debug-assertions=on -C metadata=41c65a762eba3519 -C extra-filename=-41c65a762eba3519 --out-dir /mnt/firefox-84.0.1/target/armv7-unknown-linux-gnueabihf/debug/deps --target armv7-unknown-linux-gnueabihf -C incremental=/mnt/firefox-84.0.1/target/armv7-unknown-linux-gnueabihf/debug/incremental -L dependency=/mnt/firefox-84.0.1/target/armv7-unknown-linux-gnueabihf/debug/deps -L dependency=/mnt/firefox-84.0.1/target/debug/deps --extern libc=/mnt/firefox-84.0.1/target/armv7-unknown-linux-gnueabihf/debug/deps/liblibc-a4c6e2d0c1645a32.rmeta` (exit code: 1)
Updated•5 years ago
|
Comment 10•5 years ago
|
||
Ok, it looks like rust 1.48.0 is needed for building on armv7-unknown-linux-gnueabihf. 1.46.0 works with thumbv7neon-linux-androideabi which is what we use in CI.
If you want this to build with 1.46.0 you could disable the neon code.
Comment 11•5 years ago
|
||
(In reply to Jeff Muizelaar [:jrmuizel] from comment #10)
Ok, it looks like rust 1.48.0 is needed for building on armv7-unknown-linux-gnueabihf. 1.46.0 works with thumbv7neon-linux-androideabi which is what we use in CI.
If you want this to build with 1.46.0 you could disable the neon code.
How could I disable it? Neon support is autodetected and I did not find the option to force disable.
Updated•5 years ago
|
Comment 12•5 years ago
|
||
(In reply to Guillaume GARDET from comment #11)
(In reply to Jeff Muizelaar [:jrmuizel] from comment #10)
Ok, it looks like rust 1.48.0 is needed for building on armv7-unknown-linux-gnueabihf. 1.46.0 works with thumbv7neon-linux-androideabi which is what we use in CI.
If you want this to build with 1.46.0 you could disable the neon code.
How could I disable it? Neon support is autodetected and I did not find the option to force disable.
Is target_feature=neon false in your configuration?
Comment 13•4 years ago
|
||
I am now able to use rust 1.50 and the build succeeds with rust 1.50.
Updated•4 years ago
|
Description
•