All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] python: fix editable installs for modern pip/setuptools
@ 2025-07-15 22:25 John Snow
  2025-07-15 22:32 ` John Snow
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: John Snow @ 2025-07-15 22:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: Markus Armbruster, Akihiko Odaki, John Snow, Cleber Rosa

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



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] python: fix editable installs for modern pip/setuptools
  2025-07-15 22:25 [PATCH] python: fix editable installs for modern pip/setuptools John Snow
@ 2025-07-15 22:32 ` John Snow
  2025-07-16 15:14 ` Markus Armbruster
  2025-07-16 17:04 ` Markus Armbruster
  2 siblings, 0 replies; 4+ messages in thread
From: John Snow @ 2025-07-15 22:32 UTC (permalink / raw)
  To: qemu-devel; +Cc: Markus Armbruster, Akihiko Odaki, Cleber Rosa

[-- Attachment #1: Type: text/plain, Size: 3597 bytes --]

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.

>

[-- Attachment #2: Type: text/html, Size: 4744 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] python: fix editable installs for modern pip/setuptools
  2025-07-15 22:25 [PATCH] python: fix editable installs for modern pip/setuptools John Snow
  2025-07-15 22:32 ` John Snow
@ 2025-07-16 15:14 ` Markus Armbruster
  2025-07-16 17:04 ` Markus Armbruster
  2 siblings, 0 replies; 4+ messages in thread
From: Markus Armbruster @ 2025-07-16 15:14 UTC (permalink / raw)
  To: John Snow; +Cc: qemu-devel, Akihiko Odaki, Cleber Rosa

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>

[...]



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] python: fix editable installs for modern pip/setuptools
  2025-07-15 22:25 [PATCH] python: fix editable installs for modern pip/setuptools John Snow
  2025-07-15 22:32 ` John Snow
  2025-07-16 15:14 ` Markus Armbruster
@ 2025-07-16 17:04 ` Markus Armbruster
  2 siblings, 0 replies; 4+ messages in thread
From: Markus Armbruster @ 2025-07-16 17:04 UTC (permalink / raw)
  To: John Snow; +Cc: qemu-devel, Akihiko Odaki, Cleber Rosa

Queued for 10.1.  Thanks!



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-07-16 17:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-15 22:25 [PATCH] python: fix editable installs for modern pip/setuptools John Snow
2025-07-15 22:32 ` John Snow
2025-07-16 15:14 ` Markus Armbruster
2025-07-16 17:04 ` Markus Armbruster

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.