On Sun, 2019-10-20 at 06:51 +0530, Khem Raj wrote:
> 
> 
> On Sat, Oct 19, 2019 at 2:56 AM <richard.pur...@linuxfoundation.org>
> wrote:
> > On Fri, 2019-10-18 at 20:49 +0200, Alexander Kanavin wrote:
> > > I certainly don't mean to ignore those reports, it's just that
> > due to
> > > my ongoing health problems, and having to dedicate most of my
> > energy
> > > to the day job (https://mbition.io/en/home/), I am not currently
> > able
> > > to work on the upstream issues in a timely manner the way I used
> > to
> > > when maintaining core was actually my day job (at Intel).
> > > 
> > > The question of how much effort people who update things in core
> > > should allocate to fixing 'other' layers has been a conflict
> > point
> > > for a long time. I'd prefer to see more aggressive
> > > blacklisting/removal of recipes that no one has an interest in
> > fixing
> > > and updating.
> > 
> > If anything this would be my fault for merging things despite there
> > being concerns raised. I have to admit I'd seen other patches and
> > therefore erroneously thought the issues we mostly resolved.
> > 
> > Should OE-Core block on all issues being resolved before merging?
> > I'm
> > torn on that, I realise there are pros and cons.
> 
> If an issue is there and gets reported after it’s merged I think it’s
> fine to do whatever is needed after the fact however if testing
> master-next from oe-core and reported against it I think this will
> help you in longer run if these master-next issues are looked into
> and blocked on. We should not run Oe-core so fast that other layers
> fall way back behind where they start supporting just releases and
> you have lost free integration testing that other layers would offer
> 
> If there are too many reports then it would be questionable to block
> on it but I don’t think that’s the case 

Feeling suitably responsible for this breakage, I looked into it. The
following two patches, one for meson in OE-Core and the other for dconf
in meta-oe seem to address the problem. I'm not entirely sure they're
correct but they don't actually change the library binary so its
probably fine whilst upstream sorts it out.

If they look ok to you I'll submit them "properly".

Cheers,

Richard



From 7ebd50f90b3b7f4e1dc56f07ae7e8e02275d41c8 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.pur...@linuxfoundation.org>
Date: Sun, 20 Oct 2019 13:27:07 +0100
Subject: [PATCH] dconf: Fix build with meson 0.52

Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org>
---
 .../dconf/dconf/fix-meson-0.52.patch          | 25 +++++++++++++++++++
 .../recipes-gnome/dconf/dconf_0.32.0.bb       |  1 +
 2 files changed, 26 insertions(+)
 create mode 100644 meta-gnome/recipes-gnome/dconf/dconf/fix-meson-0.52.patch

diff --git a/meta-gnome/recipes-gnome/dconf/dconf/fix-meson-0.52.patch b/meta-gnome/recipes-gnome/dconf/dconf/fix-meson-0.52.patch
new file mode 100644
index 000000000..bca021347
--- /dev/null
+++ b/meta-gnome/recipes-gnome/dconf/dconf/fix-meson-0.52.patch
@@ -0,0 +1,25 @@
+With meson 0.52 the build fails due to duplicate symbols. There is a fix
+to meson but the dconf build also needs tweaking.
+
+https://gitlab.gnome.org/GNOME/dconf/issues/59
+https://github.com/mesonbuild/meson/pull/5936
+
+Despite the comments there about this being incorrect, libdconf is unchanged
+between 0.51 and 0.52 and this patch.
+
+Upstream-Status: Pending [under discussion, see above links]
+Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org>
+
+Index: dconf-0.32.0/client/meson.build
+===================================================================
+--- dconf-0.32.0.orig/client/meson.build
++++ dconf-0.32.0/client/meson.build
+@@ -28,7 +28,7 @@ libdconf_client = static_library(
+ 
+ libdconf_client_dep = declare_dependency(
+   dependencies: gio_dep,
+-  link_whole: libdconf_client,
++  link_with: libdconf_client,
+ )
+ 
+ libdconf = shared_library(
diff --git a/meta-gnome/recipes-gnome/dconf/dconf_0.32.0.bb b/meta-gnome/recipes-gnome/dconf/dconf_0.32.0.bb
index 8d1bbdfd1..fec04079e 100644
--- a/meta-gnome/recipes-gnome/dconf/dconf_0.32.0.bb
+++ b/meta-gnome/recipes-gnome/dconf/dconf_0.32.0.bb
@@ -3,6 +3,7 @@ LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 SECTION = "x11/gnome"
 
+SRC_URI += "file://fix-meson-0.52.patch"
 SRC_URI[archive.md5sum] = "e1ac0b6285abefeed69ca9e380e44f5a"
 SRC_URI[archive.sha256sum] = "68bce78b19bc94cb2c3bb8587e37f9e5e338568c3a674f86edde9c9f1624ffab"
 
-- 
2.17.1

From f52194e9806002e66235f63184a2eea0b15c19a1 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.pur...@linuxfoundation.org>
Date: Sun, 20 Oct 2019 13:12:32 +0100
Subject: [PATCH] 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.pur...@linuxfoundation.org>
---
 meta/recipes-devtools/meson/meson.inc         |  1 +
 ...e971bd320f3df15c1ee74f54858e6792b183.patch | 95 +++++++++++++++++++
 2 files changed, 96 insertions(+)
 create mode 100644 meta/recipes-devtools/meson/meson/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch

diff --git a/meta/recipes-devtools/meson/meson.inc b/meta/recipes-devtools/meson/meson.inc
index ae0091c051c..84bcc8409de 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 00000000000..7ea8a133e6a
--- /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.claess...@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.pur...@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])
-- 
2.17.1

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to