rules_license icon indicating copy to clipboard operation
rules_license copied to clipboard

Explore ways to have more package metadata providers.

Open aiuto opened this issue 2 years ago • 1 comments

This is in support of Renaming applicable_licenses to packge_metadata. Please read that plan first for context.

Licenses are still special because they need to go down to the license_kind, but other metadata (self-contained) providers can be gathered generically. This PR has two parallel implementations so we can explore the ramifactions of each.

The early attempt was to make PackageInfo a first class element, equal to LicensesInfo in the way we recursively gather it. The problem with that approach is that it requires you to scale licenses_core.bzl with each new type.

A different approach is to have a generic TransitiveMetadataInfo collector that can hold many different types of provider in it, as long as they all obey the same protocol for identifying their type. We pass a provider list to gather_licenses_info_common() to select what to include.

This way, a user adding a private metadata type only needs to add a new write-json capability for their custom provider. That is still a little ugly, but at least we can share gather_licenses_info_common().

DO NOT SUBMIT. Work in progress. This is more of an early design review.

aiuto avatar Nov 09 '22 19:11 aiuto

Hi Bill. I just wanted to run this idea by you. It's not urgent. I want to hear what users say at BazelCon

aiuto avatar Nov 09 '22 19:11 aiuto