Python-r1/examples
Distutils examples
Basic example
| distutils.eclass | distutils-r1 |
|---|---|
EAPI=4 PYTHON_DEPEND='2:2.6 3:3.2' SUPPORT_PYTHON_ABIS=1 RESTRICT_PYTHON_ABIS='2.4 2.5 3.1' inherit base distutils # … RDEPEND="app-portage/flaggie dev-python/lxml" PYTHON_MODNAME=installmask src_prepare() { base_src_prepare distutils_src_prepare } |
EAPI=5 PYTHON_COMPAT=( python{2_6,2_7,3_2,3_3} ) inherit distutils-r1 # … RDEPEND="app-portage/flaggie[${PYTHON_USEDEP}] dev-python/lxml[${PYTHON_USEDEP}]" |
The PYTHON_DEPEND and RESTRICT_PYTHON_ABIS tandem was replaced with a common PYTHON_COMPAT variable. The variable needs to list explicitly every supported Python implementation. It is used to construct USE flags for the implementations and prepare proper dependency strings.
The SUPPORT_PYTHON_ABIS variable was replaced with an implication of eclass choice. The python-r1 and distutils-r1 eclasses require the package to support being built for multiple Python implementations.
The PYTHON_MODNAME variable was removed. The modules are compiled during the install phase, therefore the ebuild is perfectly aware of the module naming.
A PYTHON_USEDEP variable has been introduced. It holds a USE dependency string requiring the dependency to have at least the same Python implementations enabled as the ebuild in question. Its use is for packages that inherit the python-r1 or distutils-r1 eclasses.
The default phase functions handle all the common tasks which base.eclass did. Therefore, it is no longer necessary to use it explicitly.
Running tests using py.test
| distutils.eclass | distutils-r1 |
|---|---|
EAPI="4" SUPPORT_PYTHON_ABIS="1" DISTUTILS_SRC_TEST="py.test" inherit distutils # … IUSE="" DEPEND="app-arch/unzip dev-python/setuptools" RDEPEND="" DOCS="CHANGELOG README.txt" |
EAPI="5" PYTHON_COMPAT=( python{2_5,2_6,2_7,3_1,3_2,3_3} pypy{1_8,1_9} ) inherit distutils-r1 # … IUSE="test" DEPEND="app-arch/unzip dev-python/setuptools[${PYTHON_USEDEP}] test? ( dev-python/pytest[${PYTHON_USEDEP}] )" RDEPEND="" DOCS=( CHANGELOG README.txt ) python_test() { py.test || die } |
The distutils-r1 eclass does not support various Python test suites out-of-the-box. Therefore, it is necessary to add appropriate dependencies and the python_test() phase function.
In order to use the py.test test suite, it is necessary to depend on dev-python/pytest and call py.test to run the tests.
It should be noted that the DOCS variable in distutils-r1 is a list, not a string.