Add ccp.py - compose-critical package list generation script #13039

Merged
kevin merged 1 commit from adamwill/releng-tooling:add-ccp into main 2026-07-08 00:17:22 +00:00
Member

This adds ccp.py - a script for generating the "compose-critical
package list" for a given compose. It's a bit of a WIP but it
does already work and give you a fairly useful list (as a flat
text file for now).

Signed-off-by: Adam Williamson awilliam@redhat.com

This adds ccp.py - a script for generating the "compose-critical package list" for a given compose. It's a bit of a WIP but it does already work and give you a fairly useful list (as a flat text file for now). Signed-off-by: Adam Williamson <awilliam@redhat.com>
This adds ccp.py - a script for generating the "compose-critical
package list" for a given compose. It's a bit of a WIP but it
does already work and give you a fairly useful list (as a flat
text file for now).

Signed-off-by: Adam Williamson <awilliam@redhat.com>
Author
Member

I have a few ideas for things to do with this:

  • Use it to extend or replace the use of critpath groups for scheduling openQA tests - we should run openQA tests on all 'compose-critical packages' for relevant images (so, server tests for server images, kde tests for kde images etc.)
  • Use it to identify particularly 'important' rmdepcheck failures for Rawhide and Branched - breaking deps of a compose-critical package is a higher-priority issue
  • Tie it into the orphan retirement process somehow so we treat "compose-critical package is getting retired" as a priority issue and work hard to find a maintainer or make it no-longer-critical (CC @gotmax23 )
I have a few ideas for things to do with this: * Use it to extend or replace the use of critpath groups for scheduling openQA tests - we should run openQA tests on all 'compose-critical packages' for relevant images (so, server tests for server images, kde tests for kde images etc.) * Use it to identify particularly 'important' [rmdepcheck](https://forge.fedoraproject.org/quality/rmdepcheck) failures for Rawhide and Branched - breaking deps of a compose-critical package is a higher-priority issue * Tie it into the orphan retirement process somehow so we treat "compose-critical package is getting retired" as a priority issue and work hard to find a maintainer or make it no-longer-critical (CC @gotmax23 )
Owner

Seems to do what it says on the tin. ;)
Might be nice to handle --help and explain what a 'compose top level' is... or just add an example?
I wonder if it could/should just default to latest rawhide?

Might also dump the file in the cwd instead of var tmp? and note that it wrote the file out so you know where it is.

All minor stuff, happy to merge this and improve or if you want to polish it some thats fine too.

Seems to do what it says on the tin. ;) Might be nice to handle --help and explain what a 'compose top level' is... or just add an example? I wonder if it could/should just default to latest rawhide? Might also dump the file in the cwd instead of var tmp? and note that it wrote the file out so you know where it is. All minor stuff, happy to merge this and improve or if you want to polish it some thats fine too.
Author
Member

tweaked it to address those notes, and it also outputs a json file organized by variant now.

tweaked it to address those notes, and it also outputs a json file organized by variant now.
Author
Member

I keep changing my mind on whether we want to care about the distinction between packages that are in the buildroot and packages that are in the produced image or not. Currently we care about them most of the way through the script, but don't actually put that information in either of the output files. WDYT? Should I just simplify it and not care about the distinction, change the output to include the info, or what?

I keep changing my mind on whether we want to care about the distinction between packages that are in the buildroot and packages that are in the produced image or not. Currently we care about them most of the way through the script, but don't actually put that information in either of the output files. WDYT? Should I just simplify it and not care about the distinction, change the output to include the info, or what?
Owner

I think we should care. If we don't I think down the road we may be sorry we didn't.

Unless it's a gigantic hassle I suppose to log that...

I think we should care. If we don't I think down the road we may be sorry we didn't. Unless it's a gigantic hassle I suppose to log that...
Author
Member

It's not at all a giant hassle to output it, if anything it just makes consuming the data slightly more annoying if you just want both types of package in one bucket. But it's no big deal, just a couple of extra lines. I'll tweak the script to output it in separate buckets.

It's not at all a giant hassle to output it, if anything it just makes *consuming* the data slightly more annoying if you just want both types of package in one bucket. But it's no big deal, just a couple of extra lines. I'll tweak the script to output it in separate buckets.
Author
Member

Adjusted to drop the now-pretty-useless data container class and output by variant, arch and image/buildroot, e.g.:

{
  "Everything": {
    "aarch64": {
      "buildroot": [
        "R-srpm-macros",
        "add-determinism",
...
Adjusted to drop the now-pretty-useless data container class and output by variant, arch and image/buildroot, e.g.: ``` { "Everything": { "aarch64": { "buildroot": [ "R-srpm-macros", "add-determinism", ... ```
Author
Member

oh, hmm, one thing I forgot to mention/discuss: this gives us binary packages. critpath.py can output either binary or source, and we use it in source mode.

For one of the purposes I'm intending to use this for (rmdepcheck gating on rawhide), binary is actually what we want, but for other purposes, we probably want source package names.

I probably need to add a mode that can discover the source package names...

oh, hmm, one thing I forgot to mention/discuss: this gives us *binary* packages. critpath.py can output either binary or source, and we use it in source mode. For one of the purposes I'm intending to use this for (rmdepcheck gating on rawhide), binary is actually what we want, but for other purposes, we probably want source package names. I probably need to add a mode that can discover the source package names...
adamwill force-pushed add-ccp from 8d1eedd35d to ec9c972fec
All checks were successful
/ test (push) Successful in 3s
2026-07-07 23:19:48 +00:00
Compare
Author
Member

OK, now it has a --source arg for also outputting source package information. And it's a bit less janky and uses argparse.

OK, now it has a `--source` arg for also outputting source package information. And it's a bit less janky and uses argparse.
Owner

cool. Looks ok to me... lets merge and adjust from here as needed.

cool. Looks ok to me... lets merge and adjust from here as needed.
kevin merged commit ec9c972fec into main 2026-07-08 00:17:22 +00:00
Sign in to join this conversation.
No reviewers
releng/members
releng/Owners
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
releng/tooling!13039
No description provided.