-
Notifications
You must be signed in to change notification settings - Fork 161
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
Support multi-arch install locations #214
Conversation
/cc @jkotas |
You may want to cc stakeholders for Looks good to me otherwise. I like what you came up with. |
I would like to see a call-out for what happens on macOS when Rosetta 2 gets removed such that x64 emulation is no longer possible and x64 apphost will fail to execute. There are a few scenarios I want to understand better:
Assume macOS for the answers. I assume that whatever the answers are that runtime and SDK installers will have the same behavior. Yes? |
Well you said it yourself - x64 apphost will fail to start - you will get an OS provided error (not sure what that will look like). It really doesn't matter what's installed, we will never get that far. Answers to your question heavily depend on the capabilities of the installer tech we use. If we can have clever installers then it would be this:
x64=/usr/local/share/dotnet/x64
arm64=/usr/local/share/dotnet
arm64=/usr/local/share/dotnet
x64=/usr/local/share/dotnet/x64
/usr/local/share/dotnet/x64 (In theory it could also write
SDK installers should not do anything to the registration mechanism (the config file). It's solely about the runtime installers. If you install SDK you also install at least one runtime, which will take care of that part. I can try to incorporate some of this into the doc if you think it's worth it. |
@marcpopMSFT for possible @dleeapho for the impact on runtime installers, since those are the once who should be registering the install locations (on all platforms). |
@vitek-karas thanks. That answer is good enough. It gets to what I was wondering about. As you say, it comes down to how smart the installer is. |
Forgot to add: If the installer is "dumb" we could go with a simple: /usr/local/share/dotnet/x64
arm64=/usr/local/share/dotnet
x64=/usr/local/share/dotnet/x64 If we think it's not worth the trouble to complicate the installers, that's what all of them can do and it won't go wrong (especially since the ones we already shipped don't write that file at all, so there's nothing overwrite). |
@vitek-karas Exactly. I assumed that as a consequence of your other statements. Good to call out explicitly. |
I think we'll still need separate values for installers for x64 on Intel Macs. |
@agocke I don't understand your question. On x64, .NET 6 installer should write this to the file: /usr/local/share/dotnet
x64=/usr/local/share/dotnet (I know it's redundant, but it's better for future to be explicit as much as possible - and also we get consistent behavior across the platforms). |
@vitek-karas Right, just pointing out
I think the above is correct but different between the osx-x64 installer and the osx-arm64_x64 installer. |
FYI: #217 (broader x64 emulation plan) |
Mostly based on PR Feedback
… into ApphostPerArch
Co-authored-by: Elinor Fung <elfung@microsoft.com>
Co-authored-by: Elinor Fung <elfung@microsoft.com>
… into ApphostPerArch
This is a proposal how to update the install location behavior in .NET 6 to support multiple architectures on a single machine across all platforms.