Skip to content
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

Closed
wants to merge 5 commits into from
Closed

Conversation

tmds
Copy link
Member

@tmds tmds commented Feb 16, 2023

And, make it unnecessary to define RHEL minors by changing the Oracle Linux definitions.

@wfurt @ViktorHofer @omajid ptal.

@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Feb 16, 2023
@ghost
Copy link

ghost commented Feb 16, 2023

Tagging subscribers to this area: @dotnet/area-infrastructure-libraries
See info in area-owners.md if you want to be subscribed.

Issue Details

And, make it unnecessary to define RHEL minors by changing the Oracle Linux definitions.

@wfurt @ViktorHofer @omajid ptal.

Author: tmds
Assignees: -
Labels:

area-Infrastructure-libraries, community-contribution

Milestone: -

@@ -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>
Copy link
Member Author

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">
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

</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>
Copy link
Member Author

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>
Copy link
Member Author

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>
Copy link
Member Author

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/).

<Architectures>x64</Architectures>
<Versions>8;8.0</Versions>
<ApplyVersionsToParent>true</ApplyVersionsToParent>
<Versions>0;1;2;3;4;6;6</Versions>
Copy link
Member Author

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.

@omajid
Copy link
Member

omajid commented Feb 16, 2023

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>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<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" })
Copy link
Member Author

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.

@wfurt
Copy link
Member

wfurt commented Feb 16, 2023

AFAIK we do not remove olde releases. While they may be EOS or EOL people still may use them. That also keeps it more consistent with old .NET releases.
cc: @ericstj @jkotas for more thought.

@jkotas
Copy link
Member

jkotas commented Feb 16, 2023

AFAIK we do not remove olde releases.

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.

@tmds
Copy link
Member Author

tmds commented Feb 16, 2023

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 (Microsoft.NETCore.App.deps.json). For .NET 7, the list is over 2k lines.

@jkotas
Copy link
Member

jkotas commented Feb 16, 2023

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)?

@am11
Copy link
Member

am11 commented Feb 16, 2023

This graph is flattened in a list that is added to the runtime (Microsoft.NETCore.App.deps.json). For .NET 7, the list is over 2k lines.

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/.

Would it be possible to get insights into how many packages on nuget.org target specific Unix distros (e.g. Ubuntu)?

+1, and if possible, also how many are using versioned RID (base OS: linux-x64 vs. distro-specific: ubuntu-x64 vs. distro-specific & versioned: ubuntu.18.04-x64.

ps - while typing this, just noticed that versioned RID for windows has different format: win10-x64 instead of win.10-x64 like all other platforms with versions in the graph. 😕

@richlander richlander mentioned this pull request Mar 10, 2023
@ericstj ericstj added the breaking-change Issue or PR that represents a breaking API or functional change over a prerelease. label Mar 27, 2023
@ghost ghost added the needs-breaking-change-doc-created Breaking changes need an issue opened with https://github.com/dotnet/docs/issues/new?template=dotnet label Mar 27, 2023
@ghost
Copy link

ghost commented Mar 27, 2023

Added needs-breaking-change-doc-created label because this PR has the breaking-change label.

When you commit this breaking change:

  1. Create and link to this PR and the issue a matching issue in the dotnet/docs repo using the breaking change documentation template, then remove this needs-breaking-change-doc-created label.
  2. Ask a committer to mail the .NET Breaking Change Notification DL.

Tagging @dotnet/compat for awareness of the breaking change.

@tmds
Copy link
Member Author

tmds commented Apr 13, 2023

I'm going to close this. It can always be reopened later, if needed.

@tmds tmds closed this Apr 13, 2023
@ghost ghost locked as resolved and limited conversation to collaborators May 13, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-Infrastructure-libraries breaking-change Issue or PR that represents a breaking API or functional change over a prerelease. community-contribution Indicates that the PR has been added by a community member needs-breaking-change-doc-created Breaking changes need an issue opened with https://github.com/dotnet/docs/issues/new?template=dotnet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants