All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/python-waitress: new package
@ 2024-02-07 17:18 Marcus Hoffmann via buildroot
  2025-02-05 10:16 ` Thomas Petazzoni via buildroot
  0 siblings, 1 reply; 2+ messages in thread
From: Marcus Hoffmann via buildroot @ 2024-02-07 17:18 UTC (permalink / raw)
  To: buildroot; +Cc: Asaf Kahlon, James Hilliard, Marcus Hoffmann, Thomas Petazzoni

The test runs the flask sample app through the waitress wsgi server
instead of the flask development server.

Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
---
 package/Config.in                             |  1 +
 package/python-waitress/Config.in             | 11 ++++++
 package/python-waitress/python-waitress.hash  |  5 +++
 package/python-waitress/python-waitress.mk    | 14 ++++++++
 .../tests/package/test_python_waitress.py     | 34 +++++++++++++++++++
 5 files changed, 65 insertions(+)
 create mode 100644 package/python-waitress/Config.in
 create mode 100644 package/python-waitress/python-waitress.hash
 create mode 100644 package/python-waitress/python-waitress.mk
 create mode 100644 support/testing/tests/package/test_python_waitress.py

diff --git a/package/Config.in b/package/Config.in
index 97f590e2b7..bf8c325e99 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1406,6 +1406,7 @@ menu "External python modules"
 	source "package/python-validators/Config.in"
 	source "package/python-versiontools/Config.in"
 	source "package/python-visitor/Config.in"
+	source "package/python-waitress/Config.in"
 	source "package/python-watchdog/Config.in"
 	source "package/python-wcwidth/Config.in"
 	source "package/python-weasyprint/Config.in"
diff --git a/package/python-waitress/Config.in b/package/python-waitress/Config.in
new file mode 100644
index 0000000000..7d8c73a650
--- /dev/null
+++ b/package/python-waitress/Config.in
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_PYTHON_WAITRESS
+	bool "python-waitress"
+	help
+	  Waitress WSGI server.
+
+	  Waitress is a production-quality pure-Python WSGI server
+	  with very acceptable performance. It has no dependencies
+	  except ones which live in the Python standard library.
+	  It supports HTTP/1.0 and HTTP/1.1.
+
+	  https://github.com/Pylons/waitress
diff --git a/package/python-waitress/python-waitress.hash b/package/python-waitress/python-waitress.hash
new file mode 100644
index 0000000000..c1663a351a
--- /dev/null
+++ b/package/python-waitress/python-waitress.hash
@@ -0,0 +1,5 @@
+# md5, sha256 from https://pypi.org/pypi/waitress/json
+md5  b8c671ed131b84a0099493f445c98014  waitress-3.0.0.tar.gz
+sha256  005da479b04134cdd9dd602d1ee7c49d79de0537610d653674cc6cbde222b8a1  waitress-3.0.0.tar.gz
+# Locally computed sha256 checksums
+sha256  3e671db11df687516cc1db5b3d65e4aa383eaca3c20cea3faf53a0f7335d0a3c  LICENSE.txt
diff --git a/package/python-waitress/python-waitress.mk b/package/python-waitress/python-waitress.mk
new file mode 100644
index 0000000000..c1618817dc
--- /dev/null
+++ b/package/python-waitress/python-waitress.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# python-waitress
+#
+################################################################################
+
+PYTHON_WAITRESS_VERSION = 3.0.0
+PYTHON_WAITRESS_SOURCE = waitress-$(PYTHON_WAITRESS_VERSION).tar.gz
+PYTHON_WAITRESS_SITE = https://files.pythonhosted.org/packages/70/34/cb77e5249c433eb177a11ab7425056b32d3b57855377fa1e38b397412859
+PYTHON_WAITRESS_SETUP_TYPE = setuptools
+PYTHON_WAITRESS_LICENSE = ZPL-2.1
+PYTHON_WAITRESS_LICENSE_FILES = LICENSE.txt
+
+$(eval $(python-package))
diff --git a/support/testing/tests/package/test_python_waitress.py b/support/testing/tests/package/test_python_waitress.py
new file mode 100644
index 0000000000..46f04109c0
--- /dev/null
+++ b/support/testing/tests/package/test_python_waitress.py
@@ -0,0 +1,34 @@
+import time
+
+from tests.package.test_python import TestPythonPackageBase
+
+
+class TestPythonWaitress(TestPythonPackageBase):
+    __test__ = True
+    config = TestPythonPackageBase.config + \
+        """
+        BR2_PACKAGE_PYTHON3=y
+        BR2_PACKAGE_PYTHON_FLASK=y
+        BR2_PACKAGE_PYTHON_WAITRESS=y
+        """
+
+    sample_scripts = ["tests/package/sample_python_flask.py"]
+
+    def test_run(self):
+        self.login()
+        self.check_sample_scripts_exist()
+        cmd = self.interpreter + " -m waitress sample_python_flask:app > /dev/null 2>&1 &"
+        # give some time to setup the server
+        _, exit = self.emulator.run(cmd, timeout=self.timeout)
+
+        # Give enough time for the uvicorn server to start up
+        for attempt in range(30):
+            time.sleep(1)
+
+            cmd = "wget -q -O - http://127.0.0.1:8080/"
+            output, exit_code = self.emulator.run(cmd, timeout=self.timeout)
+            if exit_code == 0:
+                self.assertEqual(output[0], 'Hello, World!')
+                break
+        else:
+            self.assertTrue(False, "Timeout while waiting for waitress server")
-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

end of thread, other threads:[~2025-02-05 10:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-07 17:18 [Buildroot] [PATCH] package/python-waitress: new package Marcus Hoffmann via buildroot
2025-02-05 10:16 ` 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.