summaryrefslogtreecommitdiffstats
path: root/meta-python/recipes-devtools/python/python3-posix-ipc/0001-build_support-fix-cross-compilation-error-when-CC-is.patch
blob: c78d4ad726c6969fe05675a6cf37c28c6668b2cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
From 01134093c9150248f9ea8890a41e922159593a7f Mon Sep 17 00:00:00 2001
From: Haixiao Yan <haixiao.yan.cn@windriver.com>
Date: Fri, 8 Aug 2025 19:30:16 +0800
Subject: [PATCH] build_support: fix cross-compilation error when CC is a
 multi-part command

Fix the following error when cross-compiling with an environment-defined CC
that includes flags:

FileNotFoundError: [Errno 2] No such file or directory: 'x86_64-wrs-linux-gcc
-m64 -march=nehalem -mtune=generic -mfpmath=sse -msse4.2
-fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
-Werror=format-security
--sysroot=/build-1.3.0/tmp/work/corei7-64-wrs-linux/python3-posix-ipc/1.3.0/recipe-sysroot'

This happened because the CC environment variable was treated as a single
string instead of being split into arguments. The fix uses shlex.split() to
correctly parse CC into a list of compiler and flags, and then unpacks it when
forming the subprocess command.

Upstream-Status: Backport [https://github.com/osvenskan/posix_ipc/commit/0113409]

Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com>
---
 build_support/discover_system_info.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/build_support/discover_system_info.py b/build_support/discover_system_info.py
index d1b171e4f602..1c3741f5577c 100644
--- a/build_support/discover_system_info.py
+++ b/build_support/discover_system_info.py
@@ -1,6 +1,7 @@
 import subprocess
 import platform
 import os
+import shlex
 
 # Set these to None for compile/link debugging or subprocess.PIPE to silence
 # compiler warnings and errors.
@@ -49,7 +50,9 @@ def does_build_succeed(filename, linker_options=""):
     #   - Some versions of Linux place the sem_xxx() functions in libpthread.
     #     Rather than testing whether or not it's needed, I just specify it
     #     everywhere since it's harmless to specify it when it's not needed.
-    cmd = [os.getenv("CC", "cc"),
+    cc = os.getenv("CC", "cc")
+    cmd = [
+           *shlex.split(cc),
            '-Wall',
            '-o',
            f'./build_support/src/{filename[:-2]}',
-- 
2.34.1