@koobs suggested that I put this up to review the implementation of variants within the ports framework.
Included in this proof of concept is ports-mgmt/poudriere-variants which will download poudriere from my feature branch.
Very few patches were needed to the ports framework to support variants, as you will see. At this stage, I have only patched the python.mk to support the pyXY- prefixes, but it demonstrates the general principle and power of this implementation.
A diff of the poudriere code can be found here. Major points of interest:
- Packages, and not their origin, become the focus of the output
- Varying levels of output depending on verbosity
- It seems to work quite well!
- Some bits aren't done yet, but aren't needed for this proof-of-concept
A real world example of this in use is provided. It includes an example of devel/py-setuptools with a VARIANTS directive, which solves the issue of having many slave ports to work around issues with the framework.
And last but not least, here is a screencast of poudriere running with various levels of verbosity generating the py-setuptools packages.