summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-10-20 13:12:32 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-10-23 16:26:15 +0100
commit6665e84bfba43cd8897b9561b14975ac524fbbe2 (patch)
treeae55383d97d4f04517a7142d78ffbe2d11488ea4
parent1d5ab1936c9fdf5d2613562ab1ace920089de49b (diff)
downloadopenembedded-core-contrib-6665e84bfba43cd8897b9561b14975ac524fbbe2.tar.gz
meson: Backport fix to assist meta-oe breakage
Add a backported commit from upstream which helps fix build failures in meta-oe. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/meson/meson.inc1
-rw-r--r--meta/recipes-devtools/meson/meson/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch95
2 files changed, 96 insertions, 0 deletions
diff --git a/meta/recipes-devtools/meson/meson.inc b/meta/recipes-devtools/meson/meson.inc
index ae0091c051..84bcc8409d 100644
--- a/meta/recipes-devtools/meson/meson.inc
+++ b/meta/recipes-devtools/meson/meson.inc
@@ -16,6 +16,7 @@ SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${P
file://cross-prop-default.patch \
file://0001-mesonbuild-environment.py-check-environment-for-vari.patch \
file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
+ file://dbc9e971bd320f3df15c1ee74f54858e6792b183.patch \
"
SRC_URI[sha256sum] = "d60f75f0dedcc4fd249dbc7519d6f3ce6df490033d276ef1cf27453ef4938d32"
SRC_URI[md5sum] = "7ea7772414dda8ae11072244bf7ba991"
diff --git a/meta/recipes-devtools/meson/meson/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch b/meta/recipes-devtools/meson/meson/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch
new file mode 100644
index 0000000000..7ea8a133e6
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch
@@ -0,0 +1,95 @@
+From dbc9e971bd320f3df15c1ee74f54858e6792b183 Mon Sep 17 00:00:00 2001
+From: Xavier Claessens <xavier.claessens@collabora.com>
+Date: Fri, 11 Oct 2019 11:01:22 -0400
+Subject: [PATCH] Remove duplicated object files in static libraries
+
+When a static library link_whole to a bunch of other static libraries,
+we have to extract all their objects recursively. But that could
+introduce duplicated objects. ar is dumb enough to allow this without
+error, but once the resulting static library is linked into an
+executable or shared library, the linker will complain about duplicated
+symbols.
+
+Upstream-Status: Backport
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+---
+ mesonbuild/backend/backends.py | 3 ++-
+ test cases/unit/69 static link/lib/func17.c | 4 ++++
+ test cases/unit/69 static link/lib/func18.c | 6 ++++++
+ test cases/unit/69 static link/lib/func19.c | 7 +++++++
+ test cases/unit/69 static link/lib/meson.build | 12 ++++++++++++
+ 5 files changed, 31 insertions(+), 1 deletion(-)
+ create mode 100644 test cases/unit/69 static link/lib/func17.c
+ create mode 100644 test cases/unit/69 static link/lib/func18.c
+ create mode 100644 test cases/unit/69 static link/lib/func19.c
+
+diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
+index 947be1cbef..e54809657f 100644
+--- a/mesonbuild/backend/backends.py
++++ b/mesonbuild/backend/backends.py
+@@ -281,7 +281,8 @@ def relpath(self, todir, fromdir):
+ os.path.join('dummyprefixdir', fromdir))
+
+ def flatten_object_list(self, target, proj_dir_to_build_root=''):
+- return self._flatten_object_list(target, target.get_objects(), proj_dir_to_build_root)
++ obj_list = self._flatten_object_list(target, target.get_objects(), proj_dir_to_build_root)
++ return list(dict.fromkeys(obj_list))
+
+ def _flatten_object_list(self, target, objects, proj_dir_to_build_root):
+ obj_list = []
+diff --git a/test cases/unit/69 static link/lib/func17.c b/test cases/unit/69 static link/lib/func17.c
+new file mode 100644
+index 0000000000..d1d8ec498c
+--- /dev/null
++++ b/test cases/unit/69 static link/lib/func17.c
+@@ -0,0 +1,4 @@
++int func17()
++{
++ return 1;
++}
+diff --git a/test cases/unit/69 static link/lib/func18.c b/test cases/unit/69 static link/lib/func18.c
+new file mode 100644
+index 0000000000..c149085ba4
+--- /dev/null
++++ b/test cases/unit/69 static link/lib/func18.c
+@@ -0,0 +1,6 @@
++int func17();
++
++int func18()
++{
++ return func17() + 1;
++}
+diff --git a/test cases/unit/69 static link/lib/func19.c b/test cases/unit/69 static link/lib/func19.c
+new file mode 100644
+index 0000000000..69120e4bf8
+--- /dev/null
++++ b/test cases/unit/69 static link/lib/func19.c
+@@ -0,0 +1,7 @@
++int func17();
++int func18();
++
++int func19()
++{
++ return func17() + func18();
++}
+diff --git a/test cases/unit/69 static link/lib/meson.build b/test cases/unit/69 static link/lib/meson.build
+index 5f04aab6a1..8f95fc4546 100644
+--- a/test cases/unit/69 static link/lib/meson.build
++++ b/test cases/unit/69 static link/lib/meson.build
+@@ -66,3 +66,15 @@ libfunc15 = static_library('func15', 'func15.c',
+ libfunc16 = static_library('func16', 'func16.c',
+ link_with : libfunc15,
+ install : true)
++
++# Verify func17.c.o gets included only once into libfunc19, otherwise
++# func19-shared would failed with duplicated symbol.
++libfunc17 = static_library('func17', 'func17.c',
++ install : false)
++libfunc18 = static_library('func18', 'func18.c',
++ link_with : libfunc17,
++ install : false)
++libfunc19 = static_library('func19', 'func19.c',
++ link_whole : [libfunc17, libfunc18],
++ install : false)
++shared_library('func19-shared', link_whole : [libfunc19])