-
Notifications
You must be signed in to change notification settings - Fork 672
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
uclibc support #1603
uclibc support #1603
Conversation
Thanks! Changes LGTM, although I didn't run the tests. A few thoughts....
|
Thanks!
Yes, and I am doing so with corporate backing for a long-term product need. I would be glad to have this build running in CI to catch any errors early. I'm happy to make those changes if you point me in the right direction.
Yes, that is fine. I can do that once the main branch is ready for these changes. Want to let me know with a comment here? Or some other way? Thanks again! |
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.
I thought uclibc was used with RTOSes and microcontrollers, not Linux. Is it used with both?
src/sys/termios.rs
Outdated
@@ -776,7 +776,7 @@ libc_bitflags! { | |||
ALTWERASE; | |||
IEXTEN; | |||
#[cfg(not(target_os = "redox"))] | |||
EXTPROC; | |||
EXTPROC as tcflag_t; // uclibc gets the type wrong |
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.
Is this due to a bug in libc?
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.
Yes, it seems that libc
's uclibc
module doesn't have the right type for this item. We could accept this change here, pending a fix in libc
, or I could try to get a libc
change through first. Preferences?
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 fix it in libc first.
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.
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.
Just checking in here- I'm pushing through the changes in libc
but it's a bit slowed by some larger sibling changes. I am still definitely pursuing this PR :)
I believe it is used with embedded devices which run Linux. https://gogs.waldemar-brodkorb.de/oss/uclibc-ng rust-lang/libc has it alongside glibc and musl: https://github.com/rust-lang/libc/tree/master/src/unix/linux_like/linux |
uclibc: fix type of EXTPROC. All of the other related constants are of type `tcflag_t`, but this one was wrong. This change will fix the build of `nix`. (Ref nix-rust/nix#1603)
Also looking forward to uclibc support as I am trying to bring up |
@skrap with rust-lang/libc#2615 being submitted, I believe this can likely be rebased and squashed. Here's an example of how to build tier 3 targets in nix's CI: Lines 280 to 282 in 18d1f62
Line 29 in 18d1f62
|
Thanks! I'm working on this now. Unfortunately we'll need more changes to |
For now, I'm expecting CI to fail until:
|
Ref https://gitlab.com/qemu-project/qemu/-/issues/829 which is causing failures in |
134dd22
to
91e8eb3
Compare
OK, this PR should be good at this point! (Tempting fate by saying this before CI has completed...) |
The CI failures seem independent of these changes. Perhaps it's a new clippy lint? |
Was just responding about that. I'll investigate and fix it independently of this PR, and will try to look at this in the next day or two. |
rebased on master to resolve conflicted Cargo.toml file. |
bors r+ |
Thanks for the review and the merge! |
uclibc is a libc alternative (peer to glibc and musl) which is used in low-resource embedded linux applications.
It's supported in rust as the
target_env
of several tier 3 targets, butnix
currently doesn't build. This patch provides a few customizations to get uclibc building.To test:
Thanks for your consideration!