Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
/ corefx Public archive

Add missing RIDs for all supported OSes #26439

Merged
merged 9 commits into from
Jan 23, 2018
Merged

Add missing RIDs for all supported OSes #26439

merged 9 commits into from
Jan 23, 2018

Conversation

bording
Copy link
Contributor

@bording bording commented Jan 19, 2018

This adds all of the RIDs that were identified as missing in #23699. This covers all of the OSes listed in https://github.com/dotnet/core/blob/master/release-notes/2.0/2.0-supported-os.md

In addition to there being versions missing for existing RIDs, there was no RID defined for SUSE Enterprise Linux at all, so I added that as well, mirroring the opensuse section.

@weshaggard I wasn't sure what the correct branch for this should be, so I went ahead and based it against master. Let me know if it should be something else, and I'll fix it up.

@dnfclas
Copy link

dnfclas commented Jan 19, 2018

CLA assistant check
All CLA requirements met.

@@ -111,6 +118,12 @@
<Versions>16.04;16.10</Versions>
<TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>
</RuntimeGroup>
<RuntimeGroup Include="ubuntu">
Copy link
Member

Choose a reason for hiding this comment

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

Why aren't these versions just added to the 16.x versions of Ubuntu?

Copy link
Contributor Author

@bording bording Jan 19, 2018

Choose a reason for hiding this comment

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

Because of how the file was originally structured. It's using <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible> and has the ubuntu releases are compatible on major versions comment. So I assume it's split to maintain that.

Copy link
Member

Choose a reason for hiding this comment

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

Actually TreatVersionsAsCompatible=false makes all versions independent. The reason for the split between 14+15 and 16 was that 16 added a new architecture: arm64. Since you aren't adding a new arch you can just include this with the 16.x versions. You can try it and examine the diff to prove that it doesn't make a difference in the generated files.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ericstj I'll update the PR with that change then.

Copy link
Member

@ericstj ericstj Jan 19, 2018

Choose a reason for hiding this comment

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

Also I think that comment ubuntu comment about major versions is incorrect 🙁. I double checked and this was true before my change to autogenerate as well. If you'd like you can delete it or correct it to say all ubuntu versions are independent.

@weshaggard
Copy link
Member

@richlander @Petermarcu @leecow can you guys please take a look to see if there are other distro's or versions we need to add to the RID graph?

@weshaggard I wasn't sure what the correct branch for this should be, so I went ahead and based it against master. Let me know if it should be something else, and I'll fix it up.

master branch is the correct one at this point.

@weshaggard weshaggard requested a review from ericstj January 19, 2018 01:50
@bording
Copy link
Contributor Author

bording commented Jan 19, 2018

master branch is the correct one at this point.

Possibly too soon to ask, but what are the odds of these changes also making it into a 2.0.x servicing release? It would be nice to not have to wait for 2.1.

<TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>
</RuntimeGroup>

<RuntimeGroup Include="sles">
Copy link
Member

Choose a reason for hiding this comment

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

Make sure you are intentionally treating these as independent versions, eg: 12.2 shouldn't import 12.1. If that shouldn't be true then remove <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

What should I be investigating to determine if they are "compatible" or not? It's not clear to me what that distinction is based on.

Copy link
Member

Choose a reason for hiding this comment

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

This is related to my question below for Eric and Wes. Would be great if we could simply define sles 12. This is how the distro owners think of the major version 'band'. 12.2 is actually "12 SP2" and comes with the inherent compat promises of a service pack. FWIW SP3 is the latest SLES release.

Copy link
Member

@ericstj ericstj Jan 19, 2018

Choose a reason for hiding this comment

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

In the past we've left it up to the folks who know the most about the distros (ideally contributors to those). For example: red hat goes out of there way to make their minor releases compatible across for a single major version (see https://access.redhat.com/articles/rhel-abi-compatibility), windows does so across all versions, whereas others like ubuntu do not and we've had a history of breaks when folks try to reuse binaries.

