Over the course of 2024, I’ve been increasingly adopting Packit’s pull-from-upstream for automating some package updates. I still think it should only be used judiciously - e.g. I generally only enable it for packages that do not embed code from other projects (necessitating license audits each time) and have good test coverage (because I’ll merge the PR if the test suite and installability checks both pass). Some packaging ecosystems that require the RPM spec to be regenerated each time (such as Rust) are disqualified by default. In fact, FESCo just voted today on the Automated Packit onboarding Change Proposal - and approved it provided it’s opt-in rather than opt-out, given these and similar concerns that several members share.

(We cheat a bit with the folly RPM’s Packit setup - Folly does not have a stable ABI, and actually landing Packit PRs for it would require rebuilding the set of dependent packages - so we actually use Packit there to trigger a new scratch build for every weekly tag, and intervene manually when we see it failing and the failure is not spurious; we actually try to merge only once per Fedora release unless there is a security issue).

So the question is - can I quantify this work? How many releases did Packit do on my behalf, freeing up my time to do other things, over the entire year?

The data is not broken up by user in the Packit dashboard, so we have to look at the Pagure deployment that Fedora used for dist-git repositories – unfortunately there is an impedance mismatch, where you can ask for the list of PRs you’re eligible to auction, and specify a date range and the status of that PR, but… that’s it. You can’t filter server-side by who actually closed the PR, or who authored it.

Given Fedora is replacing Pagure with Forgejo adding this support in Pagure seems like a dead end – so I did the next best thing - I wrote a script so I can answer this question - and so can you!

$ ./distgit-pr-stats.py --help
Usage: distgit-pr-stats.py [OPTIONS] FAS

Options:
  --closed TEXT
  --per-page INTEGER              Results per page (1-100)  [default: 20]
  --requester TEXT
  --status [Open|Closed|Merged|All]
                                  [default: Open]
  --help                          Show this message and exit.

$ ./distgit-pr-stats.py salimma --closed 2024-01-01..2025-01-01 --per-page 100 --requester packit --status Merged > 2024.json

$ ./distgit-json-unique-count.sh 2024.json
      1 "btrfsd"
      1 "btrfs-progs"
      1 "dispenso"
      2 "fennel"
      2 "folly"
      2 "lagrange"
     32 "python-damo"
      1 "python-drgn"
      1 "python-fastjsonschema"
      1 "python-result"
      1 "python-selenium"
      2 "python-shortuuid"
      1 "python-stdlibs"
      1 "python-usort"
      1 "sonic-visualiser"
      2 "stow"
      2 "the_foundation"
      1 "vamp-plugin-sdk"
      1 "zcfan"

Let me know if there are any additional operations you want to see supported by replying on Mastodon, sending me an email, or finding me on Matrix.

This post is day 27 of my #100DaysToOffload challenge. Visit https://100daystooffload.com to get more info, or to get involved.

Have a comment on one of my posts? Start a discussion in my public inbox by sending an email to ~michel-slm/public-inbox@lists.sr.ht [mailing list etiquette]

Posts are also tooted to @michelin@hachyderm.io or @michel_slm@social.coop