-
Notifications
You must be signed in to change notification settings - Fork 775
Bindgen as a workspace #2284
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
Bindgen as a workspace #2284
Conversation
ca31321 to
35aa2a2
Compare
|
☔ The latest upstream changes (presumably #2282) made this pull request unmergeable. Please resolve the merge conflicts. |
a5ee75e to
1130dd7
Compare
|
☔ The latest upstream changes (presumably #2287) made this pull request unmergeable. Please resolve the merge conflicts. |
1130dd7 to
ed90466
Compare
|
☔ The latest upstream changes (presumably 8b69ba0) made this pull request unmergeable. Please resolve the merge conflicts. |
ed90466 to
fa0c34a
Compare
|
☔ The latest upstream changes (presumably #2285) made this pull request unmergeable. Please resolve the merge conflicts. |
fa0c34a to
384aec2
Compare
|
This looks great, though it'd be great to not change the name of the CLI tool. It seems something like this would do? diff --git a/bindgen-cli/Cargo.toml b/bindgen-cli/Cargo.toml
index 2aef9b5b..ebeceacc 100644
--- a/bindgen-cli/Cargo.toml
+++ b/bindgen-cli/Cargo.toml
@@ -21,6 +21,10 @@ include = [
"build.rs",
]
+[[bin]]
+path = "src/main.rs"
+name = "bindgen"
+
[badges]
travis-ci = { repository = "rust-lang/rust-bindgen" }Also, we need to update the docs that mention |
emilio
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other thoughts:
- Maybe we can flatten the directory structure a bit by using
Cargo.tomlmagic (e.g. don't requirebindgen/src,bindgen-cli/srcand so on). - It seems some of the test scripts need a bit of work.
- The naming of the cli crate I believe should probably be kept, I think what I posted earlier should work but lmk if it doesn't for any reason.
Other than that, this looks pretty good!
| @@ -0,0 +1 @@ | |||
|
|
|||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Huh?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this seems to be a merge conflict casualty
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is not 🙃 the file is just there since 2017: https://github.com/rust-lang/rust-bindgen/blob/a900f8f863d1313ad76603234aaeea22bb9ba7b3/tests/expectations/struct_with_anon_struct_array_float.rs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apparently the file was created here and it was empty from the start. I'll remove it in an upcoming PR: fitzgen@b4895d9
384aec2 to
b231d7e
Compare
|
@emilio the |
emilio
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's get this merged sooner rather than later to avoid all the conflicts.
Can you squash your commits before landing please? Thank you for doing this!
emilio
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple last minute comments.
remove `clap` dependency 🎉 update the book installation instructions
8a87299 to
0296f9e
Compare
|
Hi everyone! If you are reading this message because this PR broke yours, I'm sorry 😬. For most of the cases it is enough to rebase against master as there won't be any conflicts, just files being moved here and there |
Update bindgen to v0.61.0. See: - rust-lang/rust-bindgen#2284
Update bindgen to v0.61.0. See: - rust-lang/rust-bindgen#2284 - artichoke/docker-artichoke-nightly#127
In LLVM 16, anonymous items may return names like `(unnamed union at ..)`
rather than empty names [1], which breaks Rust-enabled builds because
bindgen assumed an empty name instead of detecting them via
`clang_Cursor_isAnonymous` [2]:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
This was fixed in bindgen 0.62.0. Therefore, upgrade bindgen to
a more recent version, 0.65.1, to support LLVM 16.
Since bindgen 0.58.0 changed the `--{white,black}list-*` flags to
`--{allow,block}list-*` [3], update them on our side too.
In addition, bindgen 0.61.0 moved its CLI utility into a binary crate
called `bindgen-cli` [4]. Thus update the installation command in the
Quick Start guide.
Moreover, bindgen 0.61.0 changed the default functionality to bind
`size_t` to `usize` [5] and added the `--no-size_t-is-usize` flag
to not bind `size_t` as `usize`. Then bindgen 0.65.0 removed
the `--size_t-is-usize` flag [6]. Thus stop passing the flag to bindgen.
Finally, bindgen 0.61.0 added support for the `noreturn` attribute (in
its different forms) [7]. Thus remove the infinite loop in our Rust
panic handler after calling `BUG()`, since bindgen now correctly
generates a `BUG()` binding that returns `!` instead of `()`.
Link: llvm/llvm-project@19e984e [1]
Link: rust-lang/rust-bindgen#2319 [2]
Link: rust-lang/rust-bindgen#1990 [3]
Link: rust-lang/rust-bindgen#2284 [4]
Link: rust-lang/rust-bindgen@cc78b6f [5]
Link: rust-lang/rust-bindgen#2408 [6]
Link: rust-lang/rust-bindgen#2094 [7]
Signed-off-by: Aakash Sen Sharma <aakashsensharma@gmail.com>
Closes: #1013
Tested-by: Ariel Miculas <amiculas@cisco.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com
[ Reworded commit message. Mentioned the `bindgen-cli` binary crate
change, linked to it and updated the Quick Start guide. Re-added a
deleted "as" word in a code comment and reflowed comment to respect
the maximum length. ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
bindgen 0.65.1 will be the next version supported by the kernel [1]. Therefore, add it to the latest build environment. This also requires updating the name of the package from `bindgen` to `bindgen-cli`, since bindgen 0.61.0 moved its CLI utility into a binary crate called `bindgen-cli` [2]. Link: Rust-for-Linux/linux@08ab786 [1] Link: rust-lang/rust-bindgen#2284 [2] Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
bindgen 0.65.1 will be the next version supported by the kernel [1]. Therefore, add it to the latest build environment. This also requires updating the name of the package from `bindgen` to `bindgen-cli`, since bindgen 0.61.0 moved its CLI utility into a binary crate called `bindgen-cli` [2]. Link: Rust-for-Linux/linux@08ab786 [1] Link: rust-lang/rust-bindgen#2284 [2] Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
In LLVM 16, anonymous items may return names like `(unnamed union at ..)`
rather than empty names [1], which breaks Rust-enabled builds because
bindgen assumed an empty name instead of detecting them via
`clang_Cursor_isAnonymous` [2]:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
This was fixed in bindgen 0.62.0. Therefore, upgrade bindgen to
a more recent version, 0.65.1, to support LLVM 16.
Since bindgen 0.58.0 changed the `--{white,black}list-*` flags to
`--{allow,block}list-*` [3], update them on our side too.
In addition, bindgen 0.61.0 moved its CLI utility into a binary crate
called `bindgen-cli` [4]. Thus update the installation command in the
Quick Start guide.
Moreover, bindgen 0.61.0 changed the default functionality to bind
`size_t` to `usize` [5] and added the `--no-size_t-is-usize` flag
to not bind `size_t` as `usize`. Then bindgen 0.65.0 removed
the `--size_t-is-usize` flag [6]. Thus stop passing the flag to bindgen.
Finally, bindgen 0.61.0 added support for the `noreturn` attribute (in
its different forms) [7]. Thus remove the infinite loop in our Rust
panic handler after calling `BUG()`, since bindgen now correctly
generates a `BUG()` binding that returns `!` instead of `()`.
Link: llvm/llvm-project@19e984e [1]
Link: rust-lang/rust-bindgen#2319 [2]
Link: rust-lang/rust-bindgen#1990 [3]
Link: rust-lang/rust-bindgen#2284 [4]
Link: rust-lang/rust-bindgen@cc78b6f [5]
Link: rust-lang/rust-bindgen#2408 [6]
Link: rust-lang/rust-bindgen#2094 [7]
Signed-off-by: Aakash Sen Sharma <aakashsensharma@gmail.com>
Closes: Rust-for-Linux#1013
Tested-by: Ariel Miculas <amiculas@cisco.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com
[ Reworded commit message. Mentioned the `bindgen-cli` binary crate
change, linked to it and updated the Quick Start guide. Re-added a
deleted "as" word in a code comment and reflowed comment to respect
the maximum length. ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This reorganizes the repo into a virtual workspace. The main change is that
bindgenas a build-script library andbindgenas a command line utility have been split into thebindgenandbindgen-clicrates respectively.This means that
bindgenno longer depends onclap. Transforming it'scargo treefrom this:to this:
There are some questions that I'd like to resolve before moving forward with this:
quickcheckandexpectbut I'm not sure if my changes to the ci scripts are actually running everything they should.bindgen-cli? RIght now you can testcargo installrunning the commandbindgen-clibinary instead of justbindgen. I haven't found out how to change the name of the binary back to justbindgen.