Ultimately its a bit of a loaded question: what is compatibility? You can read through issues that mention binary compatibility to see some of the past discussion on the topic. My preference is to opt for compatibility since it enables something that is otherwise not possible, see https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/readme.md#version-compatibility.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It appears that SLES has a similar compatibility guarantees for releases within a major version: https://www.suse.com/partners/isv/porting_and_migration/

I'll remove the <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible> line.

@leecow
Copy link
Member

leecow commented Jan 19, 2018

@weshaggard , @ericstj - Why do we need to include minor versions for rhel, mint, opensuse and sles? If there's not technical reason for doing so, treating them in a manner similar to debian.8 and debian.9 (which also ship regular minor updates) would limit the churn to this file and conceivably make things a bit more resilient.

@bording - agreed that this should also go to 2.0.

Couple of version comments

Fedora 25 went eol last month
Ubuntu 17.04 went eol 1/13
OpenSUSE 42.2 will be going eol next week
I'm OK adding these so the to get caught up but we will soon be removing all from our builds and testing.

@bording
Copy link
Contributor Author

bording commented Jan 19, 2018

Couple of version comments

@leecow Because they were once supported, I felt it made sense to add the missing ones from your list for completion vs. having a strange gap in the versions.

Even if a distro goes out of support, would you ever remove items from the runtime file? It seems like removing something could break people, for example if someone's authored a NuGet package that has per-RID content.

@leecow
Copy link
Member

leecow commented Jan 19, 2018

Even if a distro goes out of support, would you ever remove items from the runtime file?

Nope, only from our build and test infrastructure. Anything related to public functionality would remain intact.

@danmoseley
Copy link
Member

cc @joshfree

