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>
This commit is contained in:
Michał Górny
2021-02-06 12:48:41 +01:00
parent ad5224a432
commit 2c73988700

View File

@@ -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"