* [Buildroot] [PATCH 0/2] package: add new python packages
@ 2026-02-10 21:01 Alexis Lothoré via buildroot
2026-02-10 21:01 ` [Buildroot] [PATCH 1/2] package/python-gevent: new package Alexis Lothoré via buildroot
2026-02-10 21:01 ` [Buildroot] [PATCH 2/2] package/python-flask-socketio: " Alexis Lothoré via buildroot
0 siblings, 2 replies; 3+ messages in thread
From: Alexis Lothoré via buildroot @ 2026-02-10 21:01 UTC (permalink / raw)
To: buildroot
Cc: James Hilliard, Alexis Lothoré, Nicolas Carrier,
Thomas Petazzoni
Hello,
this small series aims to introduce two new python packages:
- python-flask-socketio: allows event-based bi-directional
communication between Flask applications and server
- python-gevent: a coroutine-based network library, as a dependency of
python-flask-socketio
python-flask-socketio needs at least one of those dependencies:
- eventlet
- gevent
- flask dev server
[0] mentions that eventlet is discouraged for new projects, and [1]
states that Flask webserver should not be used for production, hence
this series selects gevent as the default dependency for
python-flask-socketio.
- The two packages have been generated with ./utils/scanpypi, and adjusted
accordingly (license, and build/runtime dependencies).
- Both packages bring a minimal test ensuring at least that the
corresponding import can be performed as well as basic
instantation/manipulation
- Both packages have been tested locally with ./utils/test-pkg, and
./support/testing/run-tests (through ./utils/docker-run)
[0] https://eventlet.readthedocs.io/en/latest/
[1] https://flask-socketio.readthedocs.io/en/latest/intro.html#requirements
Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
---
Alexis Lothoré (2):
package/python-gevent: new package
package/python-flask-socketio: new package
DEVELOPERS | 2 ++
package/Config.in | 2 ++
package/python-flask-socketio/Config.in | 14 ++++++++++++++
.../python-flask-socketio/python-flask-socketio.hash | 5 +++++
.../python-flask-socketio/python-flask-socketio.mk | 14 ++++++++++++++
package/python-gevent/Config.in | 19 +++++++++++++++++++
package/python-gevent/python-gevent.hash | 5 +++++
package/python-gevent/python-gevent.mk | 16 ++++++++++++++++
.../tests/package/sample_python_flask_socketio.py | 5 +++++
support/testing/tests/package/sample_python_gevent.py | 7 +++++++
.../tests/package/test_python_flask_socketio.py | 12 ++++++++++++
support/testing/tests/package/test_python_gevent.py | 12 ++++++++++++
12 files changed, 113 insertions(+)
---
base-commit: 94a817a58909e1cfe0c1f63b63754079f1866523
change-id: 20250804-python-packages-5e4a98a47c1d
Best regards,
--
Alexis Lothoré <alexis.lothore@bootlin.com>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 3+ messages in thread* [Buildroot] [PATCH 1/2] package/python-gevent: new package
2026-02-10 21:01 [Buildroot] [PATCH 0/2] package: add new python packages Alexis Lothoré via buildroot
@ 2026-02-10 21:01 ` Alexis Lothoré via buildroot
2026-02-10 21:01 ` [Buildroot] [PATCH 2/2] package/python-flask-socketio: " Alexis Lothoré via buildroot
1 sibling, 0 replies; 3+ messages in thread
From: Alexis Lothoré via buildroot @ 2026-02-10 21:01 UTC (permalink / raw)
To: buildroot
Cc: James Hilliard, Alexis Lothoré, Nicolas Carrier,
Thomas Petazzoni
Bring python-gevent module as a standalone package.
Set GEVENTSETUP_EMBED=0 to prevent python-gevent from using its embedded
libuv, libev and c-ares and rather use those packaged with buildroot.
Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
---
DEVELOPERS | 1 +
package/Config.in | 1 +
package/python-gevent/Config.in | 19 +++++++++++++++++++
package/python-gevent/python-gevent.hash | 5 +++++
package/python-gevent/python-gevent.mk | 16 ++++++++++++++++
support/testing/tests/package/sample_python_gevent.py | 7 +++++++
support/testing/tests/package/test_python_gevent.py | 12 ++++++++++++
7 files changed, 61 insertions(+)
diff --git a/DEVELOPERS b/DEVELOPERS
index 225d1ac917dc..cc7c38c31873 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -155,6 +155,7 @@ N: Alexey Lukyanchuk <skif@skif-web.ru>
F: package/zabbix/
N: Alexis Lothoré <alexis.lothore@bootlin.com>
+F: package/python-gevent
F: package/python-scp
N: Alistair Francis <alistair@alistair23.me>
diff --git a/package/Config.in b/package/Config.in
index 6284bea7f4ad..76c2a4365513 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1127,6 +1127,7 @@ menu "External python modules"
source "package/python-fonttools/Config.in"
source "package/python-frozenlist/Config.in"
source "package/python-future/Config.in"
+ source "package/python-gevent/Config.in"
source "package/python-git/Config.in"
source "package/python-gitdb2/Config.in"
source "package/python-gnupg/Config.in"
diff --git a/package/python-gevent/Config.in b/package/python-gevent/Config.in
new file mode 100644
index 000000000000..af7a97a49ce3
--- /dev/null
+++ b/package/python-gevent/Config.in
@@ -0,0 +1,19 @@
+config BR2_PACKAGE_PYTHON_GEVENT
+ bool "python-gevent"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++20
+ select BR2_PACKAGE_C_ARES # runtime
+ select BR2_PACKAGE_LIBEV # runtime
+ select BR2_PACKAGE_LIBUV # runtime
+ select BR2_PACKAGE_HOST_PYTHON_CYTHON # build time
+ select BR2_PACKAGE_HOST_PYTHON_GREENLET # build time
+ select BR2_PACKAGE_HOST_PYTHON_CFFI # build time
+ select BR2_PACKAGE_PYTHON_GREENLET # runtime
+ select BR2_PACKAGE_PYTHON_ZOPEEVENT # runtime
+ select BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime
+ help
+ Coroutine-based network library.
+
+ http://www.gevent.org/
+
+comment "python-gevent needs a toolchain w/ C++, gcc >= 8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
diff --git a/package/python-gevent/python-gevent.hash b/package/python-gevent/python-gevent.hash
new file mode 100644
index 000000000000..4356972ddd50
--- /dev/null
+++ b/package/python-gevent/python-gevent.hash
@@ -0,0 +1,5 @@
+# md5, sha256 from https://pypi.org/pypi/gevent/json
+md5 a415693013e79df4c88a9e5fc90254bc gevent-25.9.1.tar.gz
+sha256 adf9cd552de44a4e6754c51ff2e78d9193b7fa6eab123db9578a210e657235dd gevent-25.9.1.tar.gz
+# Locally computed sha256 checksums
+sha256 4d46bc11d19e3853d54325973b8e2c53090f5638a7bf27fa1f5f1232c78901f7 LICENSE
diff --git a/package/python-gevent/python-gevent.mk b/package/python-gevent/python-gevent.mk
new file mode 100644
index 000000000000..10ddc895f74b
--- /dev/null
+++ b/package/python-gevent/python-gevent.mk
@@ -0,0 +1,16 @@
+################################################################################
+#
+# python-gevent
+#
+################################################################################
+
+PYTHON_GEVENT_VERSION = 25.9.1
+PYTHON_GEVENT_SOURCE = gevent-$(PYTHON_GEVENT_VERSION).tar.gz
+PYTHON_GEVENT_SITE = https://files.pythonhosted.org/packages/9e/48/b3ef2673ffb940f980966694e40d6d32560f3ffa284ecaeb5ea3a90a6d3f
+PYTHON_GEVENT_SETUP_TYPE = setuptools
+PYTHON_GEVENT_DEPENDENCIES = libev libuv host-python-greenlet host-python-cffi host-python-cython
+PYTHON_GEVENT_LICENSE = MIT
+PYTHON_GEVENT_LICENSE_FILES = LICENSE
+PYTHON_GEVENT_ENV = GEVENTSETUP_EMBED=0
+
+$(eval $(python-package))
diff --git a/support/testing/tests/package/sample_python_gevent.py b/support/testing/tests/package/sample_python_gevent.py
new file mode 100644
index 000000000000..e8f065c17e88
--- /dev/null
+++ b/support/testing/tests/package/sample_python_gevent.py
@@ -0,0 +1,7 @@
+# Example taken from the official documentation
+import gevent
+from gevent import socket
+
+urls = ['www.google.com', 'www.example.com', 'www.python.org']
+jobs = [gevent.spawn(socket.gethostbyname, url) for url in urls]
+_ = gevent.joinall(jobs, timeout=2)
diff --git a/support/testing/tests/package/test_python_gevent.py b/support/testing/tests/package/test_python_gevent.py
new file mode 100644
index 000000000000..567cae182d2b
--- /dev/null
+++ b/support/testing/tests/package/test_python_gevent.py
@@ -0,0 +1,12 @@
+from tests.package.test_python import TestPythonPackageBase
+
+
+class TestPythonGevent(TestPythonPackageBase):
+ __test__ = True
+ config = TestPythonPackageBase.config + \
+ """
+ BR2_PACKAGE_PYTHON3=y
+ BR2_PACKAGE_PYTHON_GEVENT=y
+ """
+ sample_scripts = ["tests/package/sample_python_gevent.py"]
+ timeout = 30
--
2.52.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH 2/2] package/python-flask-socketio: new package
2026-02-10 21:01 [Buildroot] [PATCH 0/2] package: add new python packages Alexis Lothoré via buildroot
2026-02-10 21:01 ` [Buildroot] [PATCH 1/2] package/python-gevent: new package Alexis Lothoré via buildroot
@ 2026-02-10 21:01 ` Alexis Lothoré via buildroot
1 sibling, 0 replies; 3+ messages in thread
From: Alexis Lothoré via buildroot @ 2026-02-10 21:01 UTC (permalink / raw)
To: buildroot
Cc: James Hilliard, Alexis Lothoré, Nicolas Carrier,
Thomas Petazzoni
Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
---
DEVELOPERS | 1 +
package/Config.in | 1 +
package/python-flask-socketio/Config.in | 14 ++++++++++++++
package/python-flask-socketio/python-flask-socketio.hash | 5 +++++
package/python-flask-socketio/python-flask-socketio.mk | 14 ++++++++++++++
.../testing/tests/package/sample_python_flask_socketio.py | 5 +++++
.../testing/tests/package/test_python_flask_socketio.py | 12 ++++++++++++
7 files changed, 52 insertions(+)
diff --git a/DEVELOPERS b/DEVELOPERS
index cc7c38c31873..4ff9b3b593de 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -155,6 +155,7 @@ N: Alexey Lukyanchuk <skif@skif-web.ru>
F: package/zabbix/
N: Alexis Lothoré <alexis.lothore@bootlin.com>
+F: package/python-flask-socketio
F: package/python-gevent
F: package/python-scp
diff --git a/package/Config.in b/package/Config.in
index 76c2a4365513..bbb7297dd2aa 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1120,6 +1120,7 @@ menu "External python modules"
source "package/python-flask-login/Config.in"
source "package/python-flask-restx/Config.in"
source "package/python-flask-smorest/Config.in"
+ source "package/python-flask-socketio/Config.in"
source "package/python-flask-sqlalchemy/Config.in"
source "package/python-flask-wtf/Config.in"
source "package/python-flatbuffers/Config.in"
diff --git a/package/python-flask-socketio/Config.in b/package/python-flask-socketio/Config.in
new file mode 100644
index 000000000000..ec7f3833f8cb
--- /dev/null
+++ b/package/python-flask-socketio/Config.in
@@ -0,0 +1,14 @@
+config BR2_PACKAGE_PYTHON_FLASK_SOCKETIO
+ bool "python-flask-socketio"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++20
+ select BR2_PACKAGE_PYTHON_FLASK # runtime
+ select BR2_PACKAGE_PYTHON_GEVENT # runtime
+ select BR2_PACKAGE_PYTHON_SOCKETIO # runtime
+ select BR2_PACKAGE_PYTHON3_SSL # runtime
+ help
+ Socket.IO integration for Flask applications.
+
+ https://github.com/miguelgrinberg/flask-socketio
+
+comment "python-flask-socketio needs a toolchain w/ C++, gcc >= 8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
diff --git a/package/python-flask-socketio/python-flask-socketio.hash b/package/python-flask-socketio/python-flask-socketio.hash
new file mode 100644
index 000000000000..0d517134e6c4
--- /dev/null
+++ b/package/python-flask-socketio/python-flask-socketio.hash
@@ -0,0 +1,5 @@
+# md5, sha256 from https://pypi.org/pypi/flask-socketio/json
+md5 50872c7e1d558fcbe60a942c5519703d flask_socketio-5.6.0.tar.gz
+sha256 42a7bc552013633875ad320e39462323b4f7334594f1658d72b6ffed99940d4c flask_socketio-5.6.0.tar.gz
+# Locally computed sha256 checksums
+sha256 68d0966e480a8d2fd3d5c26d002c996ef08cdfa2b15a77d0d0b593b9abee60a4 LICENSE
diff --git a/package/python-flask-socketio/python-flask-socketio.mk b/package/python-flask-socketio/python-flask-socketio.mk
new file mode 100644
index 000000000000..bdc60bdac24f
--- /dev/null
+++ b/package/python-flask-socketio/python-flask-socketio.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# python-flask-socketio
+#
+################################################################################
+
+PYTHON_FLASK_SOCKETIO_VERSION = 5.6.0
+PYTHON_FLASK_SOCKETIO_SOURCE = flask_socketio-$(PYTHON_FLASK_SOCKETIO_VERSION).tar.gz
+PYTHON_FLASK_SOCKETIO_SITE = https://files.pythonhosted.org/packages/53/28/deac60f5c6faf9c3e0aed07aa3a92b0741c6709841aa3eba12417bbc8303
+PYTHON_FLASK_SOCKETIO_SETUP_TYPE = setuptools
+PYTHON_FLASK_SOCKETIO_LICENSE = MIT
+PYTHON_FLASK_SOCKETIO_LICENSE_FILES = LICENSE
+
+$(eval $(python-package))
diff --git a/support/testing/tests/package/sample_python_flask_socketio.py b/support/testing/tests/package/sample_python_flask_socketio.py
new file mode 100644
index 000000000000..11f8050c7085
--- /dev/null
+++ b/support/testing/tests/package/sample_python_flask_socketio.py
@@ -0,0 +1,5 @@
+from flask import Flask
+from flask_socketio import SocketIO
+
+app = Flask('test')
+socketio = SocketIO(app)
diff --git a/support/testing/tests/package/test_python_flask_socketio.py b/support/testing/tests/package/test_python_flask_socketio.py
new file mode 100644
index 000000000000..e977db0b441e
--- /dev/null
+++ b/support/testing/tests/package/test_python_flask_socketio.py
@@ -0,0 +1,12 @@
+from tests.package.test_python import TestPythonPackageBase
+
+
+class TestPythonFlaskSocketIO(TestPythonPackageBase):
+ __test__ = True
+ config = TestPythonPackageBase.config + \
+ """
+ BR2_PACKAGE_PYTHON3=y
+ BR2_PACKAGE_PYTHON_FLASK_SOCKETIO=y
+ """
+ sample_scripts = ["tests/package/sample_python_flask_socketio.py"]
+ timeout = 30
--
2.52.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-02-10 21:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-10 21:01 [Buildroot] [PATCH 0/2] package: add new python packages Alexis Lothoré via buildroot
2026-02-10 21:01 ` [Buildroot] [PATCH 1/2] package/python-gevent: new package Alexis Lothoré via buildroot
2026-02-10 21:01 ` [Buildroot] [PATCH 2/2] package/python-flask-socketio: " Alexis Lothoré 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.