"ubuntu-x86"
]
},
"ubuntu.17.10-x86-corert": {
Copy link
Member

Choose a reason for hiding this comment

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

Could you also go ahead and add ubuntu.18.04 proactively?

Copy link
Member

Choose a reason for hiding this comment

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

Similarly if you wouldn't mind, Fedora 28 and Mint 19 all come out around the same time and should be included in the 2.1 RID graph

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure, I can add those. Any others that make sense to add now?

Copy link
Member

Choose a reason for hiding this comment

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

Thanks @bording. With those additions you'll have added all of the supported distro versions through the ~May 2018 time frame.

Near the end of 2018, we'll need to add the supported H2 2018 releases {Ubuntu18.10 / Mint 19 / SLES 15 / Fedora 29} to the master branch around that time; as well as stand up the appropriate build and test infra for those releases.

@bording
Copy link
Contributor Author

bording commented Jan 20, 2018

I've pushed up changes that I believe address all comments so far.

While looking into SLES compatibility guarantees, I realized there is a similar issue for debian. The way I've added version 9 means they are being treated as compatible. However, I can't find anything specific online to indicate if this is okay or not like I could for SLES.

Does anyone know how I should handle that one? I see that https://www.microsoft.com/net/learn/get-started/linuxdebian has separate package feeds for them, so does that mean it's best to treat them as separate?

<RuntimeGroup Include="linuxmint.19">
<Parent>ubuntu.18.04</Parent>
<Architectures>x64</Architectures>
<Versions></Versions>
Copy link
Member

Choose a reason for hiding this comment

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

No versions? I wonder if we should be listing the versions as 18, 18.1, 18.2, then 19 (in a seperate item). I can't recall why I put the major version in the include statement initially. If it works without a diff move the the major versions to the version metadata.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ericstj I did try doing it that way, but because there are different parents for each major, it failed when trying to create the "linuxmint" RID.

I could go ahead and add some versions, but I didn't do that initially because it felt it was speculating too far into upcoming releases.

Copy link
Member

Choose a reason for hiding this comment

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

I see. That's why I must have done it, I remember now. Can we add a comment here to explain? I'm fine not adding 'dot' versions if none exist yet (not even 0?).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The first release of a linux mint major is just the major, without a 0, at least for all the recent versions: https://en.wikipedia.org/wiki/Linux_Mint_version_history

I'll add a comment to explain.

@ericstj
Copy link
Member

ericstj commented Jan 22, 2018

I'm not sure about debian, perhaps @eerhardt or @janvorli might be able to comment on the compatibility of these major releases.

@weshaggard
Copy link
Member

Possibly too soon to ask, but what are the odds of these changes also making it into a 2.0.x servicing release? It would be nice to not have to wait for 2.1.

I don't know of any plans to take this into the 2.0 branch at this point. @joshfree do we need any of these RID updates for 2.0 servicing?

However assuming we get https://github.com/dotnet/core-setup/issues/1846 addressed you can simply reference the latest prerelease version of Microsoft.NETCore.Platforms package in your application to get the graph merged in.

Copy link
Member

@weshaggard weshaggard left a comment

Choose a reason for hiding this comment

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

LGTM Thanks for updating @bording. Once you add the one comment as requested by @ericstj we can merge this change.

@bording
Copy link
Contributor Author

bording commented Jan 22, 2018

@weshaggard I should be able to add the comment some time today, but I do still have the outstanding question about debian compatibility that I'd like to get an answer on before this gets merged.

@janvorli
Copy link
Member

@bording - regarding the Debian 9 vs 8 compatibility. I am not sure about one thing. I know there was a change in OpenSSL libraries. Debian 8 had libssl.so.1.0.0 while Debian 9 has libssl.so.1.0.2 (I am talking about the SO name). So there is no official libssl.so.1.0.0 package for Debian 9 and apps / shared libraries that are linked against it would break unless someone installs a libssl.so.1.0.0 from the Debian 8 (which is possible). W.r.t. that, do you regards Debian 8 and 9 still as compatible or not?

@bording
Copy link
Contributor Author

bording commented Jan 22, 2018

@janvorli I know for the scenario that lead me to investigate these missing RIDs in the first place, that would be enough for me to consider them not compatible because I'd need to ship separate libraries for each distro.

Based on that, I think I should adjust the PR to not treat them as compatible. Anyone have an objection?

@weshaggard
Copy link
Member

Based on that, I think I should adjust the PR to not treat them as compatible. Anyone have an objection?

Sounds good to me. We essentially need one primary example of an incompatibility that requires us to pick different assets to deploy to mark them as incompatible.

@bording
Copy link
Contributor Author

bording commented Jan 22, 2018

I've now made all the changes that I'm aware needed to be made. @ericstj Let me know if the comments I added for linux mint are okay or if there's something you'd like me to tweak..

@@ -61,7 +62,7 @@
<RuntimeGroup Include="linuxmint.19">
<Parent>ubuntu.18.04</Parent>
<Architectures>x64</Architectures>
<Versions></Versions>
<Versions></Versions><!-- Empty because there are no point releasse yet -->
Copy link
Member

Choose a reason for hiding this comment

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

typo: releasse -> releases

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oops! will fix.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Pushed up a revised commit.

@weshaggard
Copy link
Member

test Windows x64 Debug Build
test Windows x86 Release Build

@weshaggard
Copy link
Member

CI legs failing with known issue https://github.com/dotnet/corefx/issues/26531.

@weshaggard weshaggard merged commit 6bfbf57 into dotnet:master Jan 23, 2018
@weshaggard
Copy link
Member

Thanks a lot for your help @bording in updating the RIDs.

@bording
Copy link
Contributor Author

bording commented Jan 23, 2018

So what's the final verdict for including the runtime.json updates in a servicing release? I know earlier that @leecow thought it should happen.

@joshfree
Copy link
Member

@bording yes, please feel free to submit the PR against the release/2.0.0 branch.

/cc'ing @ianhays who can help shepherd this through our servicing release process.

@bording bording deleted the update-rids branch January 24, 2018 23:48
@karelz karelz added this to the 2.1.0 milestone Feb 4, 2018
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
* Add missing versions
* Add missing RID
* Update runtime files
* Address PR feedback for ubuntu RID
* Treat minor versions of SLES as compatible
* Add upcoming releases
* Move SLES definition to maintain alphabetization of file
* Treat debian versions as not compatible
* Add linux mint comments


Commit migrated from dotnet/corefx@6bfbf57
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants