The way editable installs work has changed at some point since Fedora 40
was released. Generally, we should be opting to use pyproject.toml
installs (PEP517/518) - but those are not fully supported until v61 of
setuptools, and CentOS Stream 9 ships v53.
Until that time, we can make use of a transitional feature in
pip/setuptools to use "legacy" editable installs, which is enough to fix
"make check-dev" on modern local workstations for now.
By using the environment variable approach to configure pip, we avoid
any problems for older versions of pip that don't recognize this option,
so it's harmless. The config-settings option first appeared in v23 of
pip. editable_mode was first supported by setuptools in v64.
(I'm not currently precisely aware of when the default behavior of '-e'
switched away from 'compat', but it appears to be a joint effect between
setuptools and pip versions.)
Version information for supported build platforms:
distro python3 pip setuptools sphinx
--------------------------------------------------------
centos_stream_9 3.9.23 21.3.1 53.0.0 3.4.3
ubuntu_22_04 3.10.12 22.0.2 59.6.0 4.3.2
** pyproject.toml installs supported as of here **
freebsd 3.11.13 23.3.2 63.1.0 5.3.0
debian_12 3.11.2 23.0.1 66.1.1 5.3.0
ubuntu_24_04 3.12.3 24.0 68.1.2 7.2.6
centos_stream_10 3.12.11 23.3.2 69.0.3 7.2.6
fedora_41 3.13.5 24.2 69.2.0 7.3.7
alpine_3_19 3.11.13 23.3.1 70.3.0 6.2.1
alpine_3_20 3.12.11 24.0 70.3.0 7.2.6
alpine_3_21 3.12.11 24.3.1 70.3.0 8.1.3
ubuntu_24_10 3.12.7 24.2 74.1.2 7.4.7
fedora_42 3.13.5 24.3.1 74.1.3 8.1.3
ubuntu_25_04 3.13.3 25.0 75.8.0 8.1.3
macports 3.13.5 25.1.1 78.1.1 8.2.3
openbsd 3.12.11 25.1.1 79.0.1 8.2.3
alpine_3_22 3.12.11 25.1.1 80.9.0 8.2.3
homebrew 3.13.5 --- 80.9.0 8.2.3
pkgsrc_current 3.12.11 25.1.1 80.9.0 8.2.3
Signed-off-by: John Snow <jsnow@redhat.com>
---
python/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/python/Makefile b/python/Makefile
index 764b79ccb23..32aedce4137 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -68,7 +68,7 @@ $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.tx
echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\
$(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \
echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \
- $(PIP_INSTALL) -e . 1>/dev/null; \
+ PIP_CONFIG_SETTINGS="editable_mode=compat" $(PIP_INSTALL) -e . 1>/dev/null; \
)
@touch $(QEMU_MINVENV_DIR)
@@ -103,7 +103,7 @@ check-dev: dev-venv
.PHONY: develop
develop:
- $(PIP_INSTALL) -e .[devel]
+ PIP_CONFIG_SETTINGS="editable_mode=compat" $(PIP_INSTALL) -e .[devel]
.PHONY: check
check:
--
2.50.0
Queued for 10.1. Thanks!
John Snow <jsnow@redhat.com> writes: > The way editable installs work has changed at some point since Fedora 40 > was released. Generally, we should be opting to use pyproject.toml > installs (PEP517/518) - but those are not fully supported until v61 of > setuptools, and CentOS Stream 9 ships v53. > > Until that time, we can make use of a transitional feature in > pip/setuptools to use "legacy" editable installs, which is enough to fix > "make check-dev" on modern local workstations for now. This fixes "make check-dev" for me on Fedora 41. Thank you! Tested-by: Markus Armbruster <armbru@redhat.com> [...]
On Tue, Jul 15, 2025, 6:27 PM John Snow <jsnow@redhat.com> wrote: > The way editable installs work has changed at some point since Fedora 40 > was released. Generally, we should be opting to use pyproject.toml > installs (PEP517/518) - but those are not fully supported until v61 of > setuptools, and CentOS Stream 9 ships v53. > > Until that time, we can make use of a transitional feature in > pip/setuptools to use "legacy" editable installs, which is enough to fix > "make check-dev" on modern local workstations for now. > > By using the environment variable approach to configure pip, we avoid > any problems for older versions of pip that don't recognize this option, > so it's harmless. The config-settings option first appeared in v23 of > pip. editable_mode was first supported by setuptools in v64. > > (I'm not currently precisely aware of when the default behavior of '-e' > switched away from 'compat', but it appears to be a joint effect between > setuptools and pip versions.) > > Version information for supported build platforms: > > distro python3 pip setuptools sphinx > -------------------------------------------------------- > centos_stream_9 3.9.23 21.3.1 53.0.0 3.4.3 > ubuntu_22_04 3.10.12 22.0.2 59.6.0 4.3.2 > > ** pyproject.toml installs supported as of here ** > > freebsd 3.11.13 23.3.2 63.1.0 5.3.0 > debian_12 3.11.2 23.0.1 66.1.1 5.3.0 > ubuntu_24_04 3.12.3 24.0 68.1.2 7.2.6 > centos_stream_10 3.12.11 23.3.2 69.0.3 7.2.6 > fedora_41 3.13.5 24.2 69.2.0 7.3.7 > alpine_3_19 3.11.13 23.3.1 70.3.0 6.2.1 > alpine_3_20 3.12.11 24.0 70.3.0 7.2.6 > alpine_3_21 3.12.11 24.3.1 70.3.0 8.1.3 > ubuntu_24_10 3.12.7 24.2 74.1.2 7.4.7 > fedora_42 3.13.5 24.3.1 74.1.3 8.1.3 > ubuntu_25_04 3.13.3 25.0 75.8.0 8.1.3 > macports 3.13.5 25.1.1 78.1.1 8.2.3 > openbsd 3.12.11 25.1.1 79.0.1 8.2.3 > alpine_3_22 3.12.11 25.1.1 80.9.0 8.2.3 > homebrew 3.13.5 --- 80.9.0 8.2.3 > pkgsrc_current 3.12.11 25.1.1 80.9.0 8.2.3 > > Signed-off-by: John Snow <jsnow@redhat.com> > --- > python/Makefile | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/python/Makefile b/python/Makefile > index 764b79ccb23..32aedce4137 100644 > --- a/python/Makefile > +++ b/python/Makefile > @@ -68,7 +68,7 @@ $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: > setup.cfg tests/minreqs.tx > echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\ > $(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \ > echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \ > - $(PIP_INSTALL) -e . 1>/dev/null; \ > + PIP_CONFIG_SETTINGS="editable_mode=compat" $(PIP_INSTALL) > -e . 1>/dev/null; \ > ) > @touch $(QEMU_MINVENV_DIR) > > @@ -103,7 +103,7 @@ check-dev: dev-venv > > .PHONY: develop > develop: > - $(PIP_INSTALL) -e .[devel] > + PIP_CONFIG_SETTINGS="editable_mode=compat" $(PIP_INSTALL) -e > .[devel] > > .PHONY: check > check: > -- > 2.50.0 > For what it's worth, I think this patch is safe to include in an early rc as it should effect only testing - but if we don't feel it is safe, it's also a very work-aroundable problem. >
© 2016 - 2025 Red Hat, Inc.