Advanced ports toolkit: near-perfect packing-list generation
Channel: EuroBSDcon
Date: 2019-10-27

The OpenBSD ports tree uses an unique approach.

Instead of ad-hoc scripts that manipulate textual information, we do have a semantic parser that creates objects for each element in the plist.

The last year saw a complete rewrite of the most complicated piece of machinery, namely update-plist.

There are lots of interesting challenges, specifically how to write a generic tool that will handle all the semantic annotations that currently figure in packing-lists with minimal special-casing:

variables that expand to nothing for some flavors,
ambiguous variable expansions,
directories that may not exist for python2 ports,
automatic dispatching to the right subpackage and fragment,
shared libraries,
smart file type handling for libraries, icon themes, etc
Before and after comparison shows a new tool that requires minimal human intervention (perfect packing-list re-generation in over 95% of the cases), where the old update-plist required hand-holding over half the time.

Marc Espie

Researcher/Teacher in development security at Epita.

Architect of the OpenBSD packages and ports system.