Testing affected ports

When upgrading or making changes to a port that many other ports depend on, like for instance libraries, it is important to test not only that the port itself builds, but also that those that depend on it will build (if it's a build dependency) or run (if it's a run or lib dependency).

Bugzilla has a flag for requesting an exp-run (where all ports will be built), but there is no reason to wait for that when we can relatively easily do our own mini exp-run without building everything, thanks to FreshPorts.

FreshPorts has an advanced search function where we can search for ports with Depends Build/Lib/Run containing the port we are upgrading. Furthermore, it can output the result in plain text, such that a Build/Lib/Run search for unrar will yield the following list:

archivers/deco
archivers/py-rarfile
archivers/unfoo
deskutils/recoll
games/d2x-xl
graphics/cbview
graphics/cbviewer
graphics/comical
mail/mailscanner
multimedia/py-periscope
net/kwooty
news/hellanzb
news/nzbget
news/sabnzbdplus
security/amavisd-new
security/maia
sysutils/fusefs-rar2fs
x11-fm/doublecmd

Notice the format of the output -- we can feed this list to poudriere to verify that all these ports build:

poudriere bulk -t -j fbsd11-1 -p portsvn -i -f <filename where we saved the output>

In this case it ended up telling me the following, but 525 is still a lot less than a full build of all 32128 (and counting) ports in the tree:

[00:00:42] Building 525 packages using 4 builders

This method might not hit every affected port, but it won't be far off in most cases. And as an alternative to a full exp-run, it is quite affordable in terms of time and resource usage.