Implement semantic notes/metadata for packages
Currently there is a need to convey some information with packages when building. This could be important instructions around the package, upstream or lived experiences.
Some people suggest this could be documented in README.md however this is free form and people might not read these files. We could also write everything as comments in PKGBUILD, but this is probably not a nice experience.
Instead we could define an auxiliary .notes.yaml file with metadata that could convey extra information, which could then include a pkgctl notes interface to display this information. As the file contains a datastructure we can also include additional context to the build process that we can't express through PKGBUILD. Like implied rebuilds that needs to be done for a package release.
Example: Some vscode plugins assume the Go debugger delve is always built with the latest go compiler, if this is not the case it will display an error. However there is no explicit dependency anywhere that helps the packagers ensuring this always happens.
Example file with YAML.
notes: |
Please rebuild only when XYZ happens and when tag ABC is available
rebuild_pkgs:
- go
- delve
- go-tools
Then tools like buildbtw or rebuild-todo can read the rebuild_pkgs sections when dealing with dependency bumps.
We can then display the free note field with some sub-command.
$ pkgctl notes
Please rebuild only when XYZ happens and when tag ABC is available
And we could include them when building packages, like with pkgctl build --with-notes.
Note the datastructure and implementation details are not important, just convenient to quickly mock up with some YAML.