-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
c-library dependency of linux RIDs #7318
Comments
Placing
|
It seems that it would make sense to have the C library (glibc, musl, possibly others in the future) in the RID graph, since binaries built targetting one of these libraries cannot be used on systems with the others. Originally, I was thinking that the glibc would be "implicit" (so we would have linux-x64 - meaning linux-glibc-x64 - and linux-musl-x64 as children of linux). But now seeing the larger picture, it seems it would be confusing. |
Adding
I read this more as a workaround and not as a feature request. It is not clear for me when someone would target |
@tmds I meant it for FreeBSD, NetBSD and other non-Linux flavors. |
@tmds, it was supposed to be |
That's how I read it :)
e.g. freebsd-libc, netbsd-libc, osx-libc? (libc refers to the BSD c-library)
|
I was really thinking that the libc would be only in the parent type (unix-libc). I think that e.g. FreeBSD or NetBSD etc. are always based on libc and there are no alternative forks using different libraries. So including the libc in the RID name for FreeBSD is redundant. But I am sure there are other Unix versions that we may support in the future and that use different C library. |
Like this?
Does a |
I think we need to pick a default that people get when they say "linux-x64". There is a tension between what perfectly represents the possibilities and a simple user experience when targeting linux. I want to have "linux-x64" mean something that runs on most linux's and we can document that if people want to run on a linux that isn't glibc, they can specify a more explicit rid. So, I think we should keep linux-x64 to mean glibc. This makes it a little less pretty for our RID graph but a lot simpler for a large set of end users targeting Linux. |
@tmds yes, that's what I meant. As for the unix-libc-x64, I really don't know if the binaries would be shareable. It really depends on the platforms. They may possibly use different executable format. |
@Petermarcu does that mean, something like this?
|
I hadn't thought of adding linux-x64 as a child of linux-glibc but that may be an interesting way to do it. This is more of what I was thinking where glibc was basically implied in the branch of the tree that wasn't specific to non-glibc families. Do you see pro's/con's of either approach?
|
No cons, pro is consistency. What do you think about using the same naming scheme for all branches and introduce a new RID for portable linux, e.g.
|
Not as big a fan of that for a couple reasons. Portable is an overloaded word and because I am also hoping we can create a "portable" story for musl and other c library families as well. It sounds like you feel that your proposal is more "consistent". Is that because it introduces architecture at the same level of the tree rather than one level higher for glibc? To me the rids that have no architecture (x64 in this example) aren't real. Meaning, it's very unlikely that they would ever be used in a concrete case. They are only for tying the tree together. Am I wrong in that thinking? I was talking to @janvorli earlier. In the end, I don't have a super strong opinion of whether linux-x64 is under linux-glibc or not. Nobody should ever specify linux-glibc and the ecosystem will not have any nuget packages with concrete assets in them for that rid so I am not sure why we need it in there but if it makes it easier for us as rid graph maintainers to see it there, that's really the only argument I can see for having it. As long as in the end, people specify linux-x64 to get x64 glibc based assets from packages, I'm fine :) |
My aim was to provide an alternative where
There are use-cases for these RIDs. But I they are perhaps a little to far-fetched to include these RIDs from the start. So, they can be left out and introduced later if there is a strong case for them. Leaving out the architecture-less c-library RIDs:
I understand the desire to tie
vs
When linux-x64 implies glibc, some things will need to change in the RID graph. For example, Alpine inherits linux-x64 atm. Alpine uses musl (and before 2014, it was using uclibc.) |
Yeah, it's both what they type on |
@Petermarcu 2.0 milestone? |
This issue also came up regarding RIDs for Android, and whether or not they should inherit from the generic |
With Android, bionic-libc would be the fourth supported standard libc after win-crt, glibc and musl-libc. |
@gkhanna79 @Petermarcu not fixing this for 2.0? |
ping @janvorli @jkotas @gkhanna79 @ellismg @Petermarcu @ericstj |
So far, this has been a discussion but is there any concrete plan around the work to be done? If so, can you please point to the PRs? I am not aware of any changes happening for RID fallback graph for this. |
@gkhanna79 We need a definite answer whether non-glibc based linux distros should move from linux-x64 to their own linux-x64-<clib>-rids. If so, the plan is to move them. |
Can you elaborate on what it means "move" them? Is it about updating the RID fallback graph to reflect so? |
Exactly. |
@mellinoe removed the alpine RIDs from the graph: dotnet/corefx#18948 |
FWIW, introducing the graph TD;
unix --> linux;
linux --> linux-glibc & linux-x64 & linux-arm64 & linux-musl;
linux-glibc --> linux-glibc-x64 & linux-glibc-arm64;
linux-musl --> linux-musl-x64 & linux-musl-arm64;
linux-x64 --> linux-glibc-x64 & linux-musl-x64;
linux-arm64 --> linux-glibc-arm64 & linux-musl-arm64;
|
Lifted from https://github.com/dotnet/coreclr/issues/5853#issuecomment-275344009
Perhaps it makes sense to introduce a
linux-glibc-x64
rid for this?This would:
\cc @janvorli @jkotas @gkhanna79
The text was updated successfully, but these errors were encountered: