Patchwork gconf: fix multilib conflict - org.gnome.GConf.service

login
register
mail settings
Submitter Ming Liu
Date July 5, 2014, 6:06 a.m.
Message ID <1404540383-13425-1-git-send-email-ming.liu@windriver.com>
Download mbox | patch
Permalink /patch/75051/
State New
Headers show

Comments

Ming Liu - July 5, 2014, 6:06 a.m.
Fix following error:
error: file /usr/share/dbus-1/services/org.gnome.GConf.service from
install of gconf-3.2.6-r0.0.lib32_x86 conflicts with file from package
gconf-3.2.6-r0.0.x86_64

Signed-off-by: Ming Liu <ming.liu@windriver.com>
---
 .../gnome/gconf/fix-multilib-conflicts.patch       | 33 ++++++++++++++++++++++
 meta/recipes-gnome/gnome/gconf_3.2.6.bb            |  4 +++
 2 files changed, 37 insertions(+)
 create mode 100644 meta/recipes-gnome/gnome/gconf/fix-multilib-conflicts.patch
Ross Burton - July 7, 2014, 9:40 a.m.
On 5 July 2014 07:06, Ming Liu <ming.liu@windriver.com> wrote:
> error: file /usr/share/dbus-1/services/org.gnome.GConf.service from
> install of gconf-3.2.6-r0.0.lib32_x86 conflicts with file from package
> gconf-3.2.6-r0.0.x86_64

Your patch doesn't move the file that is conflicting so it won't help...

As you'll only ever install a single instance of the binaries, the
correct fix would be to split the ML-appropriate libraries into a
libgconf, but leave the DBus service and tools in the main package.
Then multilib images can install lib32gconf, lib64gconf, and gconf.

Ross
Ming Liu - July 7, 2014, 10:07 a.m.
On 07/07/2014 05:40 PM, Burton, Ross wrote:
> On 5 July 2014 07:06, Ming Liu <ming.liu@windriver.com> wrote:
>> error: file /usr/share/dbus-1/services/org.gnome.GConf.service from
>> install of gconf-3.2.6-r0.0.lib32_x86 conflicts with file from package
>> gconf-3.2.6-r0.0.x86_64
> Your patch doesn't move the file that is conflicting so it won't help...
>
> As you'll only ever install a single instance of the binaries, the
> correct fix would be to split the ML-appropriate libraries into a
> libgconf, but leave the DBus service and tools in the main package.
> Then multilib images can install lib32gconf, lib64gconf, and gconf.
Hi, Ross:

I got your point, but my patch was not tring to address the conflict of 
binaries or libraries, that kind of conflicts would not cause build 
error, as you pointed out, only ever a single instance be installed at 
one time. It's actually tring to fix a conflict of conf file, if the 
gconfd-2 is put into libexec directory, we have to keep a path like 
/usr/lib64/gconf/gconfd-2(or /usr/lib/gconf/gconfd-2 in lib32 case) 
referring it in /usr/share/dbus-1/services/org.gnome.GConf.service which 
will cause the conflict.

the best,
thank you
>
> Ross
>
>
Ross Burton - July 7, 2014, 10:38 a.m.
On 7 July 2014 11:07, Ming Liu <ming.liu@windriver.com> wrote:
> I got your point, but my patch was not tring to address the conflict of
> binaries or libraries, that kind of conflicts would not cause build error,
> as you pointed out, only ever a single instance be installed at one time.
> It's actually tring to fix a conflict of conf file, if the gconfd-2 is put
> into libexec directory, we have to keep a path like
> /usr/lib64/gconf/gconfd-2(or /usr/lib/gconf/gconfd-2 in lib32 case)
> referring it in /usr/share/dbus-1/services/org.gnome.GConf.service which
> will cause the conflict.

So why did the commit message talk about
/usr/share/dbus-1/services/GConf.service conflicting between
installation, and how will your patch fix that error?  As far as I can
tell ${datadir} isn't in the MULTILIBRE_ALLOW_REP so they'll still
conflict, right?

I still think that splitting up the gconf package into library and
tooling is the logical solution.

Ross
Ming Liu - July 8, 2014, 8:07 a.m.
On 07/07/2014 06:38 PM, Burton, Ross wrote:
> On 7 July 2014 11:07, Ming Liu <ming.liu@windriver.com> wrote:
>> I got your point, but my patch was not tring to address the conflict of
>> binaries or libraries, that kind of conflicts would not cause build error,
>> as you pointed out, only ever a single instance be installed at one time.
>> It's actually tring to fix a conflict of conf file, if the gconfd-2 is put
>> into libexec directory, we have to keep a path like
>> /usr/lib64/gconf/gconfd-2(or /usr/lib/gconf/gconfd-2 in lib32 case)
>> referring it in /usr/share/dbus-1/services/org.gnome.GConf.service which
>> will cause the conflict.
> So why did the commit message talk about
> /usr/share/dbus-1/services/GConf.service conflicting between
> installation, and how will your patch fix that error?  As far as I can
> tell ${datadir} isn't in the MULTILIBRE_ALLOW_REP so they'll still
> conflict, right?
>
> I still think that splitting up the gconf package into library and
> tooling is the logical solution.
I made this patch against to a old version of oe, I don't know much 
about the MULTILIBRE_ALLOW_REP thing, maybe you are right, I will try to 
figure out a new patch.

the best,
thank you
>
> Ross
>
>

Patch

diff --git a/meta/recipes-gnome/gnome/gconf/fix-multilib-conflicts.patch b/meta/recipes-gnome/gnome/gconf/fix-multilib-conflicts.patch
new file mode 100644
index 0000000..b67157e
--- /dev/null
+++ b/meta/recipes-gnome/gnome/gconf/fix-multilib-conflicts.patch
@@ -0,0 +1,33 @@ 
+Upstream-Status: Inappropriate [embebbed]
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+
+--- a/gconf/Makefile.am
++++ b/gconf/Makefile.am
+@@ -27,8 +27,7 @@ EFENCE=
+ 
+ lib_LTLIBRARIES = libgconf-2.la
+ 
+-bin_PROGRAMS = gconftool-2 
+-libexec_PROGRAMS = gconfd-2
++bin_PROGRAMS = gconftool-2 gconfd-2 
+ 
+ CORBA_SOURCECODE = GConfX-common.c GConfX-skels.c GConfX-stubs.c GConfX.h
+ 
+@@ -168,7 +167,7 @@ default.path: $(srcdir)/default.path.in
+ 	sed -e 's,[@]sysgconfdir[@],$(sysgconfdir),g' \
+ 		<$(srcdir)/default.path.in >default.path
+ org.gnome.GConf.service:  $(srcdir)/org.gnome.GConf.service.in
+-	sed -e 's,[@]libexecdir[@],$(libexecdir),g' \
++	sed -e 's,[@]bindir[@],$(bindir),g' \
+ 		<$(srcdir)/org.gnome.GConf.service.in >org.gnome.GConf.service
+ 
+ servicedir = $(datadir)/dbus-1/services
+
+--- a/gconf/org.gnome.GConf.service.in
++++ b/gconf/org.gnome.GConf.service.in
+@@ -1,3 +1,3 @@
+ [D-BUS Service]
+ Name=org.gnome.GConf
+-Exec=@libexecdir@/gconfd-2
++Exec=@bindir@/gconfd-2
diff --git a/meta/recipes-gnome/gnome/gconf_3.2.6.bb b/meta/recipes-gnome/gnome/gconf_3.2.6.bb
index 17fdafa..e932746 100644
--- a/meta/recipes-gnome/gnome/gconf_3.2.6.bb
+++ b/meta/recipes-gnome/gnome/gconf_3.2.6.bb
@@ -9,9 +9,13 @@  DEPENDS_class-native = "glib-2.0-native dbus-native dbus-glib-native libxml2-nat
 
 inherit gnomebase gtk-doc gettext
 
+GCONF_FIX_MULTILIB_PATCH = ""
+GCONF_FIX_MULTILIB_PATCH_class-target = "file://fix-multilib-conflicts.patch"
+
 SRC_URI = "${GNOME_MIRROR}/GConf/${@gnome_verdir("${PV}")}/GConf-${PV}.tar.xz;name=archive \
            file://remove_plus_from_invalid_characters_list.patch \
            file://unable-connect-dbus.patch \
+           ${GCONF_FIX_MULTILIB_PATCH} \
 "
 
 SRC_URI[archive.md5sum] = "2b16996d0e4b112856ee5c59130e822c"