Skip to content
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

Linux arm64 / aarch64 builds are broken on latest release #49

Closed
girlbossceo opened this issue Mar 29, 2024 · 3 comments · Fixed by #50
Closed

Linux arm64 / aarch64 builds are broken on latest release #49

girlbossceo opened this issue Mar 29, 2024 · 3 comments · Fixed by #50

Comments

@girlbossceo
Copy link
Contributor

girlbossceo commented Mar 29, 2024

PR #47 introduced the following error at least on aarch64-unknown-linux-gnu targets:

(https://github.com/girlbossceo/conduwuit/actions/runs/8475065156/job/23222525393#step:17:6601)

CI logs
conduit-deps-static-aarch64-unknown-linux-musl>     Checking rust-rocksdb v0.23.1 (https://github.com/zaidoon1/rust-rocksdb?branch=master#88d642c6)
conduit-deps-static-aarch64-unknown-linux-musl> error[E0308]: mismatched types
conduit-deps-static-aarch64-unknown-linux-musl>     --> /nix/store/vrdadhvgxnbnlaxjbg74c8faqvdg505i-vendor-cargo-deps/b9baf4514c8548ebdef5fb6bd1619f75caaa9082ac9b99d4342b80e51d287283/rust-rocksdb-0.23.1/src/db_options.rs:959:17
conduit-deps-static-aarch64-unknown-linux-musl>      |
conduit-deps-static-aarch64-unknown-linux-musl> 955  |             ffi::rocksdb_get_options_from_string(
conduit-deps-static-aarch64-unknown-linux-musl>      |             ------------------------------------ arguments to this function are incorrect
conduit-deps-static-aarch64-unknown-linux-musl> ...
conduit-deps-static-aarch64-unknown-linux-musl> 959  |                 &mut err_p,
conduit-deps-static-aarch64-unknown-linux-musl>      |                 ^^^^^^^^^^ expected `*mut *mut u8`, found `&mut *mut i8`
conduit-deps-static-aarch64-unknown-linux-musl>      |
conduit-deps-static-aarch64-unknown-linux-musl>      = note:    expected raw pointer `*mut *mut u8`
conduit-deps-static-aarch64-unknown-linux-musl>              found mutable reference `&mut *mut i8`
conduit-deps-static-aarch64-unknown-linux-musl> note: function defined here
conduit-deps-static-aarch64-unknown-linux-musl>     --> /build/source/target/aarch64-unknown-linux-musl/release/build/rust-librocksdb-sys-f3a679eefe2c56b0/out/bindings.rs:4529:12
conduit-deps-static-aarch64-unknown-linux-musl>      |
conduit-deps-static-aarch64-unknown-linux-musl> 4529 |     pub fn rocksdb_get_options_from_string(
conduit-deps-static-aarch64-unknown-linux-musl>      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conduit-deps-static-aarch64-unknown-linux-musl> error[E0308]: mismatched types
conduit-deps-static-aarch64-unknown-linux-musl>    --> /nix/store/vrdadhvgxnbnlaxjbg74c8faqvdg505i-vendor-cargo-deps/b9baf4514c8548ebdef5fb6bd1619f75caaa9082ac9b99d4342b80e51d287283/rust-rocksdb-0.23.1/src/db_options.rs:968:38
conduit-deps-static-aarch64-unknown-linux-musl>     |
conduit-deps-static-aarch64-unknown-linux-musl> 968 |                 err = CStr::from_ptr(err_p).to_str().unwrap().to_owned();
conduit-deps-static-aarch64-unknown-linux-musl>     |                       -------------- ^^^^^ expected `*const u8`, found `*mut i8`
conduit-deps-static-aarch64-unknown-linux-musl>     |                       |
conduit-deps-static-aarch64-unknown-linux-musl>     |                       arguments to this function are incorrect
conduit-deps-static-aarch64-unknown-linux-musl>     |
conduit-deps-static-aarch64-unknown-linux-musl>     = note: expected raw pointer `*const u8`
conduit-deps-static-aarch64-unknown-linux-musl>                found raw pointer `*mut i8`
conduit-deps-static-aarch64-unknown-linux-musl> note: associated function defined here
conduit-deps-static-aarch64-unknown-linux-musl>    --> /nix/store/jl04nvlz2w5sq2wa55xq7jh4i1z5fbbw-rust-1.75.0/lib/rustlib/src/rust/library/core/src/ffi/c_str.rs:262:25
conduit-deps-static-aarch64-unknown-linux-musl>     |
conduit-deps-static-aarch64-unknown-linux-musl> 262 |     pub const unsafe fn from_ptr<'a>(ptr: *const c_char) -> &'a CStr {
conduit-deps-static-aarch64-unknown-linux-musl>     |                         ^^^^^^^^
conduit-deps-static-aarch64-unknown-linux-musl> For more information about this error, try `rustc --explain E0308`.
conduit-deps-static-aarch64-unknown-linux-musl> error: could not compile `rust-rocksdb` (lib) due to 2 previous errors
error: builder for '/nix/store/mmly078sngywj4ddzn6n0s6cczgx78kl-conduit-deps-static-aarch64-unknown-linux-musl-0.7.0+conduwuit-0.1.10.drv' failed with exit code 101;
       last 25 log lines:
       >              found mutable reference `&mut *mut i8`
       > note: function defined here
       >     --> /build/source/target/aarch64-unknown-linux-musl/release/build/rust-librocksdb-sys-f3a679eefe2c56b0/out/bindings.rs:4529:12
       >      |
       > 4529 |     pub fn rocksdb_get_options_from_string(
       >      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       >
       > error[E0308]: mismatched types
       >    --> /nix/store/vrdadhvgxnbnlaxjbg74c8faqvdg505i-vendor-cargo-deps/b9baf4514c8548ebdef5fb6bd1619f75caaa9082ac9b99d4342b80e51d287283/rust-rocksdb-0.23.1/src/db_options.rs:968:38
       >     |
       > 968 |                 err = CStr::from_ptr(err_p).to_str().unwrap().to_owned();
       >     |                       -------------- ^^^^^ expected `*const u8`, found `*mut i8`
       >     |                       |
       >     |                       arguments to this function are incorrect
       >     |
       >     = note: expected raw pointer `*const u8`
       >                found raw pointer `*mut i8`
       > note: associated function defined here
       >    --> /nix/store/jl04nvlz2w5sq2wa55xq7jh4i1z5fbbw-rust-1.75.0/lib/rustlib/src/rust/library/core/src/ffi/c_str.rs:262:25
       >     |
       > 262 |     pub const unsafe fn from_ptr<'a>(ptr: *const c_char) -> &'a CStr {
       >     |                         ^^^^^^^^
       >
       > For more information about this error, try `rustc --explain E0308`.
       > error: could not compile `rust-rocksdb` (lib) due to 2 previous errors

Initially I thought it was just a Nix thing because my project's CI builds with Rust 1.75.0 (our MSRV), but I was able to reproduce it on a Debian 12 aarch64 VM using the latest Rust stable (stable-aarch64-unknown-linux-gnu). x86_64 builds seem to be fine for some reason.

I already notified them about the error, but I'm not sure if you know why or how this could be fixed? There are some RocksDB options not available through the FFI that we would like to use so fixing it is preferable.

@zaidoon1
Copy link
Owner

odd, I'll investigate this further, I'll also update the CI to run the builds/tests on arm as well to catch things like this in the future.

@zaidoon1
Copy link
Owner

zaidoon1 commented Mar 30, 2024

I've published a new version with the fix (tested locally on arm) and yanked the previous bad version. It looks like CI will take some time as github actions doesn't support ARM for now? I'll see what exists today...

@girlbossceo
Copy link
Contributor Author

Looks like this worked, aarch64 and x86_64 builds now work. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants