Skip to contentSkip to conversation

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

PATCH In review Chong Lu 5 participants 10 messages Oct 22, 2014 – Oct 26, 2014

lore
Share & tools
lore

Chong Lu

author
#0 lore raw

v3 cover gconf: fix multilib conflict - org.gnome.GConf.service

Change since v2:
split out org.gnome.GConf.service and libraries to libgconf package.

The following changes since commit 924da20c6f2f183fa7e930e4c3c6b14c090acbe5:

build-appliance-image: Update to dizzy head revision (2014-10-18 16:16:38 +0200)

are available in the git repository at:

git://git.pokylinux.org/poky-contrib chonglu/gconf
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=chonglu/gconf

Chong Lu (1):
gconf: fix multilib conflict - org.gnome.GConf.service

 meta/recipes-gnome/gnome/gconf_3.2.6.bb | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
Signature · 1 line
1.9.1
author
#1 lore raw

PATCH v3 1/1 gconf: fix multilib conflict - org.gnome.GConf.service

The gconfd-2 will be called in org.gnome.GConf.service file and the path of gconfd-2 is ${libexecdir}, this will get following error when multilib exported in the sdk:
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

Move org.gnome.GConf.service to ${libdir}, then the conflict was fixed. Add split out the client libraries into a separate package.

---
 meta/recipes-gnome/gnome/gconf_3.2.6.bb | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
meta/recipes-gnome/gnome/gconf_3.2.6.bb +8 -2
index 17fdafa..bbb13b2 100644
@@ -19,6 +19,8 @@ SRC_URI[archive.sha256sum] = "1912b91803ab09a5eed34d364bf09fe3a2a9c96751fde03a4e
 
 S = "${WORKDIR}/GConf-${PV}"
 
+PACKAGES =+ "libgconf"
+
 EXTRA_OECONF = "--enable-shared --disable-static --enable-debug=yes \
                 --disable-introspection --disable-orbit --with-openldap=no --disable-gtk"
 
@@ -37,6 +39,8 @@ do_install_append() {
 	# this stuff is unusable
 	rm -f ${D}${libdir}/GConf/*/*.*a
 	rm -f ${D}${libdir}/gio/*/*.*a
+
+	mv ${D}${datadir}/dbus-1 ${D}${libdir}/
 }
 
 do_install_append_class-native() {
@@ -47,13 +51,15 @@ do_install_append_class-native() {
 # disable dbus-x11 when x11 isn't in DISTRO_FEATURES
 RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'dbus-x11', '', d)}"
 RDEPENDS_${PN}_class-native = ""
+RDEPENDS_${PN} += "libgconf"
 
 FILES_${PN} += "${libdir}/GConf/* \
-                ${libdir}/gio/*/*.so \
                 ${datadir}/polkit* \
-                ${datadir}/dbus-1/services/*.service \
                 ${datadir}/dbus-1/system-services/*.service \
                "
+FILES_libgconf = "${libdir}/lib*${SOLIBS} ${libdir}/gio/modules/*.so \
+                  ${libdir}/dbus-1/services/*.service"
+
 FILES_${PN}-dbg += "${libdir}/*/*/.debug"
 FILES_${PN}-dev += "${datadir}/sgml/gconf/gconf-1.0.dtd"
 
Signature · 1 line
1.9.1
#2 lore raw
Quoted 6 lines · Chong Lu

The gconfd-2 will be called in org.gnome.GConf.service file and the path of gconfd-2 is ${libexecdir}, this will get following error when multilib exported in the sdk:
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

I'm clearly not understanding how our multilib implementation works, but you don't need many copies of the main gconf package, just one in the preferred configuration. What is causing multiple copies of gconf to be installed?

Ross

#3 lore raw
Quoted 8 lines · Ross
Quoted 6 lines · Chong Lu

The gconfd-2 will be called in org.gnome.GConf.service file and the path of gconfd-2 is ${libexecdir}, this will get following error when multilib exported in the sdk:
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

Quoted 4 lines

I'm clearly not understanding how our multilib implementation works, but you don't need many copies of the main gconf package, just one in the preferred configuration. What is causing multiple copies of gconf to be installed?

Installing both the lib32 and "regular" version of gconf attempts to install the file "/usr/share/dbus-1/services/org.gnome.GConf.service" twice. (This is normally acceptable, as long as the -contents- of the file are identical.) For whatever reason the contents are different, and the usual way to fix this is to provide a unique file that both versions can include.

This way only one version will be installed, but yet the other service elements will be properly duplicated.

I'd like a bit more information in the commit message indicating what the conflict actually was between both files (since I believe the service file is textual so a diff is easy to include).

--Mark

Quoted 2 lines

Ross

#4 lore raw
Quoted 6 lines · Mark Hatle

Installing both the lib32 and "regular" version of gconf attempts to install the file "/usr/share/dbus-1/services/org.gnome.GConf.service" twice. (This is normally acceptable, as long as the -contents- of the file are identical.) For whatever reason the contents are different, and the usual way to fix this is to provide a unique file that both versions can include.

Quoted 6 lines

This way only one version will be installed, but yet the other service elements will be properly duplicated.

I'd like a bit more information in the commit message indicating what the conflict actually was between both files (since I believe the service file is textual so a diff is easy to include).

This patch moves the org.gnome.GConf.service file into ${libdir} as that file contains a reference to ${libexecdir} which is different on multilib builds (and a good reason why libexecdir shouldn't depend on libdir), so the files are not identical.

My question is why are we installing two copies of the GConf daemon, can't we just install this package once?

Ross

author
#5 lore raw
In reply to Burton, Ross
Quoted 7 lines · Ross
Quoted 6 lines · Chong Lu

The gconfd-2 will be called in org.gnome.GConf.service file and the path of gconfd-2 is ${libexecdir}, this will get following error when multilib exported in the sdk:
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

Quoted 7 lines

I'm clearly not understanding how our multilib implementation works, but you don't need many copies of the main gconf package, just one in the preferred configuration. What is causing multiple copies of gconf to be installed?

Ross

Hi Ross,

I configured following in local.conf:

MACHINE = "qemux86-64"
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
IMAGE_INSTALL = "gconf lib32-gconf"

So multiple copies of gconf to be installed.

Best Regards
Chong

#7 lore raw
In reply to Chong Lu
Quoted 11 lines

Op 22 okt. 2014, om 09:09 heeft Chong Lu <[email protected]> het volgende geschreven:

The gconfd-2 will be called in org.gnome.GConf.service file and the path of gconfd-2 is ${libexecdir}, this will get following error when multilib exported in the sdk:
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

Move org.gnome.GConf.service to ${libdir}, then the conflict was fixed.

And I suspect its dbus service won't work anymore after moving the files. How have you tested this change?

Quoted 56 lines

Add split out the client libraries into a separate package.

---
meta/recipes-gnome/gnome/gconf_3.2.6.bb | 10 ++++++++--

1 file changed, 8 insertions(+), 2 deletions(-)
meta/recipes-gnome/gnome/gconf_3.2.6.bb +0 -0
index 17fdafa..bbb13b2 100644
@@ -19,6 +19,8 @@ SRC_URI[archive.sha256sum] = "1912b91803ab09a5eed34d364bf09fe3a2a9c96751fde03a4e
 

S = "${WORKDIR}/GConf-${PV}"

meta/recipes-gnome/gnome/gconf_3.2.6.bb +2 -0
+PACKAGES =+ "libgconf"
+
EXTRA_OECONF = "--enable-shared --disable-static --enable-debug=yes \
                --disable-introspection --disable-orbit --with-openldap=no --disable-gtk"
meta/recipes-gnome/gnome/gconf_3.2.6.bb +2 -0
@@ -37,6 +39,8 @@ do_install_append() {
 	# this stuff is unusable
 	rm -f ${D}${libdir}/GConf/*/*.*a
 	rm -f ${D}${libdir}/gio/*/*.*a
+
+	mv ${D}${datadir}/dbus-1 ${D}${libdir}/
 }
 
 do_install_append_class-native() {
@@ -47,13 +51,15 @@ do_install_append_class-native() {
 # disable dbus-x11 when x11 isn't in DISTRO_FEATURES

RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'dbus-x11', '', d)}" RDEPENDS_${PN}_class-native = ""
+RDEPENDS_${PN} += "libgconf"

FILES_${PN} += "${libdir}/GConf/* \

meta/recipes-gnome/gnome/gconf_3.2.6.bb +3 -2
-                ${libdir}/gio/*/*.so \
                ${datadir}/polkit* \
-                ${datadir}/dbus-1/services/*.service \
                ${datadir}/dbus-1/system-services/*.service \
               "
+FILES_libgconf = "${libdir}/lib*${SOLIBS} ${libdir}/gio/modules/*.so \
+                  ${libdir}/dbus-1/services/*.service"
+

FILES_${PN}-dbg += "${libdir}/*/*/.debug" FILES_${PN}-dev += "${datadir}/sgml/gconf/gconf-1.0.dtd"

Signature · 7 lines
1.9.1

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
author
#8 lore raw
Quoted 11 lines · Koen Kooi
Quoted 10 lines

Op 22 okt. 2014, om 09:09 heeft Chong Lu <[email protected]> het volgende geschreven:

The gconfd-2 will be called in org.gnome.GConf.service file and the path of gconfd-2 is ${libexecdir}, this will get following error when multilib exported in the sdk:
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

Move org.gnome.GConf.service to ${libdir}, then the conflict was fixed.

And I suspect its dbus service won't work anymore after moving the files. How have you tested this change?

I just focus on the conflicts, not to test dbus service. Or do you have any suggestion to fix this conflicts?

Best Regards
Chong

Quoted 59 lines
Quoted 57 lines

Add split out the client libraries into a separate package.

---
meta/recipes-gnome/gnome/gconf_3.2.6.bb | 10 ++++++++--

1 file changed, 8 insertions(+), 2 deletions(-)
meta/recipes-gnome/gnome/gconf_3.2.6.bb +0 -0
index 17fdafa..bbb13b2 100644
@@ -19,6 +19,8 @@ SRC_URI[archive.sha256sum] = "1912b91803ab09a5eed34d364bf09fe3a2a9c96751fde03a4e
 

S = "${WORKDIR}/GConf-${PV}"

meta/recipes-gnome/gnome/gconf_3.2.6.bb +2 -0
+PACKAGES =+ "libgconf"
+
EXTRA_OECONF = "--enable-shared --disable-static --enable-debug=yes \
                 --disable-introspection --disable-orbit --with-openldap=no --disable-gtk"
meta/recipes-gnome/gnome/gconf_3.2.6.bb +2 -0
@@ -37,6 +39,8 @@ do_install_append() {
 	# this stuff is unusable
 	rm -f ${D}${libdir}/GConf/*/*.*a
 	rm -f ${D}${libdir}/gio/*/*.*a
+
+	mv ${D}${datadir}/dbus-1 ${D}${libdir}/
 }
 
 do_install_append_class-native() {
@@ -47,13 +51,15 @@ do_install_append_class-native() {
 # disable dbus-x11 when x11 isn't in DISTRO_FEATURES

RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'dbus-x11', '', d)}" RDEPENDS_${PN}_class-native = ""
+RDEPENDS_${PN} += "libgconf"

FILES_${PN} += "${libdir}/GConf/* \

meta/recipes-gnome/gnome/gconf_3.2.6.bb +3 -2
-                ${libdir}/gio/*/*.so \
                 ${datadir}/polkit* \
-                ${datadir}/dbus-1/services/*.service \
                 ${datadir}/dbus-1/system-services/*.service \
                "
+FILES_libgconf = "${libdir}/lib*${SOLIBS} ${libdir}/gio/modules/*.so \
+                  ${libdir}/dbus-1/services/*.service"
+

FILES_${PN}-dbg += "${libdir}/*/*/.debug" FILES_${PN}-dev += "${datadir}/sgml/gconf/gconf-1.0.dtd"

Signature · 7 lines
1.9.1

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
#9 lore raw
Quoted 10 lines · Chong Lu
Quoted 8 lines · Koen Kooi
Quoted 8 lines

Op 22 okt. 2014, om 09:09 heeft Chong Lu <[email protected]> het volgende geschreven:

The gconfd-2 will be called in org.gnome.GConf.service file and the path of gconfd-2 is ${libexecdir}, this will get following error when multilib exported in the sdk:
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

Quoted 5 lines
Quoted 2 lines
Quoted 1 line

Move org.gnome.GConf.service to ${libdir}, then the conflict was fixed.

And I suspect its dbus service won't work anymore after moving the files. How have you tested this change?

I just focus on the conflicts, not to test dbus service. Or do you have any suggestion to fix this conflicts?

Well, if you move a file to a new location, everyone assumes that you have verified that the file still will be found by the application that needs it. Basically, that's what Koen's question was about. Have you made any run-time tests, to verify that your patch doesn't break anything?

Besides, there was the other remark whether or not it makes sense to have multiple versions of gconf installed...

Cheers,
Anders

Signature · 2 lines
Anders Darander
ChargeStorm AB / eStorm AB
#6 lore raw
In reply to Chong Lu
Quoted 4 lines · Chong Lu

IMAGE_INSTALL = "gconf lib32-gconf"

So multiple copies of gconf to be installed.

Yeah, don't do that. Would you test installing apache and lib32-apache?

Ross