-
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
Split the Runtime Shared Framework project and combine legs in the official build #111136
base: main
Are you sure you want to change the base?
Conversation
…ework projects that are hard-coded to specific runtimes.
…ime sfxproj projects.
… of the target switches.
…NativeAOT or singlefile instead of building a tool pack like how we build a runtime pack.
This was added for crossgen1, which we no longer ship.
…for all supported targets in the same job.
… to get BuildAllRuntimePacks working locally on Windows x64
…e.CoreCLR.sfxproj
…untime pack projects)
…ow has an alternative solution for the product all-up).
…apsing the CrossAOT jobs as well.
… default subsets are calculated for linux-bionic
… for eventual VMR usage
Tagging subscribers to this area: @dotnet/runtime-infrastructure |
src/installer/tests/pretest.proj
Outdated
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.
Unrelated but we should rename this project as it conflicts with src/libraries/pretest.proj (which causes binclashes in the obj directory -> project.assets.json).
src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.NativeAOT.sfxproj
Outdated
Show resolved
Hide resolved
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.
Could we make BuildAllRuntimePacks
/ DotNetBuildAllRuntimePacks
the default behavior? If we already build the runtimes, why not also pack them by default?
I can try to take a look at this (having the various sfxproj projects opt-in based on which runtime subsets are built). I'm just worried about breaking the local dev workflow. |
I'd like to defer making |
Of course. I think it's the right default but doesn't need to happen now. |
…untime-sfxproj
…d packages for linux bionic and maccatalyst when expected.
…and managed in separate steps
f5a5865
to
01f253a
Compare
Split the
Microsoft.NETCore.App.Runtime.sfxproj
project into three separate projects, one for each runtime (CoreCLR, Mono, NativeAOT).This makes some of the logic easier to reason about as settings specific to one runtime can be isolated in that project file.
The main benefit though, is that splitting the project allows us to build multiple "Runtime shared frameworks" in a single build invocation.
This PR also adds a
BuildAllRuntimePacks
property that builds all runtime packs that are supported for the given target. It also enables building the Mono CrossAOT compiler that runs on the target (targeting all RIDs supported for a CrossAOT compiler running on that target).These changes allow us to reduce the number of legs in our official build's Build stage from 79 to 41 by enabling us to deduplicate all builds for a given platform except for Mono LLVMAOT for desktop, CoreCLR PGO-instrumented, and Wasm single threaded vs multithreaded.
Once this flows to the VMR, we can do similar deduplication in the VMR and significantly reduce the lanes there as well using the
DotNetBuildAllRuntimePacks
property (also added in this PR).