commit:     2c7398870085874bae3bb77c4b6bfc5895ddcf51
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Feb  6 11:48:41 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Feb 11 20:31:12 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c739887

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 <AT> gentoo.org>

 eclass/distutils-r1.eclass | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index d5bb0df4d92..cb64938c8c3 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"

Reply via email to