Wireless module doesn't compile on recent Arch
cbiffle opened this issue · comments
Hi! Hoping to try this project out. It might be unmaintained, in which case please ignore me.
I'm unable to compile cnx on recent Arch because of (fundamentally) bugs in the older bindgen when processing headers from glibc 2.39. This will affect the other distros eventually.
The compilation failure is in iwlib-sys:
error: failed to run custom build command for `iwlib_sys v0.1.0`
Caused by:
process didn't exit successfully: `/home/cbiffle/src/cnx/target/debug/build/iwlib_sys-fae758f3245ddce5/build-script-build` (exit status: 101)
--- stdout
cargo:rustc-link-lib=iw
cargo:rerun-if-changed=wrapper.h
--- stderr
thread 'main' panicked at /home/cbiffle/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-0.53.3/src/ir/context.rs:894:9:
"__atomic_wide_counter_struct_(unnamed_at_/usr/include/bits/atomic_wide_counter_h_28_3)" is not a valid Ident
This appears to be due to bindgen 0.53 parsing header files wrong. (I agree with the error message -- that last line is certainly not a valid ident!) Something glibc has started doing between whatever version you're testing on, and version 2.39, has confused it.
It appears that iwlib-sys in git has been updated to use bindgen 0.65, which fixes the problem. However, it also doesn't seem to have made a release in about a year. I see that this project and iwlib-sys have some committers in common, so you might be able to fix this by either making an iwlib-sys release and bumping your dependency, or depending on its git repo directly.
However, doing either is going to require either removing the dependency on the (apparently unmaintained) sioctl package, or updating it, too, to use a more modern bindgen. Otherwise, they conflict and Cargo can't resolve the dependency graph.
By editing cnx's Cargo.toml to depend on iwlib from git, and removing the use of sioctl, I was able to get it to build.
I would be happy to accept a PR for the same.