-
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
Create full platform manifest in local build (don't require job join) #1622
Comments
I got reminded by a convo about dotnet/source-build-reference-packages that this actually probably isn't an active bug in source-build. Context: the platform manifest is delivered in two places in 3.0+: the targeting pack, and the runtime pack. Neither is source-built by dotnet/core-setup or dotnet/runtime:
I think we still need to track this work, though: IMO we should deliver source-built runtime packs, and ideally we should build targeting packs from this repo rather than duplicating the source elsewhere (opening a source-build issue about this). |
@dagood @NikolaMilosavljevic This is now important for our efforts to speed up the official build. The current solution from #1594 is causing our build to be slower than it can be since it waits for all CoreCLR and Libraries jobs. We could likely save about 15 minutes to half an hour of build time on top of the time saved via parallelizing the CoreCLR and Libraries builds if we didn't have to wait for all platforms of CoreCLR and Libraries to be done before starting a given installer build. If we want to get our official build times down, I think we need to do this. |
Agreed. Renamed title to point out that bit more clearly and remove source-build. (It isn't an active source-build bug, and future work there to actually use the dotnet/runtime-generated platform manifest is tracked by dotnet/source-build#1523.) |
To drill in on this, this implies there is no single consistently longer platform, correct? E.g. if win-x64 were consistently the slowest, removing this join would have no impact because we would still have to wait for win-x64 coreclr, win-x64 libraries, and win-x64 mono before win-x64 installer. |
Yep. Part of that timing is signing fluctuation which will also go away. Windows is still longer most of the time, but sometimes some of the linux jobs can end up as a longer poll. |
@jkoritzinsky is this still tracking for completion for 5.0? |
This won't make it for 5.0 |
See #1362 for context on the platform manifest, and how the official build currently harvests every platform's artifacts from CoreCLR and Libraries to build full platform manifests.
Local builds (such as source-build) only have access to a single machine/platform, so harvesting is not possible. Without harvesting, the platform manifest ends up incomplete and can cause problems, in particular causing
dotnet publish
to include libraries that contradict the ones already included in the target platform's shared framework.The idea I've been considering so far is a template approach. (Copying from #1362):
I think we need to stop using harvesting to populate this file, and instead calculate the contents. We probably need to keep a platform manifest template (list of files) in the source to act as a template.
This would normally be a maintenance hazard, but we can prevent that:
This does impact dev flows. Someone may add a new file to the shared framework and not know how to properly update the manifest template. To mitigate this, when the validation step fails, it should emit the corrected list of files and tell devs where they need to put it to fix up their PR.
The text was updated successfully, but these errors were encountered: