critical-path-compose
critical-path-build
I think we should have a mechanism for identifying and recording these packages, similar to critpath.py - it could even be critpath.py, I go back and forth on that. It should definitely produce a similar format for Bodhi to use as an input.
I have two practical reasons for doing this:
I've been thinking about and researching this for a while, but I wanted to write it down in a ticket now so the idea's out there and we can prioritize it appropriately.
When do you need this? (YYYY/MM/DD) No specific date, but I feel like it's kinda important and want to prioritize work on it.
When is this no longer needed or useful? (YYYY/MM/DD) N/A
If we cannot complete your request, what is the impact? We will continue to miss things like "oh, this relatively unimportant package on Workstation broke its dependencies and now the compose fails".
Note, the question of how to identify these is an interesting one. You can just resolve out the environment groups in comps, but that does leave some stuff out, I think. Kiwi does have a feature to do a sort of 'dry run' build of a given image and report out all the packages it would install; I was playing around with that a few weeks ago, I ran into a couple of issues but don't entirely remember what they were. Another approach is to parse the logs from the media build tool (Kiwi or whatever) right when a compose finishes.
For the compose tools themselves it's a bit harder, I think we just have to write them down. In theory you could try to sort of scrape them out of the various scripts that actually run builds, but that would probably be so fragile it wouldn't really save any work over writing them down, or be more reliable/accurate.
This a great idea to do; for Kiwi I've also previously given you a script that lists the packages for a profile.
For image-builder you can get the list of comps groups and packages that are to be installed in the buildroot and other pipelines with image-builder describe $imagetype.
image-builder describe $imagetype
We could probably automate running both based on the profiles/image types being built in the pungi configs for a given branch and put them into one comps group?
However, for bootable containers and ostree commits; these are built differently and I am not sure how easily we can get their inputs. For commits we can probably do something based on the yaml files they use as inputs.
If someone wants some help on gathering this set of packages feel free to poke me somewhere (Matrix, e-mail) :)
For both kiwi and image-builder you can also use the rpmlist or sbom outputs to get the solved set of packages though that might be less useful.
Metadata Update from @phsmoura: - Issue tagged with: medium-gain, medium-trouble, ops
Kiwi I've also previously given you a script that lists the packages for a profile.
Yes, I mentioned this above. I did find at least one problem with it: dnf variable substitutions aren't applied on this Kiwi codepath, so it doesn't actually work with our unmodified templates. You have to edit the relevant repositories file and do the $releasever and $basearch substitutions manually to make it work. I can't remember what the other issue was.
$releasever
$basearch
There's no point using comps groups on paths where we can get the package list from a tool, it's an unnecessary intermediate step. The thing that writes out the 'compose critical package' list can just do it directly using whatever tool can produce the list.
and yeah, it might actually be interesting to have pungi do this at compose time if it fits in, I'll have to look at that.