diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-10-20 13:12:32 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-10-23 16:26:15 +0100 |
commit | 6665e84bfba43cd8897b9561b14975ac524fbbe2 (patch) | |
tree | ae55383d97d4f04517a7142d78ffbe2d11488ea4 /meta/recipes-devtools/meson | |
parent | 1d5ab1936c9fdf5d2613562ab1ace920089de49b (diff) | |
download | openembedded-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>
Diffstat (limited to 'meta/recipes-devtools/meson')
-rw-r--r-- | meta/recipes-devtools/meson/meson.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/meson/meson/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch | 95 |
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]) |