summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2019-10-07 11:11:38 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-10-08 11:22:24 +0100
commit45befef2a303f2c1bddf90e834bf3fc32bd23c50 (patch)
treee685c28532dc142cbf53da2e1317c1d96e9bb047
parent35a9ecd653f688fc322dee64d1b20b66fd1163b0 (diff)
downloadpoky-45befef2a303f2c1bddf90e834bf3fc32bd23c50.tar.gz
meson: fix cross detection
Meson 0.51 onwards detects if a build is cross by whether the host and build machines match. However this doesn't work in a number of cross compilation cases: notably where host is Windows but build is Linux, but also the common OpenEmbedded case where the host and build machine are both x86-64. Previously we'd patched this to instead look at whether an executable wrapper is needed: our cross files always set this to true so all cross builds would be identified as cross. However, this breaks build on the target as without a cross file the early cross build detection fails as we don't yet know if an exe wrapper is needed. The neater solution is to simply go back to the older logic: a cross build has cross files defined. [ YOCTO #13571 ] (From OE-Core rev: 9aa543aa9bd78c63343ae28fc85113ca2c9e0094) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/meson/meson.inc2
-rw-r--r--meta/recipes-devtools/meson/meson/0001-Cross-build-is-defined-by-the-existance-of-a-cross-f.patch28
-rw-r--r--meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-do-not-determine-whether-a.patch28
3 files changed, 29 insertions, 29 deletions
diff --git a/meta/recipes-devtools/meson/meson.inc b/meta/recipes-devtools/meson/meson.inc
index d365bcd8a3..8219d87c74 100644
--- a/meta/recipes-devtools/meson/meson.inc
+++ b/meta/recipes-devtools/meson/meson.inc
@@ -15,7 +15,7 @@ SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${P
15 file://disable-rpath-handling.patch \ 15 file://disable-rpath-handling.patch \
16 file://cross-prop-default.patch \ 16 file://cross-prop-default.patch \
17 file://0001-environment.py-detect-windows-also-if-the-system-str.patch \ 17 file://0001-environment.py-detect-windows-also-if-the-system-str.patch \
18 file://0001-mesonbuild-environment.py-do-not-determine-whether-a.patch \ 18 file://0001-Cross-build-is-defined-by-the-existance-of-a-cross-f.patch \
19 file://0001-mesonbuild-environment.py-check-environment-for-vari.patch \ 19 file://0001-mesonbuild-environment.py-check-environment-for-vari.patch \
20 file://0001-modules-python.py-do-not-substitute-python-s-install.patch \ 20 file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
21 file://vala-cross-compile.patch \ 21 file://vala-cross-compile.patch \
diff --git a/meta/recipes-devtools/meson/meson/0001-Cross-build-is-defined-by-the-existance-of-a-cross-f.patch b/meta/recipes-devtools/meson/meson/0001-Cross-build-is-defined-by-the-existance-of-a-cross-f.patch
new file mode 100644
index 0000000000..a5dbb81b08
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/0001-Cross-build-is-defined-by-the-existance-of-a-cross-f.patch
@@ -0,0 +1,28 @@
1Upstream-Status: Backport
2Signed-off-by: Ross Burton <ross.burton@intel.com>
3
4From 0b4d1e8afd5428a495f8624ee061f63977b4c268 Mon Sep 17 00:00:00 2001
5From: Jussi Pakkanen <jpakkane@gmail.com>
6Date: Sun, 6 Oct 2019 15:17:32 +0300
7Subject: [PATCH] Cross build is defined by the existance of a cross file.
8
9---
10 mesonbuild/environment.py | 2 +-
11 2 files changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
14index e5d041b4..03c65688 100644
15--- a/mesonbuild/environment.py
16+++ b/mesonbuild/environment.py
17@@ -611,7 +611,7 @@ class Environment:
18 self.first_invocation = True
19
20 def is_cross_build(self) -> bool:
21- return not self.machines.matches_build_machine(MachineChoice.HOST)
22+ return self.coredata.is_cross_build()
23
24 def dump_coredata(self):
25 return coredata.save(self.coredata, self.get_build_dir())
26--
272.20.1
28
diff --git a/meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-do-not-determine-whether-a.patch b/meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-do-not-determine-whether-a.patch
deleted file mode 100644
index 8cb11879f4..0000000000
--- a/meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-do-not-determine-whether-a.patch
+++ /dev/null
@@ -1,28 +0,0 @@
1From ec9c4a22424a5d55fcf213a55d03f096ec24bcae Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Mon, 25 Mar 2019 18:18:33 +0100
4Subject: [PATCH] mesonbuild/environment.py: do not determine whether a build
5 is cross by comparing architectures
6
7This can, and does, go wrong when our host architecture is same as the target one(e.g. x86_64).
8
9Upstream-Status: Pending
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11
12---
13 mesonbuild/environment.py | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
17index 84a7596..9a029f4 100644
18--- a/mesonbuild/environment.py
19+++ b/mesonbuild/environment.py
20@@ -520,7 +520,7 @@ class Environment:
21 self.first_invocation = True
22
23 def is_cross_build(self) -> bool:
24- return not self.machines.matches_build_machine(MachineChoice.HOST)
25+ return self.need_exe_wrapper()
26
27 def dump_coredata(self):
28 return coredata.save(self.coredata, self.get_build_dir())