-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Enable source-build pre-built detection #81468
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
As part of work on the task we discovered that in the context of repo build
In the context of current product source-build, these dependencies will be replaced by their respective latest versions. This creates a sizable difference in behaviour between the product source-build and the repo source-build. @ViktorHofer pinging you here to get an opinion on what, in your mind, is a better option from |
Tagging subscribers to this area: @dotnet/runtime-infrastructure Issue DetailsPart of dotnet/source-build#3017 Enable source-build pre-build detection on the current repository and resolve any pre-build issues discovered
|
This changed last week. Runtime now builds very early in the stack, mirroring the way the product builds. Therefore roslyn and msbuild do not flow into runtime. I think the cases above are textbook examples of SBRPs. |
Pre-builts currently getting removed / excluded:
Pre-builts that ideally would require a version bump. @ViktorHofer would be ideal if we could know which of these can be updated (we would create separate issues for the update + allow the pre-builts in the infra until the said issue would get attention from
|
We already have our own infrastructure to exclude these if that's what we want. Do we have a tracking issue for that? I wasn't aware that we want to remove .NET Framework pre-builts right now. What's that issue's priority?
AFAIK we are free to use any version here, i.e. the latest version from nuget.org. cc @dotnet/runtime-infrastructure
We build that library ourselves in the repository so we should remove the prebuilt package dependency entirely.
cc @adamsitnik |
We don't have a tracking issue just yet, since it would depend on when the changes would be usable in
If we do bump them to latest - Maestro dependency flow would update them automatically trough subscriptions that would be created as part of this task. Other repositories would get the packages from Maestro as well, so it should sync up
Sounds great, I will create a tracking issue for it + add a comment to remove the allowed pre-built as part of that work |
As said, TFM filtering IS already available in dotnet/runtime. Nothing blocks us from removing .NET Framework nodes from the source-build graph. If this is desirable and important, please file an issue for that (including the priority for the source build team).
Sounds like a SRBP source build subscription. Is that right?
Thanks 👍 |
My bad, I worded it badly. I was just providing context for why the issue wasn't raised. I will create and issue for it once I double-check its priority. Thanks for pointing this out
We would create subscriptions for the packages themselves, so for |
I thought we can't do that as runtime now builds before msbuild and nuget in the source-build graph? Above from @mmitche:
|
If I understood this correctly, this was for the product build, while in this task we are dealing with the repo build. In product build I might be wrong here so I'll ask for a confirmation from @MichaelSimons or @mmitche |
Per offline discussion with Michael: Viktor is correct about changed in build order regarding Regarding TFM filtering: Michael mentioned a concern about the order of enabling TFM filtering, specifically that starting with |
I > In product build This closely dovetails with a discussion we were having about runtime's dependency on roslyn. Runtime took advantage of a newer roslyn than appeared in any available SDK. Using the SDK tools would break the build, and there was no way to update the input SDK to a new enough SDK that would support the build. IMO:
|
@oleksandr-didyk Depending on how these dependencies are used, they may not be SBRP-able (if they are tooling), and it may not make sense to SBRP them anyway if they are changing over time. |
If updating System.CommandLine version is blocking please let me know, I will prioritize updating all the repos (we are introducing breaking changes daily as we are polishing S.CL before it becomes a part of BCL) |
@mmitche what's the alternative given that runtime builds before msbuild, nuget or commandline? Is there an alternative that would avoid publishing them to SBRP? |
It may be that System.CommandLine needs to build before runtime. Thoughts @MichaelSimons? IIRC it's a leaf node in the graph so it can build whenever. That would make the most sense for System.CommandLine since it's changing over time. I took another look at Microsoft.Build and NuGet.ProjectModel. I think those should be SBRPs (or, like @ViktorHofer mentions, we could change over to a version we already have an SBRP for). They're just API surface area. I was confusing those with cases like roslyn, where runtime was using the tooling packages to run against newer functionality. Those are not SBRP-able. |
S.CL already builds before runtime. Runtime should have a dependency flow for it. |
We are also debating whether S.CL should become a part of dotnet/runtime or not. Would it help in this case? (so far I am gathering a list of all pros and cons) |
@adamsitnik Depending on the stability of the API, I think it may hurt more than help. While the API is rapidly iterating, that would bring a few repos into have a direct dependency on runtime that did not have previously have one. That would mean it would be more difficult to get a coherent product. Once it ships and has a stable API surface area, it's possible that we could SBRP S.CL and things would get simpler. |
Update on the status:
|
Update on status:
|
Update on status:
|
Update on status:
|
Part of dotnet/source-build#3017
Enable source-build pre-build detection on the current repository and resolve any pre-build issues discovered
The text was updated successfully, but these errors were encountered: