-
Notifications
You must be signed in to change notification settings - Fork 136
Move text-only packages from SBRP to SBE #5065
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
Comments
I like this proposal and I absolutely agree on that packages like microsoft.build.notargets and microsoft.build.traversal belong into SBE. Same for wcwidth.sources, microbuild.core, microsoft.docker.sdk or any other tool that the .NET Team doesn't produce. I would say that they belong there as submodules, as the rest of SBE but I think that's an implementation detail and isn't that important to me. What I struggle with is agreeing on is saying that all text-only packages belong into SBE. Let's take When we add a new version of the System.Composition.* packages (i.e. System.Composition.Hosting) to SBRP it would feel very strange to require sending another PR to SBE to add the System.Composition package with that same version. Logically I see the meta package and its dependencies as strongly connected. Other packages that fall into that bucket that exist in SBRP text-only are "microsoft.netcore.platforms", "microsoft.private.intellisense", "microsoft.codeanalysis.collections" and "microsoft.extensions.commandlineutils.sources".
In the example of System.Composition, the package references multiple TFMs: At the end of the day I don't think that repo boundaries matter much for this discussion (SBE and SBRP could be the same repo and we would still have this conversation). I only see that relevant for the dev UX when adding new packages, which should be easy and not require submitting PRs to multiple repos for the same package "family". It's the categorization of these packages that matters. Something produced by the .NET team shouldn't be treated as external. Packages that reference each other should live next to each other (System.Composition -> System.Composition.Hosting). Packages or package content that are different than their origin should be poisoned to never get published or redistributed. I hope my feedback makes sense. Happy to chat more about this online/offline. |
I think metapackages are their own thing and shouldn't be treated as text-only packages. In other words, a text-only package has both no code and no package dependencies. Metapackages aren't really handled by SBRP right now. |
Meta packages were part of text-only SBRP in the 5.0 days: https://github.com/dotnet/source-build-reference-packages/tree/release/5.0/src/textOnlyPackages/src/system.composition/1.3.0 That package then later got removed when repos switched away from it. Support for supporting meta packages as text-only was explicitly preserved when we reworked the generate functionality in SBRP. Here's an example that shows that they still work:
|
Yeah, but does it actually build? |
Michael and I had a discussion about this earlier today but FWIW |
Uh oh!
There was an error while loading. Please reload this page.
Currently SBRP has three types of packages: reference, target and text-only. Text-only packages are not reference packages rather they are a type of external package. They are a special type of source-build-externals rather than a SBRP. This is re-enforced with how text-only packages are treated by the poison infrastructure. Reference and target packages are prohibited in the build output while text-only packages are allowed. Because text-only packages are produced from SBRP, they appear in vmr's prereqs/packages/reference folder rather than "regular" packages.
The primary motivation for changing this now is related to including all SBRPs in the PSB archive. The only remaining reason for including SBRP packages in PSB this is because of bootstrapping logic for Microsoft.Build.NoTargets and Microsoft.Build.Traversal (both are text-only packages). If text-only packages were treated like the other SBE packages, SBRP and associated special logic to include them in PSB could be removed.
Related: #4976
The text was updated successfully, but these errors were encountered: