-
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
Stop using computed RID for RUNTIME_IDENTIFIER property #89598
Conversation
Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov Issue DetailsUpdate the property to use the host RID instead of the computed current RID. This also moves updates the shared helper to stop using the computed RID as the current RID - that is moved into the deps resolving, which needs it. Other places use the build-time RID. cc @dsplaisted
|
This is a breaking change, right?
That the value is different on source-build .NET (returns the non-portable build rid) is likely to be a source of bugs. Don't we want to keep |
I don't know the details of the code that's changing and whether this change would return a distro-specific RID for source-built versions of .NET. I believe the right thing would be for it to do so. We are switching to a trimmed-down RID graph that won't by have distro-specific RIDs, except that source-built versions of the SDK should have RIDs specific to the distros they were built for: dotnet/sdk#34279. However, with the current behavior, |
846137a
to
dfd0fb6
Compare
I thought of |
I agree. And I agree with @dsplaisted that the default stated RID should be one that the SDK was built for. |
Yes. Since it was introduced this returned a value that identified the Linux distro at runtime. With this change, it will return a value that identifies the platform the runtime was built for, causing the identifier to be a portable rid for Microsoft builds (e.g.
Unlike the
The SDK is the driver for this change. And while that may be worth the change, you should treat it as a breaking change, since by lack of any other API that allows to identify a distro, users are probably using it that way too. |
I assume that in most cases the SDK can (should?) use the rid from |
Added When you commit this breaking change:
Tagging @dotnet/compat for awareness of the breaking change. |
@dsplaisted shouldn't the SDK always be using |
I don't think this affects the SDK behavior itself, but it is breaking SDK tests. The tests expect that the value returned by The SDK and the runtime are changing so that a bunch of RuntimeIdentifiers are no longer valid. This PR makes a part of the runtime more consistent with the changes in the SDK and other parts of the runtime. All of this needs to be documented as potentially breaking changes, but I think that making things consistent with this PR is the right thing. |
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.
LGTM - just minor comments
…into noComputedRid
Comments based on the associated change doc pr:
fwiw, I think this change is bad because unless you're using Another concern is that this removes the only API that returns a distro identifier:
This returns the Linux kernel version. It's not the distro version.
This is a description, not an identifier. cc @richlander |
I am in favor of this change but some examples of what it could break and the changes that would be necessary can be seen in @elinor-fung's commits in this PR: dotnet/sdk#34349 |
Update the property to use the host RID instead of the computed current RID. This is in line with the .NET 8 change for selecting RID-specific assets using the host RID instead of a computed RID.
This also moves updates the shared helper to stop using the computed RID as the current RID - that is moved into the deps resolving, which needs it. Other places use the build-time RID.
This means that
RuntimeInformation.RuntimeIdentifier
(populated by theRUNTIME_IDENTIFIER
property) will return the RID of platform for which the runtime is built, rather than a RID that is computed at runtime (or a fallback if it could not be computed). For example, for a portable build, on Windows 11, it will bewin-x64
instead ofwin10-x64
or on Ubuntu 20.04linux-x64
instead ofubuntu.20.04-x64
.cc @dsplaisted