-
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
Remove EOL Linux versions from runtime graph. #82223
Conversation
Tagging subscribers to this area: @dotnet/area-infrastructure-libraries Issue DetailsAnd, make it unnecessary to define RHEL minors by changing the Oracle Linux definitions. @wfurt @ViktorHofer @omajid ptal.
|
@@ -17,7 +17,7 @@ | |||
<RuntimeGroup Include="alpine"> | |||
<Parent>linux-musl</Parent> | |||
<Architectures>x64;x86;arm;armv6;arm64;s390x;ppc64le</Architectures> | |||
<Versions>3.6;3.7;3.8;3.9;3.10;3.11;3.12;3.13;3.14;3.15;3.16;3.17</Versions> | |||
<Versions>3.14;3.15;3.16;3.17</Versions> |
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.
Alpine 3.13 and previous are EOL 2022-11-01. (https://www.alpinelinux.org/releases/)
<Parent>ubuntu.16.04</Parent> | ||
<Architectures>x64</Architectures> | ||
<Versions>1;2;3</Versions> | ||
</RuntimeGroup> | ||
<RuntimeGroup Include="linuxmint.19"> |
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.
Linux Mint 18 and previous are EOL April 2021 (https://endoflife.software/operating-systems/linux/linux-mint, https://linuxmint.com/download_all.php)
</RuntimeGroup> | ||
|
||
<!-- all opensuse releases are independent --> | ||
<RuntimeGroup Include="opensuse"> | ||
<Parent>linux</Parent> | ||
<Architectures>x64</Architectures> | ||
<Versions>13.2;15.0;15.1;42.1;42.2;42.3</Versions> | ||
<TreatVersionsAsCompatible>false</TreatVersionsAsCompatible> |
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.
openSuse 15.3 is EOL 2022-12-31, openSuse 42.3 is EOL 2019-07-01 (https://en.opensuse.org/Lifetime#Discontinued_distributions)
<TreatVersionsAsCompatible>false</TreatVersionsAsCompatible> | ||
</RuntimeGroup> | ||
<RuntimeGroup Include="ubuntu"> | ||
<Parent>debian</Parent> | ||
<Architectures>x64;x86;arm;arm64</Architectures> | ||
<Versions>16.04;16.10;17.04;17.10;18.04;18.10;19.04;19.10;20.04;20.10;21.04;21.10;22.04</Versions> | ||
<Versions>16.04;18.04;20.04;22.04</Versions> |
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.
Removed versions are EOL 2022-07-14 and before (https://wiki.ubuntu.com/Releases).
And make it unnecessary to define RHEL minors by changing the Oracle Linux definitions.
@@ -86,7 +86,7 @@ | |||
<RuntimeGroup Include="fedora"> | |||
<Parent>linux</Parent> | |||
<Architectures>x64;arm64</Architectures> | |||
<Versions>23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38</Versions> | |||
<Versions>36;37;38</Versions> |
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.
Fedora 35 and previous are EOL 2022-12-13 (https://docs.fedoraproject.org/en-US/releases/eol/).
src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props
Outdated
Show resolved
Hide resolved
<Architectures>x64</Architectures> | ||
<Versions>8;8.0</Versions> | ||
<ApplyVersionsToParent>true</ApplyVersionsToParent> | ||
<Versions>0;1;2;3;4;6;6</Versions> |
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.
We need to list out the minors because the host doesn't map them to a major, like it does for RHEL.
The previous definition required those minors to also be defined for RHEL.
This updated definition makes that unnecessary.
My understanding was that removing RIDs is breaking backwards compatibility and simply not acceptable. If that's wrong, then cleaning up the RID graph sounds like a great idea! |
<Architectures>x64</Architectures> | ||
<Versions>8;8.0</Versions> | ||
<ApplyVersionsToParent>true</ApplyVersionsToParent> | ||
<Versions>0;1;2;3;4;6;6</Versions> |
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.
<Versions>0;1;2;3;4;6;6</Versions> | |
<Versions>0;1;2;3;4;5;6</Versions> |
new RuntimeDescription("rhel.10-arm64", new[] { "rhel.10", "rhel.9-arm64" }) | ||
new RuntimeDescription("rhel.10", new[] { "rhel" }), | ||
new RuntimeDescription("rhel.10-x64", new[] { "rhel.10", "rhel-x64" }), | ||
new RuntimeDescription("rhel.10-arm64", new[] { "rhel.10", "rhel-arm64" }) |
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.
The test changes are due combining the rhel 8 and 9 versions with TreatVersionsAsCompatible=false.
Alternatively, I can keep the split elements for 8 and 9 (without TreatVersionsAsCompatible), and only remove the minors.
That has no effect on the generated files, but the test can stay the same then.
Yes, it has been our policy so far. In particular, we are worried about nuget packages that are targeting out-of-support runtimes or OSes, but otherwise work just fine. |
I think there aren't many of these nuget packages, but I'm just guessing. Should .NET 8 be able to consume assets that were built for a specific distro that EOLed one or several years ago? This graph is flattened in a list that is added to the runtime ( |
cc @richlander I agree with you that the current RID graph growth is not sustainable. It is why we have been looking into deprecating it in parallel conversion. This change gives us a bit more breathing room in near term. As you have said, we should understand how many packages are potentially impacted. @marklio Would it be possible to get insights into how many packages on nuget.org target specific Unix distros (e.g. Ubuntu)? |
Also during each app's startup, host deserializes JSON contents. e.g. on Arch Linux x64, corehost trace shows that the non-portable build is working with 22 lines (left) vs. portable build which is working with 2160 lines (right): https://www.diffchecker.com/hBye38Tc/.
+1, and if possible, also how many are using versioned RID (base OS: ps - while typing this, just noticed that versioned RID for windows has different format: |
Added When you commit this breaking change:
Tagging @dotnet/compat for awareness of the breaking change. |
I'm going to close this. It can always be reopened later, if needed. |
And, make it unnecessary to define RHEL minors by changing the Oracle Linux definitions.
@wfurt @ViktorHofer @omajid ptal.