-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Update Android RID graph to inherit from Unix #34789
Conversation
The previous Linux parent is incorrect as Linux libs won't work on Android
This is a breaking change over 3.1.
By this do you mean that they have a different binary format? What makes them not work? Can you imagine a lib built a particular way that would work? |
/cc @eerhardt who did this originally here: dotnet/corefx#28560 |
It's the same binary format, but Android uses (by default) the Bionic libc instead of musl/glibc, and it's not the most standards-compliant CRT. (It had some "subtle" bugs in the past, such as |
Using the same argument, |
No. |
What about IL that PInvokes to platform API? Would a single build work for Linux and Android or do people always need to special case. Remember: any reuse makes the heirarchy useful. You can always target both in the non-reuse case regardless of heirarchy. |
Yes, you can definitely imagine a single managed binary with PInvokes that works for both Linux and Android. |
I think people have to always a special case to make it clear. Using the opposite argument you are saying that packages like https://www.nuget.org/packages/Microsoft.AspNetCore.App.Runtime.linux-arm64/ should just work on Android? /cc @pjcollins |
See: #3075 (comment) In the early days of linux-musl, thinking of RID as strictly measure of binary compatibility was considered narrow from the perspective of "constituents of an RID-specific nuget package". If the nuget package contain asset which does not depend on CRT and yet Linux specific, that needs to be accommodated by nuget as well. It is another discussion that RIDs are not scalable: NuGet/Home#5862. |
I think we are just rehashing the arguments in the conversation starting here: That is the conversation that changed
100% agreed. And since |
They should both point to Linux parent if it was better understood by the tooling. Right now What is the correct fix? Do we have to scan all nuggets and create issues for them to create fake |
What makes you say this? Because of the way that one package decides to use RIDs? That's not what defines the RID. The RID is just a tool. You decide how you want to use it in each package / system that makes use of it. |
One problem that I see is our current tooling saying |
Why are you referencing AspNetCore at all? |
We aren't. Both NETCore.App and AspNet runtime packs are being downloaded if you have a |
Yes, that's an annoying shortcut in the SDK. E.g. If you publish self-contained console app on Windows, the SDK will download all runtime packs it knows about (ie both aspnetcore and windowsdesktop) for you even though they are guaranteed to be not used. There is an issue about it somewhere explaining why it was done this way. |
I had an offline conversation with Nick Guerrera on the same issue a few months back, and his response was:
cc @dsplaisted @wli3 - FYI |
I've filed the following issue to track figuring out how to handle the AspNetCore runtime pack for iOS and Android: dotnet/sdk#11289 |
@marek-safar, is this still relevant / are you still working on it? Thanks. |
I'm not working on this but it's still relevant. If there is enough support to split |
My suggestion if this isn't being actively worked on is to open an issue and close this PR. It can be reopened later. It's hard to deal with so many active PR's. |
The previous Linux parent is incorrect as Linux libs won't work on Android