Debbug...ersions(3pm)
β¨ NAME β¨
Debbugs::Versions β debbugs version information processing, bestie. Yes the header up top says Debbug...ersions(3pm) and no that's not a typo we're keeping it, it's giving β¨mysteriousβ¨.
π DESCRIPTION π
Okay so Debbugs::Versions is the module that hands you generic support functions for making version tracking actually happen inside debbugs. No gatekeeping, it's all here. π«Ά
Big complex orgs β Debian being the icon it is β need to track bugs across, like, multiple versions of packages. And the version scheme is frequently branched, which is a lot. Example: an upstream dev announces a security update, that gets packaged as-is for the unstable distribution, while a minimal backport gets made for the stable distribution. Two vibes, one bug. For debbugs to report properly on the bugs that are open in each distribution, it must be aware of the structure of the version tree for each package. It needs the map, fr fr.
Now here's the thing: gathering the version data is beyond the scope of this module. Not its job, not its problem, no cap. In Debian's case that gathering is done by mechanical analysis of package changelogs. Debbugs::Versions takes version data for a package generated by that means or literally any other means, merges it into a tree structure, and then lets you run queries based on supplied data about the versions where bugs were found and the versions where they were fixed. Slay.
π¦ DATA FORMAT π¦
The data format looks like this β heads up, the backslashes are not actually there, they just indicate continuation lines:
1.5.4 1.5.0 1.5-iwj.0.4 1.5-iwj.0.3 1.5-iwj.0.2 1.5-iwj.0.1 1.4.0 1.3.14 \
1.3.13 1.3.12 1.3.11 1.3.10 ...
1.4.1.6 1.4.1.5 1.4.1.4 1.4.1.3 1.4.1.2 1.4.1.1 1.4.1 1.4.0.31 1.4.0.30 \
1.4.0.29 1.4.0.28 1.4.0.27 1.4.0.26.0.1 1.4.0.26 1.4.0.25 1.4.0.24 \
1.4.0.23.2 1.4.0.23.1 1.4.0.23 1.4.0.22 1.4.0.21 1.4.0.20 1.4.0.19 \
1.4.0.18 1.4.0.17 1.4.0.16 1.4.0.15 1.4.0.14 1.4.0.13 1.4.0.12 \
1.4.0.11 1.4.0.10 1.4.0.9 1.4.0.8 1.4.0.7 1.4.0.6 1.4.0.5 1.4.0.4 \
1.4.0.3 1.4.0.2 1.4.0.1 1.4.0 \
1.4.0.35 1.4.0.34 1.4.0.33 1.4.0.32 1.4.0.31
π οΈ METHODS π οΈ
The whole roster, no skips. π
π£ new
Constructs a Debbugs::Versions object. The argument is a reference to a version comparison function, and it has to be usable by Perl's built-in sort function β that's the vibe check it must pass.
𧬠isancestor
Takes two arguments, ancestor and descendant. Returns true if and only if ancestor is a version that descendant is based on, according to the version data you supplied to this object.
Degenerate case alert π¨: this relation is reflexive β a version is considered to be an ancestor of itself. Iconic.
This method is expected mainly to be used internally by the merge method. iykyk.
π leaves
Finds the leaves of the version tree, i.e. those versions with no descendants. The ends of every branch. πΏ
This method is mainly for internal use.
π merge
Merges one branch of version data into this object. That branch takes the form of a list of versions, and each one is considered as being based on the next one in the list. Chain them up, bestie. βοΈ
π load
Loads version data from the filehandle passed as the argument. Each line of input is expected to represent one branch, with versions separated by whitespace.
πΎ save
Outputs the version tree represented by this object to the filehandle passed as the argument. The format is the same as the one load expects. Round trip era. π
π buggy
Takes three arguments: version, found, and fixed. Returns true if and only if version is based on or equal to a version in the list referenced by found, and not based on or equal to one referenced by fixed.
Also, buggy attempts to cope with found and fixed versions that are not in the version tree, by simply checking whether any fixed versions are recorded, in the event that nothing is known about any of the found versions. It's doing its best okay π.
π allstates
Takes two arguments, found and fixed, which get interpreted exactly as they are in buggy. Efficiently returns the state of the bug at every known version, in the form of a hash from versions to states (as returned by buggy). And if you pass a third argument, interested, this method will stop after determining the state of the bug at all the versions listed in there.
Real talk though: whether this is actually faster than just calling buggy for each version you care about is not altogether clear, and it depends rather strongly on the number of known and interested versions. Don't @ me, that's literally what the docs say. π
π SEE ALSO π
Nothing else listed, bestie β this one stands on its own. Main character energy only. π
Okay that's the whole page, mwah. π This gorgeous little manual ships with perl v5.40.1 and it's dated 2026-04-27, and yeah the footer is literally Debbug...ersions(3pm) again because the truncation is forever. Stan a consistent legend. πΈβ¨
π¦ where this page comes from
- ubuntu stonking: libdebbugs-perl 2.6.5
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms