Skip to content
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

Specify all source-built dependencies and ensure they are regularly updated #12061

Closed
3 tasks
mmitche opened this issue Aug 29, 2022 · 2 comments
Closed
3 tasks
Labels
Partner:DotNet Priority:2 Issues for the current backlog. Type:Engineering product/infrastructure work/not a customer bug/feature/DCR

Comments

@mmitche
Copy link

mmitche commented Aug 29, 2022

Overview

Source-build works today by building a repository, gathering the versions of the outputs, and creating a property file with those versions. This property file is then fed to downstream repositories, which import it after their eng/Versions.props. The resulting behavior is that the downstream repo overrides all dependency versions specified in eng/Versions.props with the versions built from source. This behavior is not the same as the Maestro dependency-flow based approach. Maestro only updates properties for dependencies that are specified in eng/Version.Details.xml.

This causes the following difference: Say that dotnet/aspnetcore has a Microsoft.Net.Compilers.Toolset dependency. It codes a property for that dependency's version in eng/Versions.props as MicrosoftNetCompilersToolsetVersion, with an older version of the package.

  • When building via source-build, roslyn builds first, and aspnetcore will pick up the new version of Microsoft.Net.Compilers.Toolset, even though it doesn't want to.
  • When building officially, the non-latest version will be used.

This difference tends to cause build breaks in source-build. The version bump may be significant and require repo reaction. This is not ideal and not sustainable.

One option would be to only override those versions that are specified in eng/Version.Details.xml. This would more closely align the source-build and current official builds. The huge downside is that this will cause an explosion of ref packs. And in some cases, we would be building against old versions but actually executing against newer ones. Non-ideal.

In summary, the goals are:

  • Reduce source-build build breaks
  • Avoid a large increase in ref packs.
  • Ensure that it is possible to freeze on old versions of a specific component if absolutely necessary

Work Required

This work is dependent on dotnet/source-build#2982.

In this repo, do the following

@ghost
Copy link

ghost commented Sep 2, 2022

Issue is missing Type label, remember to add a Type label

@ghost ghost added the missing-required-type The required type label is missing. label Sep 2, 2022
@donnie-msft donnie-msft added Type:Engineering product/infrastructure work/not a customer bug/feature/DCR Triage:NeedsTriageDiscussion and removed missing-required-type The required type label is missing. Triage:Untriaged labels Sep 8, 2022
@nkolev92 nkolev92 added Partner:DotNet Priority:2 Issues for the current backlog. and removed Triage:NeedsTriageDiscussion labels Sep 12, 2022
@mmitche
Copy link
Author

mmitche commented Jun 15, 2023

Closing as completed as part of the source-build sustainability (PVP and prebuilt detection) work

@mmitche mmitche closed this as completed Jun 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Partner:DotNet Priority:2 Issues for the current backlog. Type:Engineering product/infrastructure work/not a customer bug/feature/DCR
Projects
None yet
Development

No branches or pull requests

3 participants