Portscout is a neat tool that scans an entire ports tree and then checks the upstream sites for any new releases.
This tool was originally written for FreeBSD and this weekend I hacked it up to work on the OpenBSD ports tree too.
While adding initial OpenBSD support was surprisingly easy once a few small issues were sorted out (use
show=FOO\ BAR instead of chaining
-V FOO -V BAR) I actually added some new features to it.
The ports tree ensures that every single port has a list of backup master sites (
MASTER_SITE_BACKUP), these would always get added to the list of sites
portscout would check for new releases…which is pointless since these are are backup mirrors. Also, there may be other sites that you’d want to skip checking for a number of reasons.
mastersite ignore = *openbsd.org/pub/OpenBSD/distfiles/*
This even supports rudimentary wildcards, thus the above option with blacklist all the default backup sites.
So, that ensured I wouldn’t keep banging on
However, it would only find about 6000 ports during a scan. Whereas there are more than 8000 ports (minus multi-packages which share the port directory). Turns out, it would only scan the toplevel directories it acquired via
make -V SUBDIR in the top level directory.
In order for it to recurse into proper “subcategories” such as
lang/php some extra code was needed based on a simple heuristic. If a directory contains
Makefile.inc, scan all the things! And suddenly it would find over 7600 ports.
Outstanding issues/missing features⌗
There are still some small issues/missing features that I’m aware of, and I’d be happy to merge a pull request over at jasperla/portscout which fix these:
- we could use some awesome OpenBSD-themed templates
- subdirectories which contain valid ports, but no
Makefile.incare skipped (like
- a template for a per-category view would be neat
- some ports with seemingly valid
Can't locate object method "host" via package "URI::_generic" at Portscout/DataSrc/Ports.pm
- ports with failures during the
(re)buildphase or with unreachable master sites should be flagged/logged somehow
- better support for
Aside from the above, the current codebase should be tested on FreeBSD again and submitted upstream.
A set of results from a scan which ran earlier today is available here