summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2021-02-06 12:48:41 +0100
committerMichał Górny <mgorny@gentoo.org>2021-02-11 21:31:12 +0100
commit2c7398870085874bae3bb77c4b6bfc5895ddcf51 (patch)
treecbdfecfa74918dfdb9c4bafe05786542d8fb907d
parentdev-python/py: remove unused patch(es) (diff)
downloadgentoo-2c7398870085874bae3bb77c4b6bfc5895ddcf51.tar.gz
gentoo-2c7398870085874bae3bb77c4b6bfc5895ddcf51.tar.bz2
gentoo-2c7398870085874bae3bb77c4b6bfc5895ddcf51.zip
distutils-r1.eclass: Fix setuptools without setup.py
Invoke pyproject2setuppy directly instead of writing the setup.py wrapper. This is necessary to correctly support setuptools via pyproject.toml without setup.py. Writing setup.py confuses pyproject2setuppy into running the setup.py code path instead of the correct non-setup.py path. Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r--eclass/distutils-r1.eclass17
1 files changed, 8 insertions, 9 deletions
diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index d5bb0df4d927..cb64938c8c32 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -523,7 +523,13 @@ esetup.py() {
[[ ${BUILD_DIR} ]] && _distutils-r1_create_setup_cfg
- set -- "${EPYTHON:-python}" setup.py "${mydistutilsargs[@]}" "${@}"
+ local setup_py=( setup.py )
+ if [[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]]; then
+ # TODO: remove '.main' when we require v10
+ setup_py=( -m pyproject2setuppy.main )
+ fi
+
+ set -- "${EPYTHON:-python}" "${setup_py[@]}" "${mydistutilsargs[@]}" "${@}"
echo "${@}" >&2
"${@}" || die "${die_args[@]}"
@@ -632,14 +638,7 @@ _distutils-r1_disable_ez_setup() {
# 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
+ if [[ ${DISTUTILS_USE_SETUPTOOLS} != pyproject.toml ]]; then
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"