package list wrapper scripts port and rewrite
The package list generation, or
pkglistgen code is responsible for expanding the base package groups to the full list that is then packaged on the various installation media. Recently, the tool was rewritten, but was left with rough edges in the form of wrapper scripts around the core solving code. Much of scripts were hard-coded and would benefit from a re-write as well a porting to python in which the rest of the code lives.
During the port the code was re-structured for readability and the various hard-coded bits replaced with the proper variables and bits loaded from their sources of truth. The final result was a much more flexible and future proof solution. Leap 15.0 is actively using this code as part of the development workflow.
repo_checker build hash optimization follow-up
After the repo_checker was improved to store and compare build hashes to reduce rechecking the expected side-effect was repeated comments during target project rebuild (like after a checkin round) since the comment was always replaced if the build hash differed. The follow-up optimization was to avoid posting comments while target project is rebuilding unless the text of the comment changed. Once the target project completes rebuilding the final build hash is posted and the
repo_checker will stop rechecking until the build hash changes.
Combined with the build hash addition this maintains the much improved cycle time of the
repo_checker while avoiding the notification spam and still picking up changes quickly. As such new requests are still processed more quickly. Having a different mechanism to act as the source of truth for this information might be beneficial, but would introduce more complexity since all the review bots store their state in request reviews or comments.
For an example of the volume and how this plays at, take a look at a summary from the pre-processing phase of a
repo_checker cycle. Generally the
not ready state will change to either
build unchanged if there are issues that need to be resolved. Either of these three states can be skipped and
accepted is entirely ignore since that is the end state.
Over the past year much of my time has been spent refactoring code to avoid duplication and different implementations of the same thing. In addition simplifying the code were possible to make it easier to improve and maintain. The primary focus at the time was the
ReviewBot based code. The bots one interacts with on OBS as part of the distribution development workflow are all based on the
- Rework ReviewBot.CommandLineInterface to provide class option [+38 −125]
- Port osc-check_source.py to ReviewBot as check_source.py [+289 −458]
- runs as the
- improved flexibility, fixed bugs, and ~twice as fast
- runs as the