summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2019-12-22 13:13:18 +0100
committerMichał Górny <mgorny@gentoo.org>2020-02-20 10:18:55 +0100
commit894dd695f7be1e79f018f9cf3a1c6a13ba49eb71 (patch)
treebdfecace61194f9bf82f127e7ef5cef4aadbbb94 /eclass/distutils-r1.eclass
parentnet-libs/gupnp-1.0: lock to gssdp-1.0 API (diff)
downloadgentoo-894dd695f7be1e79f018f9cf3a1c6a13ba49eb71.tar.gz
gentoo-894dd695f7be1e79f018f9cf3a1c6a13ba49eb71.tar.bz2
gentoo-894dd695f7be1e79f018f9cf3a1c6a13ba49eb71.zip
distutils-r1.eclass: Add pyproject.toml support
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'eclass/distutils-r1.eclass')
-rw-r--r--eclass/distutils-r1.eclass29
1 files changed, 29 insertions, 0 deletions
diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index e546aadfa4a7..27ca236ccf5f 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -86,6 +86,8 @@ esac
# - no -- do not add the dependency (pure distutils package)
# - bdepend -- add it to BDEPEND (the default)
# - rdepend -- add it to BDEPEND+RDEPEND (when using entry_points)
+# - pyproject.toml -- use pyproject2setuptools to install a project
+# using pyproject.toml (flit, poetry...)
# - manual -- do not add the depedency and suppress the checks
# (assumes you will take care of doing it correctly)
#
@@ -135,6 +137,9 @@ _distutils_set_globals() {
bdep+=" ${sdep}"
rdep+=" ${sdep}"
;;
+ pyproject.toml)
+ bdep+=" dev-python/pyproject2setuppy[${PYTHON_USEDEP}]"
+ ;;
*)
die "Invalid DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}"
;;
@@ -457,6 +462,7 @@ distutils_enable_tests() {
_distutils_verify_use_setuptools() {
[[ ${DISTUTILS_OPTIONAL} ]] && return
[[ ${DISTUTILS_USE_SETUPTOOLS} == manual ]] && return
+ [[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]] && return
# ok, those are cheap greps. we can try toimprove them if we hit
# false positives.
@@ -580,6 +586,28 @@ _distutils-r1_disable_ez_setup() {
fi
}
+# @FUNCTION: _distutils-r1_handle_pyproject_toml
+# @INTERNAL
+# @DESCRIPTION:
+# Generate setup.py for pyproject.toml if requested.
+_distutils-r1_handle_pyproject_toml() {
+ if [[ ! -f setup.py && -f pyproject.toml ]]; then
+ if [[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]]; then
+ cat > setup.py <<-EOF || die
+ #!/usr/bin/env python
+ from pyproject2setuppy.main import main
+ main()
+ EOF
+ chmod +x setup.py || die
+ else
+ eerror "No setup.py found but pyproject.toml is present. In order to enable"
+ eerror "pyproject.toml support in distutils-r1, set:"
+ eerror " DISTUTILS_USE_SETUPTOOLS=pyproject.toml"
+ die "No setup.py found and DISTUTILS_USE_SETUPTOOLS!=pyproject.toml"
+ fi
+ fi
+}
+
# @FUNCTION: distutils-r1_python_prepare_all
# @DESCRIPTION:
# The default python_prepare_all(). It applies the patches from PATCHES
@@ -608,6 +636,7 @@ distutils-r1_python_prepare_all() {
fi
_distutils-r1_disable_ez_setup
+ _distutils-r1_handle_pyproject_toml
if [[ ${DISTUTILS_IN_SOURCE_BUILD} && ! ${DISTUTILS_SINGLE_IMPL} ]]
then