[Buildroot] [PATCH 2/2] package/python-uvloop: work-around m68k toolchain infinite loop

Giulio Benetti giulio.benetti at benettiengineering.com
Thu Sep 23 16:45:53 UTC 2021


Add patch[1] to allow overriding the default -O2 flag always appended at
the end of the python Extension. This is needed to pass -O0 to gcc to
work-around the gcc bug 102472. So when
BR2_TOOLCHAIN_HAS_GCC_BUG_102472=y let's pass -O0 to MODULES_CFLAGS

Pending patch:
[1]: https://github.com/MagicStack/uvloop/pull/443

Fixes:
http://autobuild.buildroot.net/results/17d/17d6e6422abadcd6313c430c40f2a5d7162dbbd3/

Signed-off-by: Giulio Benetti <giulio.benetti at benettiengineering.com>
---
 ...allow-to-override-extra_compile_args.patch | 42 +++++++++++++++++++
 package/python-uvloop/python-uvloop.mk        |  4 ++
 2 files changed, 46 insertions(+)
 create mode 100644 package/python-uvloop/0001-setup.py-allow-to-override-extra_compile_args.patch

diff --git a/package/python-uvloop/0001-setup.py-allow-to-override-extra_compile_args.patch b/package/python-uvloop/0001-setup.py-allow-to-override-extra_compile_args.patch
new file mode 100644
index 0000000000..94f1ecf93d
--- /dev/null
+++ b/package/python-uvloop/0001-setup.py-allow-to-override-extra_compile_args.patch
@@ -0,0 +1,42 @@
+From b415e5175500117950f56b5eded1e82acac49c16 Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti at benettiengineering.com>
+Date: Thu, 23 Sep 2021 16:47:55 +0200
+Subject: [PATCH] setup.py: allow to override extra_compile_args
+
+At the moment extra_compile_args is set to -O2 by default. But m68k
+toolchain has a bug that when trying to build Extension uvloop.loop enters
+an infinite loop1. So we need to override -O2 with -O0 to make it
+work. So let's getenv('MODULES_CFLAGS') and assign it to local
+MODULES_CFLAGS (former CFLAGS) and assign it to extra_compile_args. If
+not MODULES_CFLAGS is found then -O2 is kept as default.
+
+Signed-off-by: Giulio Benetti <giulio.benetti at benettiengineering.com>
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index eae4910..ec23d13 100644
+--- a/setup.py
++++ b/setup.py
+@@ -55,7 +55,7 @@ EXTRA_DEPENDENCIES = {
+ 
+ 
+ MACHINE = platform.machine()
+-CFLAGS = ['-O2']
++MODULES_CFLAGS = [os.getenv('MODULES_CFLAGS', '-O2')]
+ _ROOT = pathlib.Path(__file__).parent
+ LIBUV_DIR = str(_ROOT / 'vendor' / 'libuv')
+ LIBUV_BUILD_DIR = str(_ROOT / 'build' / 'libuv-{}'.format(MACHINE))
+@@ -301,7 +301,7 @@ setup(
+             sources=[
+                 "uvloop/loop.pyx",
+             ],
+-            extra_compile_args=CFLAGS
++            extra_compile_args=MODULES_CFLAGS
+         ),
+     ],
+     classifiers=[
+-- 
+2.25.1
+
diff --git a/package/python-uvloop/python-uvloop.mk b/package/python-uvloop/python-uvloop.mk
index ff98d747b2..a0dc554aae 100644
--- a/package/python-uvloop/python-uvloop.mk
+++ b/package/python-uvloop/python-uvloop.mk
@@ -14,4 +14,8 @@ PYTHON_UVLOOP_BUILD_OPTS = build_ext --inplace --use-system-libuv
 PYTHON_UVLOOP_INSTALL_TARGET_OPTS = build_ext --inplace --use-system-libuv
 PYTHON_UVLOOP_DEPENDENCIES = libuv
 
+ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_102472),y)
+PYTHON_UVLOOP_ENV = MODULES_CFLAGS="-O0"
+endif
+
 $(eval $(python-package))
-- 
2.25.1



More information about the buildroot mailing list