Skip to content

Commit

Permalink
content: rework pkgcraft support section for qa tooling post
Browse files Browse the repository at this point in the history
radhermit committed Jun 24, 2024
1 parent 371658b commit b91fd54
Showing 1 changed file with 24 additions and 26 deletions.
50 changes: 24 additions & 26 deletions content/posts/evolving-qa-tooling.md
Original file line number Diff line number Diff line change
@@ -5,11 +5,11 @@ date: 2024-06-22T21:09:36-06:00
tags: ["linting", "Gentoo"]
---

QA support in Gentoo has been a fluid, amorphous goal over the project's
history. Throughout the years, developers have invented their own scripts and
workflows to workaround the limitations of official tooling. More recently, the
relaxed standards have been tightened up a fair amount, but it should be
possible to achieve more results with further improvement.
QA support in Gentoo has been a fluid, amorphous goal over the project's history.
Throughout the years, developers have invented their own scripts and workflows to
workaround the limitations of official tooling. More recently, the relaxed standards have
been tightened up a fair amount, but it should be possible to achieve more results with
further improvement.

Having become an official developer in 2010, much of my initial ebuild development
revolved around CVS and repoman, both of which felt slow and antiquated even at the outset
@@ -27,23 +27,21 @@ towards a potential alternative is not easy.
# Pkgcraft support

Similar to how pkgcheck builds on top of pkgcore, pkgcraft provides its core set of QA
tooling via pkgcruft[^pkgcruft] which is currently an ebuild linter supporting a small
subset of the checks provided by pkgcheck. Most of pkgcruft's current checks are provided
as examples to implement similar ones so they run the spectrum from bash parsing to
dependency scanning.

A basic scanning and report API is also provided, potentially allowing for language
bindings to provide native pkgcruft support or building report (de)serialization support
into web interfaces and other tools. For example, it could be interesting to write a
client/server combination that can create and respond to queries related to reports
generated by given packages between certain commit ranges.

Looking towards the future, the current design allows for extending its ability past
ebuild repos to any viable targets that make sense on Gentoo systems. For example, it
could be handy to scan binary repos for outdated packages, flag installed packages removed
from the tree, or warn about USE flag settings in config files that aren't relevant
anymore. These types of tasks are often handled in a wide variety of places (or left up to
user implementation) at varying quality and performance levels.
tooling via pkgcruft[^pkgcruft], an ebuild linter featuring a small subset of pkgcheck's
functionality with several extensions. As the project is quite new, its limited number of
checks run the spectrum from bash parsing to dependency scanning.

An API for scanning and reports is also provided, allowing language bindings for pkgcruft
or building report (de)serialization into web interfaces and other tools. For example, a
client/server combination could be constructed that creates and responds to queries
related to reports generated by given packages between certain commit ranges.

Looking towards the future, the current design allows extending its ability past ebuild
repos to any viable targets that make sense on Gentoo systems. For example, it could be
handy to scan binary repos for outdated packages, flag installed packages removed from the
tree, or warn about USE flag settings in config files that aren't relevant anymore. These
types of tasks are often handled in a wide variety of places (or left to user
implementation) at varying quality and performance levels.

### Install

@@ -307,12 +305,12 @@ for feedback.

Extending pkgcheck's git support provided by `pkgcheck scan --commits`, it should be
possible to natively support bisecting ebuild repo commit ranges to find a bad commit
generating certain report variants. Gentoo CI supports this in some fashion for its
pkgcheck notification setup, but implements it in a scripted fashion that doesn't allow
for regular users to leverage it without recreating a similar environment.
generating certain report variants. Gentoo CI supports this in some form for its
notification setup, but implements it in a more scripted fashion preventing regular users
from leveraging it without recreating a similar environment.

Pkgcruft could internally run the procedure using native git library support and expose it
via a command such as `pkgcruft bisect a..b`. While this is often a workflow only used by
via a command such as `pkgcruft bisect a..b`. While this may be a workflow only used by
more experienced devs, it would be handy to support natively instead of forcing users to
roll their own scripts.

0 comments on commit b91fd54

Please sign in to comment.