* help installing the correct version of bindgen
@ 2022-05-23 20:28 Nick Desaulniers
2022-05-24 12:08 ` Miguel Ojeda
0 siblings, 1 reply; 5+ messages in thread
From: Nick Desaulniers @ 2022-05-23 20:28 UTC (permalink / raw)
To: rust-for-linux, Miguel Ojeda
Re: https://github.com/KyleMayes/clang-sys/issues/138
via the documentation patch
https://lore.kernel.org/lkml/20220523020209.11810-21-ojeda@kernel.org/
So after a defconfig, I see in my .config:
CONFIG_HAVE_RUST=y
but not
RUST_IS_AVAILABLE=y
$ make LLVM=1 -j72 rustavailable
make: *** [Makefile:1802: rustavailable] Error 1
$ cargo install --locked --version $(scripts/min-tool-version.sh
bindgen) bindgen
...
Ignored package `bindgen v0.56.0` is already installed, use
--force to override
$ RUST_BACKTRACE=1 bindgen scripts/rust-is-available-bindgen-libclang.h
thread 'main' panicked at 'called `Result::unwrap()` on an `Err`
value: "could not run executable `/android0/llvm-project/clang`:
Permission denied (os error 13)"',
/usr/local/google/home/ndesaulniers/.cargo/registry/src/github.com-1ecc6299db9ec823/clang-sys-1.0.3/src/support.rs:165:58
stack backtrace:
0: rust_begin_unwind
at
/rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:584:5
1: core::panicking::panic_fmt
at
/rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/panicking.rs:143:14
2: core::result::unwrap_failed
at
/rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/result.rs:1749:5
3: clang_sys::support::run_clang
4: clang_sys::support::parse_version
5: clang_sys::support::Clang::find
6: bindgen::Builder::generate
7: bindgen::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a
verbose backtrace.
So it looks like bindgen is using clang-sys-1.0.3?
And it's finding my source code checkout of clang from the llvm-project.
Looking at https://github.com/rust-lang/rust-bindgen/tree/11ae35089e4748b7e2a6f50f6bef7709af72e724
specifically
https://github.com/rust-lang/rust-bindgen/blob/11ae35089e4748b7e2a6f50f6bef7709af72e724/Cargo.toml#L52
it just says "use version 1". But the latest version of clang-sys is
1.3.2 according to https://crates.io/crates/clang-sys.
What gives?
--
Thanks,
~Nick Desaulniers
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: help installing the correct version of bindgen
2022-05-23 20:28 help installing the correct version of bindgen Nick Desaulniers
@ 2022-05-24 12:08 ` Miguel Ojeda
2022-05-24 22:28 ` Nick Desaulniers
0 siblings, 1 reply; 5+ messages in thread
From: Miguel Ojeda @ 2022-05-24 12:08 UTC (permalink / raw)
To: Nick Desaulniers; +Cc: rust-for-linux, Miguel Ojeda
On Mon, May 23, 2022 at 10:28 PM Nick Desaulniers
<ndesaulniers@google.com> wrote:
>
> $ make LLVM=1 -j72 rustavailable
> make: *** [Makefile:1802: rustavailable] Error 1
I think we could have a message about `bindgen` being broken here if
calling it completely fails.
> So it looks like bindgen is using clang-sys-1.0.3?
> And it's finding my source code checkout of clang from the llvm-project.
>
> Looking at https://github.com/rust-lang/rust-bindgen/tree/11ae35089e4748b7e2a6f50f6bef7709af72e724
> specifically
> https://github.com/rust-lang/rust-bindgen/blob/11ae35089e4748b7e2a6f50f6bef7709af72e724/Cargo.toml#L52
> it just says "use version 1". But the latest version of clang-sys is
> 1.3.2 according to https://crates.io/crates/clang-sys.
>
> What gives?
`cargo install --locked` respects the Cargo.lock file, which indeed says 1.0.3:
https://github.com/rust-lang/rust-bindgen/blob/v0.56.0/Cargo.lock#L83
When you installed the latest bindgen as you mention in the issue,
then you should see 1.2.0 (if you used `--locked`):
https://github.com/rust-lang/rust-bindgen/blob/v0.59.2/Cargo.lock#L80
Hopefully this clarifies things a bit...
> And it's finding my source code checkout of clang from the llvm-project.
Have you tried tweaking the paths with
https://github.com/KyleMayes/clang-sys#environment-variables?
For instance, try to point it to the real executable with
CLANG_PATH=/android0/llvm-project/llvm/build/bin/clang etc.
Cheers,
Miguel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: help installing the correct version of bindgen
2022-05-24 12:08 ` Miguel Ojeda
@ 2022-05-24 22:28 ` Nick Desaulniers
2022-05-24 23:39 ` Miguel Ojeda
0 siblings, 1 reply; 5+ messages in thread
From: Nick Desaulniers @ 2022-05-24 22:28 UTC (permalink / raw)
To: Miguel Ojeda; +Cc: rust-for-linux, Miguel Ojeda
On Tue, May 24, 2022 at 5:08 AM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> On Mon, May 23, 2022 at 10:28 PM Nick Desaulniers
> <ndesaulniers@google.com> wrote:
> >
> > $ make LLVM=1 -j72 rustavailable
> > make: *** [Makefile:1802: rustavailable] Error 1
>
> I think we could have a message about `bindgen` being broken here if
> calling it completely fails.
There is a little bit of error handling; for my issue most of the
error message gets swallowed as shown above. With the below diff:
```
diff --git a/Makefile b/Makefile
index e1ca0ef1ac26..386fa6c9e462 100644
--- a/Makefile
+++ b/Makefile
@@ -1800,7 +1800,7 @@ $(DOC_TARGETS):
# "Is Rust available?" target
PHONY += rustavailable
rustavailable:
- $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust-is-available.sh -v
&& echo >&2 "Rust is available!"
+ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust-is-available.sh -v
&& echo >&2 "Rust is available!" || echo -e >&2 "Rust is not
available, try manually running\n'BINDGEN=bindgen RUSTC=rustc
scripts/rust-is-available.sh'" && exit 1
# Documentation target
#
diff --git a/scripts/rust-is-available.sh b/scripts/rust-is-available.sh
index 6bd395167d0f..9b54886d10f9 100755
--- a/scripts/rust-is-available.sh
+++ b/scripts/rust-is-available.sh
@@ -99,6 +99,9 @@ if [ "$1" = -v ] && [
"$rust_bindings_generator_cversion" -gt "$rust_bindings_ge
echo >&2 "***"
fi
+# Check that bindgen works.
+LC_ALL=C "$BINDGEN" $(dirname
$0)/rust-is-available-bindgen-libclang.h >/dev/null
+
# Check that the `libclang` used by the Rust bindings generator is suitable.
bindgen_libclang_version=$( \
LC_ALL=C "$BINDGEN" $(dirname
$0)/rust-is-available-bindgen-libclang.h 2>&1 >/dev/null \
```
I instead get a clearer picture of what's going wrong:
```
$ make LLVM=1 -j72 rustavailable
thread 'main' panicked at 'called `Result::unwrap()` on an `Err`
value: "could not run executable `/android0/llvm-project/clang`:
Permission denied (os error 13)"',
/usr/local/google/home/ndesaulniers/.cargo/registry/src/github.com-1ecc6299db9ec823/clang-sys-1.0.3/src/support.rs:165:58
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Rust is not available, try manually running
'BINDGEN=bindgen RUSTC=rustc scripts/rust-is-available.sh'
make: *** [Makefile:1803: rustavailable] Error 1
```
compare that with the initial output I pasted.
>
> > So it looks like bindgen is using clang-sys-1.0.3?
> > And it's finding my source code checkout of clang from the llvm-project.
> >
> > Looking at https://github.com/rust-lang/rust-bindgen/tree/11ae35089e4748b7e2a6f50f6bef7709af72e724
> > specifically
> > https://github.com/rust-lang/rust-bindgen/blob/11ae35089e4748b7e2a6f50f6bef7709af72e724/Cargo.toml#L52
> > it just says "use version 1". But the latest version of clang-sys is
> > 1.3.2 according to https://crates.io/crates/clang-sys.
> >
> > What gives?
>
> `cargo install --locked` respects the Cargo.lock file, which indeed says 1.0.3:
>
> https://github.com/rust-lang/rust-bindgen/blob/v0.56.0/Cargo.lock#L83
Ah, the lock file has the specific version. Ok
>
> When you installed the latest bindgen as you mention in the issue,
> then you should see 1.2.0 (if you used `--locked`):
>
> https://github.com/rust-lang/rust-bindgen/blob/v0.59.2/Cargo.lock#L80
If I apply:
```
diff --git a/scripts/min-tool-version.sh b/scripts/min-tool-version.sh
index f1e8358ec19a..64ba8f20de22 100755
--- a/scripts/min-tool-version.sh
+++ b/scripts/min-tool-version.sh
@@ -34,7 +34,7 @@ rustc)
echo 1.60.0
;;
bindgen)
- echo 0.56.0
+ echo 0.59.2
;;
*)
echo "$1: unknown tool" >&2
```
then do
$ cargo install --locked --version $(scripts/min-tool-version.sh
bindgen) bindgen
...
Replaced package `bindgen v0.56.0` with `bindgen v0.59.2`
(executable `bindgen`)
$ make LLVM=1 -j72 rustavailable
thread 'main' panicked at 'called `Result::unwrap()` on an `Err`
value: "could not run executable `/android0/llvm-project/clang`:
Permission denied (os error 13)"',
/usr/local/google/home/ndesaulniers/.cargo/registry/src/github.com-1ecc6299db9ec823/clang-sys-1.2.0/src/support.rs:202:58
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Rust is not available, try manually running
'BINDGEN=bindgen RUSTC=rustc scripts/rust-is-available.sh'
make: *** [Makefile:1803: rustavailable] Error 1
So it looks like the error is not fixed in 1.2.0 release of clang-sys.
Left more comments in
https://github.com/KyleMayes/clang-sys/issues/138.
>
> Hopefully this clarifies things a bit...
>
> > And it's finding my source code checkout of clang from the llvm-project.
>
> Have you tried tweaking the paths with
> https://github.com/KyleMayes/clang-sys#environment-variables?
>
> For instance, try to point it to the real executable with
> CLANG_PATH=/android0/llvm-project/llvm/build/bin/clang etc.
I'd like to find out why dependencies are borked first, before
resorting to env vars.
$ CLANG_PATH=$(which clang) make LLVM=1 -j72 rustavailable
./scripts/rust-is-available-bindgen-libclang.h:2:9: warning: clang
version 15.0.0 (git@github.com:llvm/llvm-project.git
28c9ba577295221a3206defc58cb940833d87205) [-W#pragma-messages], err:
false
Rust is available!
does seem to work though.
$ CLANG_PATH=$(which clang) make LLVM=1 -j72 -s
./scripts/rust-is-available-bindgen-libclang.h:2:9: warning: clang
version 15.0.0 (git@github.com:llvm/llvm-project.git
28c9ba577295221a3206defc58cb940833d87205) [-W#pragma-messages], err:
false
error[E0063]: missing field `uring_cmd` in initializer of
`bindings_raw::file_operations`
--> rust/kernel/file.rs:468:47
|
468 | const VTABLE: bindings::file_operations = bindings::file_operations {
|
^^^^^^^^^^^^^^^^^^^^^^^^^ missing `uring_cmd`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0063`.
make[1]: *** [rust/Makefile:396: rust/kernel.o] Error 1
make: *** [Makefile:1291: prepare] Error 2
better than nothing. :) (I just reapplied your series on top of
a6b450573b912316ad36262bfc70e7c3870c56d1)
--
Thanks,
~Nick Desaulniers
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: help installing the correct version of bindgen
2022-05-24 22:28 ` Nick Desaulniers
@ 2022-05-24 23:39 ` Miguel Ojeda
2022-05-25 0:30 ` Nick Desaulniers
0 siblings, 1 reply; 5+ messages in thread
From: Miguel Ojeda @ 2022-05-24 23:39 UTC (permalink / raw)
To: Nick Desaulniers; +Cc: rust-for-linux, Miguel Ojeda
On Wed, May 25, 2022 at 12:28 AM Nick Desaulniers
<ndesaulniers@google.com> wrote:
>
> There is a little bit of error handling; for my issue most of the
> error message gets swallowed as shown above. With the below diff:
Yeah, that is what I meant by having a message, or as you did, just
call it and let it print its own error. Thanks!
> So it looks like the error is not fixed in 1.2.0 release of clang-sys.
> Left more comments in
> https://github.com/KyleMayes/clang-sys/issues/138.
Thanks for following it up.
> I'd like to find out why dependencies are borked first, before
> resorting to env vars.
Definitely, but I suggested because it is good to know that solves it
so that there is not something else going on.
> does seem to work though.
Great -- thanks for trying it.
> error[E0063]: missing field `uring_cmd` in initializer of
> `bindings_raw::file_operations`
> ...
> better than nothing. :) (I just reapplied your series on top of
> a6b450573b912316ad36262bfc70e7c3870c56d1)
Yeah, a few hours ago ee692a21e9bf ("fs,io_uring: add infrastructure
for uring-cmd") got merged, which added a field to `struct
file_operations` so we need changes on the Rust side too.
If you try on top of v5.18 it should work, or if you apply a diff like
(may be wrapped):
```diff
diff --git a/rust/kernel/file.rs b/rust/kernel/file.rs
index e1b3b324bb3d..4c6513702cfa 100644
--- a/rust/kernel/file.rs
+++ b/rust/kernel/file.rs
@@ -534,6 +534,7 @@ impl<A: OpenAdapter<T::OpenData>, T: Operations>
OperationsVtable<A, T> {
} else {
None
},
+ uring_cmd: None,
write_iter: if T::TO_USE.write_iter {
Some(Self::write_iter_callback)
} else {
```
Cheers,
Miguel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: help installing the correct version of bindgen
2022-05-24 23:39 ` Miguel Ojeda
@ 2022-05-25 0:30 ` Nick Desaulniers
0 siblings, 0 replies; 5+ messages in thread
From: Nick Desaulniers @ 2022-05-25 0:30 UTC (permalink / raw)
To: Miguel Ojeda; +Cc: rust-for-linux, Miguel Ojeda
On Tue, May 24, 2022 at 4:39 PM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> On Wed, May 25, 2022 at 12:28 AM Nick Desaulniers
> <ndesaulniers@google.com> wrote:
> >
> > There is a little bit of error handling; for my issue most of the
> > error message gets swallowed as shown above. With the below diff:
>
> Yeah, that is what I meant by having a message, or as you did, just
> call it and let it print its own error. Thanks!
>
> > So it looks like the error is not fixed in 1.2.0 release of clang-sys.
> > Left more comments in
> > https://github.com/KyleMayes/clang-sys/issues/138.
>
> Thanks for following it up.
>
> > I'd like to find out why dependencies are borked first, before
> > resorting to env vars.
>
> Definitely, but I suggested because it is good to know that solves it
> so that there is not something else going on.
>
> > does seem to work though.
>
> Great -- thanks for trying it.
Aha! I think I have a fix for it:
https://github.com/KyleMayes/clang-sys/pull/142
--
Thanks,
~Nick Desaulniers
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-05-25 0:31 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-23 20:28 help installing the correct version of bindgen Nick Desaulniers
2022-05-24 12:08 ` Miguel Ojeda
2022-05-24 22:28 ` Nick Desaulniers
2022-05-24 23:39 ` Miguel Ojeda
2022-05-25 0:30 ` Nick Desaulniers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).