Project:Python/waf-utils integration

The waf build system bundled by a few packages is written in Python and uses build scripts that are written in Python as well. To ensure the best user experience, the waf-utils eclass intended to support waf needs to be combined with a proper python-r1 suite eclass.

Requirements for using waf-utils
Any ebuild using waf-utils needs to:


 * 1) set a proper value of PYTHON_COMPAT being the intersection of Python implementations supported by build system scripts and the package (if applicable),
 * 2) set a proper value of PYTHON_REQ_USE being the union of threads(+) (required by waf) and the USE flags required by the package (if applicable),
 * 3) inherit a proper Python eclass (python-any-r1, python-single-r1 or python-r1).

Which eclass to use?
The usual rules for choosing the eclass apply. That is:


 * 1) if the package installs Python modules that need to be installed for multiple Python implementations, use python-r1 and remember to call python_setup if you want to use waf outside of python_foreach_impl,
 * 2) if the package installs Python modules or scripts, use python-single-r1,
 * 3) otherwise, use python-any-r1 to express purely build-time dependency on Python.

Purely build-time dependency
Assumes that only waf (and possibly some other build/test scripts) require Python.

Example ebuild with waf & build-time dep on Python

Simple run-time dependency + waf
A package that installs some Python scripts/modules and uses waf.

Example ebuild with waf & simple run-time dep on Python

Conditional run-time dependency + waf
A package that installs some Python scripts/modules conditionally and uses waf (unconditionally).

Example ebuild with waf & conditional run-time dep on Python