* [Buildroot] [PATCH] package/python3: add option to disable ensurepip
@ 2024-02-06 22:59 Thomas Petazzoni via buildroot
2024-02-07 9:58 ` Marcus Hoffmann via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-02-06 22:59 UTC (permalink / raw)
To: Buildroot List
Cc: Asaf Kahlon, James Hilliard, Marcus Hoffmann, Thomas Petazzoni
This module takes 2.1 MB and is not needed in most Python
installations.
Reported-by: Marcus Hoffmann <buildroot@bubu1.eu>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
...-add-disable-ensurepip-module-option.patch | 68 +++++++++++++++++++
package/python3/Config.in | 5 ++
package/python3/python3.mk | 6 ++
3 files changed, 79 insertions(+)
create mode 100644 package/python3/0018-configure.ac-add-disable-ensurepip-module-option.patch
diff --git a/package/python3/0018-configure.ac-add-disable-ensurepip-module-option.patch b/package/python3/0018-configure.ac-add-disable-ensurepip-module-option.patch
new file mode 100644
index 0000000000..2761236c9b
--- /dev/null
+++ b/package/python3/0018-configure.ac-add-disable-ensurepip-module-option.patch
@@ -0,0 +1,68 @@
+From 10b67aeb6a6be10218c3dd675d3e54874ced1a55 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Date: Tue, 6 Feb 2024 23:49:32 +0100
+Subject: [PATCH] configure.ac: add --disable-ensurepip-module option
+
+The ensurepip module weights 2.1 MB and is only needed if you need
+"support for bootstrapping the pip installer into an existing Python
+installation or virtual environment" [1].
+
+This patch adds a --disable-ensurepip-module option that allows to not
+install it. It should not be confused with --without-ensurepip, which
+already exists, but even with --without-ensurepip, the ensurepip
+module gets installed, but not used during the build to bootstrap the
+pip installer.
+
+[1] https://docs.python.org/3/library/ensurepip.html
+
+Upstream: non-cooperative upstream
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+---
+ Makefile.pre.in | 5 ++++-
+ configure.ac | 7 +++++++
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index d9fae62aa9c..3a8e6200891 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -2096,7 +2096,6 @@ LIBSUBDIRS= asyncio \
+ dbm \
+ email email/mime \
+ encodings \
+- ensurepip ensurepip/_bundled \
+ html \
+ http \
+ importlib importlib/resources importlib/metadata \
+@@ -2274,6 +2273,10 @@ ifeq (@EXPAT@,yes)
+ LIBSUBDIRS += $(XMLLIBSUBDIRS)
+ endif
+
++ifeq (@ENSUREPIP_MODULE@,yes)
++LIBSUBDIRS += ensurepip ensurepip/_bundled
++endif
++
+ TEST_MODULES=@TEST_MODULES@
+
+ .PHONY: libinstall
+diff --git a/configure.ac b/configure.ac
+index 06df165ccc8..5774297b9da 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -6944,6 +6944,13 @@ AS_CASE([$with_ensurepip],
+ AC_MSG_RESULT([$ENSUREPIP])
+ AC_SUBST([ENSUREPIP])
+
++AC_ARG_ENABLE([ensurepip-module],
++ AS_HELP_STRING([--disable-ensurepip-module], [disable ensurepip module installation]),
++ [ENSUREPIP_MODULE="${enableval}"],
++ [ENSUREPIP_MODULE="yes"])
++AS_IF([test "${ENSUREPIP}" != "no"], [ENSUREPIP_MODULE="yes"])
++AC_SUBST([ENSUREPIP_MODULE])
++
+ # check if the dirent structure of a d_type field and DT_UNKNOWN is defined
+ AC_CACHE_CHECK([if the dirent structure of a d_type field], [ac_cv_dirent_d_type], [
+ AC_LINK_IFELSE(
+--
+2.43.0
+
diff --git a/package/python3/Config.in b/package/python3/Config.in
index 38f0580aa4..a398a1d7dd 100644
--- a/package/python3/Config.in
+++ b/package/python3/Config.in
@@ -75,6 +75,11 @@ config BR2_PACKAGE_PYTHON3_DECIMAL
help
decimal module for Python3.
+config BR2_PACKAGE_PYTHON3_ENSUREPIP
+ bool "ensurepip module"
+ help
+ ensurepip module for Python3.
+
config BR2_PACKAGE_PYTHON3_OSSAUDIODEV
bool "ossaudiodev module"
help
diff --git a/package/python3/python3.mk b/package/python3/python3.mk
index 42765abcf4..8685ca238d 100644
--- a/package/python3/python3.mk
+++ b/package/python3/python3.mk
@@ -107,6 +107,12 @@ else
PYTHON3_CONF_ENV += py_cv_module__decimal=n/a
endif
+ifeq ($(BR2_PACKAGE_PYTHON3_ENSUREPIP),y)
+PYTHON3_CONF_OPTS += --enable-ensurepip-module
+else
+PYTHON3_CONF_OPTS += --disable-ensurepip-module
+endif
+
ifeq ($(BR2_PACKAGE_PYTHON3_PYEXPAT),y)
PYTHON3_DEPENDENCIES += expat
PYTHON3_CONF_OPTS += --with-expat=system
--
2.43.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [Buildroot] [PATCH] package/python3: add option to disable ensurepip
2024-02-06 22:59 [Buildroot] [PATCH] package/python3: add option to disable ensurepip Thomas Petazzoni via buildroot
@ 2024-02-07 9:58 ` Marcus Hoffmann via buildroot
2024-04-01 9:34 ` Yann E. MORIN
0 siblings, 1 reply; 4+ messages in thread
From: Marcus Hoffmann via buildroot @ 2024-02-07 9:58 UTC (permalink / raw)
To: Thomas Petazzoni, Buildroot List; +Cc: James Hilliard, Asaf Kahlon
Hi Thomas,
On 06.02.24 23:59, Thomas Petazzoni via buildroot wrote:
> This module takes 2.1 MB and is not needed in most Python
> installations.
>
> Reported-by: Marcus Hoffmann <buildroot@bubu1.eu>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Thanks a lot for this patch after my suggestion! Patch looks good, but
given the unfortunate "non-cooperative upstream", I still wonder if this
wouldn't be easier to maintain if we just remove the installed module
after the fact with a post install hook? I suppose a similar thing could
be done for the other optional modules as well with the new
py_cv_module_XYZ, which disables the native part but still requires
patching makefile/configure.ac for not installing the python lib part.
Both approaches work and get us to the same end result, so it's not too
important to worry about, I guess :).
Reviewed-by: Marcus Hoffmann <buildroot@bubu1.eu>
> ---
> ...-add-disable-ensurepip-module-option.patch | 68 +++++++++++++++++++
> package/python3/Config.in | 5 ++
> package/python3/python3.mk | 6 ++
> 3 files changed, 79 insertions(+)
> create mode 100644 package/python3/0018-configure.ac-add-disable-ensurepip-module-option.patch
>
> diff --git a/package/python3/0018-configure.ac-add-disable-ensurepip-module-option.patch b/package/python3/0018-configure.ac-add-disable-ensurepip-module-option.patch
> new file mode 100644
> index 0000000000..2761236c9b
> --- /dev/null
> +++ b/package/python3/0018-configure.ac-add-disable-ensurepip-module-option.patch
> @@ -0,0 +1,68 @@
> +From 10b67aeb6a6be10218c3dd675d3e54874ced1a55 Mon Sep 17 00:00:00 2001
> +From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> +Date: Tue, 6 Feb 2024 23:49:32 +0100
> +Subject: [PATCH] configure.ac: add --disable-ensurepip-module option
> +
> +The ensurepip module weights 2.1 MB and is only needed if you need
> +"support for bootstrapping the pip installer into an existing Python
> +installation or virtual environment" [1].
> +
> +This patch adds a --disable-ensurepip-module option that allows to not
> +install it. It should not be confused with --without-ensurepip, which
> +already exists, but even with --without-ensurepip, the ensurepip
> +module gets installed, but not used during the build to bootstrap the
> +pip installer.
> +
> +[1] https://docs.python.org/3/library/ensurepip.html
> +
> +Upstream: non-cooperative upstream
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> +---
> + Makefile.pre.in | 5 ++++-
> + configure.ac | 7 +++++++
> + 2 files changed, 11 insertions(+), 1 deletion(-)
> +
> +diff --git a/Makefile.pre.in b/Makefile.pre.in
> +index d9fae62aa9c..3a8e6200891 100644
> +--- a/Makefile.pre.in
> ++++ b/Makefile.pre.in
> +@@ -2096,7 +2096,6 @@ LIBSUBDIRS= asyncio \
> + dbm \
> + email email/mime \
> + encodings \
> +- ensurepip ensurepip/_bundled \
> + html \
> + http \
> + importlib importlib/resources importlib/metadata \
> +@@ -2274,6 +2273,10 @@ ifeq (@EXPAT@,yes)
> + LIBSUBDIRS += $(XMLLIBSUBDIRS)
> + endif
> +
> ++ifeq (@ENSUREPIP_MODULE@,yes)
> ++LIBSUBDIRS += ensurepip ensurepip/_bundled
> ++endif
> ++
> + TEST_MODULES=@TEST_MODULES@
> +
> + .PHONY: libinstall
> +diff --git a/configure.ac b/configure.ac
> +index 06df165ccc8..5774297b9da 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -6944,6 +6944,13 @@ AS_CASE([$with_ensurepip],
> + AC_MSG_RESULT([$ENSUREPIP])
> + AC_SUBST([ENSUREPIP])
> +
> ++AC_ARG_ENABLE([ensurepip-module],
> ++ AS_HELP_STRING([--disable-ensurepip-module], [disable ensurepip module installation]),
> ++ [ENSUREPIP_MODULE="${enableval}"],
> ++ [ENSUREPIP_MODULE="yes"])
> ++AS_IF([test "${ENSUREPIP}" != "no"], [ENSUREPIP_MODULE="yes"])
> ++AC_SUBST([ENSUREPIP_MODULE])
> ++
> + # check if the dirent structure of a d_type field and DT_UNKNOWN is defined
> + AC_CACHE_CHECK([if the dirent structure of a d_type field], [ac_cv_dirent_d_type], [
> + AC_LINK_IFELSE(
> +--
> +2.43.0
> +
> diff --git a/package/python3/Config.in b/package/python3/Config.in
> index 38f0580aa4..a398a1d7dd 100644
> --- a/package/python3/Config.in
> +++ b/package/python3/Config.in
> @@ -75,6 +75,11 @@ config BR2_PACKAGE_PYTHON3_DECIMAL
> help
> decimal module for Python3.
>
> +config BR2_PACKAGE_PYTHON3_ENSUREPIP
> + bool "ensurepip module"
> + help
> + ensurepip module for Python3.
> +
> config BR2_PACKAGE_PYTHON3_OSSAUDIODEV
> bool "ossaudiodev module"
> help
> diff --git a/package/python3/python3.mk b/package/python3/python3.mk
> index 42765abcf4..8685ca238d 100644
> --- a/package/python3/python3.mk
> +++ b/package/python3/python3.mk
> @@ -107,6 +107,12 @@ else
> PYTHON3_CONF_ENV += py_cv_module__decimal=n/a
> endif
>
> +ifeq ($(BR2_PACKAGE_PYTHON3_ENSUREPIP),y)
> +PYTHON3_CONF_OPTS += --enable-ensurepip-module
> +else
> +PYTHON3_CONF_OPTS += --disable-ensurepip-module
> +endif
> +
> ifeq ($(BR2_PACKAGE_PYTHON3_PYEXPAT),y)
> PYTHON3_DEPENDENCIES += expat
> PYTHON3_CONF_OPTS += --with-expat=system
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [Buildroot] [PATCH] package/python3: add option to disable ensurepip
2024-02-07 9:58 ` Marcus Hoffmann via buildroot
@ 2024-04-01 9:34 ` Yann E. MORIN
2024-04-04 9:34 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: Yann E. MORIN @ 2024-04-01 9:34 UTC (permalink / raw)
To: Marcus Hoffmann
Cc: James Hilliard, Asaf Kahlon, Thomas Petazzoni, Buildroot List
Marcus, All,
On 2024-02-07 10:58 +0100, Marcus Hoffmann via buildroot spake thusly:
> On 06.02.24 23:59, Thomas Petazzoni via buildroot wrote:
> > This module takes 2.1 MB and is not needed in most Python
> > installations.
> Thanks a lot for this patch after my suggestion! Patch looks good, but given
> the unfortunate "non-cooperative upstream", I still wonder if this wouldn't
> be easier to maintain if we just remove the installed module after the fact
> with a post install hook? I suppose a similar thing could be done for the
> other optional modules as well with the new py_cv_module_XYZ, which disables
> the native part but still requires patching makefile/configure.ac for not
> installing the python lib part.
I agree: it would be better to remove that as a post-install hook.
Patch markes as changes-requested.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH] package/python3: add option to disable ensurepip
2024-04-01 9:34 ` Yann E. MORIN
@ 2024-04-04 9:34 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-04-04 9:34 UTC (permalink / raw)
To: Yann E. MORIN
Cc: James Hilliard, Marcus Hoffmann, Asaf Kahlon, Buildroot List
On Mon, 1 Apr 2024 11:34:42 +0200
"Yann E. MORIN" <yann.morin.1998@free.fr> wrote:
> On 2024-02-07 10:58 +0100, Marcus Hoffmann via buildroot spake thusly:
> > On 06.02.24 23:59, Thomas Petazzoni via buildroot wrote:
> > > This module takes 2.1 MB and is not needed in most Python
> > > installations.
> > Thanks a lot for this patch after my suggestion! Patch looks good, but given
> > the unfortunate "non-cooperative upstream", I still wonder if this wouldn't
> > be easier to maintain if we just remove the installed module after the fact
> > with a post install hook? I suppose a similar thing could be done for the
> > other optional modules as well with the new py_cv_module_XYZ, which disables
> > the native part but still requires patching makefile/configure.ac for not
> > installing the python lib part.
>
> I agree: it would be better to remove that as a post-install hook.
>
> Patch markes as changes-requested.
Thing is that we do it differently for every other optional feature.
While I appreciate the non-cooperative nature of the Python upstream
community, I still think we should be doing things in a consistent way,
and how we're doing things today for other optional Python features is
using configure.ac/Makefile patching.
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-04-04 9:35 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-06 22:59 [Buildroot] [PATCH] package/python3: add option to disable ensurepip Thomas Petazzoni via buildroot
2024-02-07 9:58 ` Marcus Hoffmann via buildroot
2024-04-01 9:34 ` Yann E. MORIN
2024-04-04 9:34 ` Thomas Petazzoni via buildroot
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.