Implement support for generating AppStream metadata #1237
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TL;DR version:
This is required to have fancy app descriptions in GUI software management applications like Plasma Discover or Gnome Software: https://arrowd.name/discover-appstream.jpg
Long version:
AppStream is a spec that describes software components and a tooling to produce and consume the software's metadata.
The process begins with a tool called
appstream-generatorthat takes OS packages as input and analyzes it. It can analyze a whole repo, but this is slow because it requires unpacking each package. Another way to use it is to feed it an unpacked package (STAGEDIR in our terms), which is much faster. After performing the analysis and if the package is deemed "interesting" for AppStream, it gets added to the appstream-generator's internal DB.After all the info is gathered into DB, one should run
appstream-generator publishto produce a set of files that represent the software catalog of our package repo. These files should be hosted somewhere and be synchronized with the pkg repo.On the client side the user enables the
ports-mgmt/pkg-appstreamplugin that downloads software catalog during thepkg updateand place it into appropriate location (/var/db). Finally, the consumers of the AppStream metadata pick it from there.This change makes Poudriere run the
appstream-generatorstepstestportat the end of the successful buildbulkafter each package's successful buildbulk