Package: gconf Version: 3.2.3-4.1 Severity: important Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu precise ubuntu-patch
Hi again, Another upgrade issue has been reported related to the gconf multiarch split. This time, a known bug in the version of apt in Ubuntu 11.10 has been seen causing gconf-service:i386 to be installed on an amd64 machine together with gconf2:amd64: https://bugs.launchpad.net/ubuntu/+source/gconf/+bug/962854 While apt should not have chosen the :i386 package when the :amd64 package would have worked, the fact that the :i386 package satisfies the dependency of gconf2 is a bug. This means that Multi-Arch: foreign is the wrong tag to use for gconf2, which needs to be able to load the backend plugins contained in gconf-service. Per the multiarch spec, the intended label for a package such as gconf-service that exposes both arch-dependent and arch-independent interfaces is Multi-Arch: allowed. However, to take advantage of M-A: allowed, packages would need to depend on gconf-service:any, which won't work with the apt in squeeze. I've therefore uploaded the attached workaround to Ubuntu, which further splits the package into a M-A: foreign gconf-service, listed in the shlibs and used as the dependency for all packages other than gconf2; and a M-A: none gconf-service-backend, containing the actual files and used as the dependency of gconf2 and gconf-service. >From the Ubuntu changelog: * Split gconf-service further into gconf-service and gconf-service-backend, one package being Multi-Arch: foreign and the other Multi-Arch: none, so that we correctly handle the fact that gconf2 needs backend modules of the same arch whereas other reverse-dependencies just need a working daemon. LP: #962854. This isn't pretty, but it's the best way to ensure clean upgrades from pre-multiarch toolchains; so I think that's the best solution for Debian as well. -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slanga...@ubuntu.com vor...@debian.org
diff -Nru gconf-3.2.3/debian/changelog gconf-3.2.3/debian/changelog diff -Nru gconf-3.2.3/debian/control gconf-3.2.3/debian/control --- gconf-3.2.3/debian/control 2012-03-17 09:24:11.000000000 -0700 +++ gconf-3.2.3/debian/control 2012-03-23 15:47:02.000000000 -0700 @@ -38,7 +38,7 @@ Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, - gconf-service (= ${binary:Version}), + gconf-service-backend (= ${binary:Version}), psmisc, dbus-x11, ${python:Depends} @@ -56,12 +56,27 @@ Package: gconf-service Architecture: any Multi-Arch: foreign +Depends: gconf-service-backend (= ${binary:Version}), + ${shlibs:Depends}, + ${misc:Depends} +Description: GNOME configuration database system (D-Bus service) + GConf is a configuration database system for storing application + preferences. It supports default or mandatory settings set by the + administrator, and changes to the database are instantly applied to all + running applications. It is written for the GNOME desktop but doesn't + require it. + . + This package provides the D-Bus enabled daemon that is used internally + by the GConf library to access configuration data. + +Package: gconf-service-backend +Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libgconf-2-4 (= ${binary:Version}), gconf2-common (= ${source:Version}) Breaks: gconf2-common (<< 3.2.3-2) -Replaces: gconf2-common (<< 3.2.3-2) +Replaces: gconf2-common (<< 3.2.3-2), gconf-service (<< 3.2.3-4.1) Description: GNOME configuration database system (D-Bus service) GConf is a configuration database system for storing application preferences. It supports default or mandatory settings set by the @@ -70,7 +85,9 @@ require it. . This package contains the D-Bus enabled daemon that is used internally - by the GConf library to access configuration data. + by the GConf library to access configuration data. It is an internal + implementation of gconf used to work around multiarch-related upgrade + problems, and will eventually be merged back into gconf-service. Package: gconf2-common Architecture: all diff -Nru gconf-3.2.3/debian/control.in gconf-3.2.3/debian/control.in --- gconf-3.2.3/debian/control.in 2012-03-12 09:26:38.000000000 -0700 +++ gconf-3.2.3/debian/control.in 2012-03-23 15:44:10.000000000 -0700 @@ -33,7 +33,7 @@ Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, - gconf-service (= ${binary:Version}), + gconf-service-backend (= ${binary:Version}), psmisc, dbus-x11, ${python:Depends} @@ -51,12 +51,27 @@ Package: gconf-service Architecture: any Multi-Arch: foreign +Depends: gconf-service-backend (= ${binary:Version}), + ${shlibs:Depends}, + ${misc:Depends} +Description: GNOME configuration database system (D-Bus service) + GConf is a configuration database system for storing application + preferences. It supports default or mandatory settings set by the + administrator, and changes to the database are instantly applied to all + running applications. It is written for the GNOME desktop but doesn't + require it. + . + This package provides the D-Bus enabled daemon that is used internally + by the GConf library to access configuration data. + +Package: gconf-service-backend +Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libgconf-2-4 (= ${binary:Version}), gconf2-common (= ${source:Version}) Breaks: gconf2-common (<< 3.2.3-2) -Replaces: gconf2-common (<< 3.2.3-2) +Replaces: gconf2-common (<< 3.2.3-2), gconf-service (<< 3.2.3-4.1) Description: GNOME configuration database system (D-Bus service) GConf is a configuration database system for storing application preferences. It supports default or mandatory settings set by the @@ -65,7 +80,9 @@ require it. . This package contains the D-Bus enabled daemon that is used internally - by the GConf library to access configuration data. + by the GConf library to access configuration data. It is an internal + implementation of gconf used to work around multiarch-related upgrade + problems, and will eventually be merged back into gconf-service. Package: gconf2-common Architecture: all diff -Nru gconf-3.2.3/debian/gconf-service-backend.install gconf-3.2.3/debian/gconf-service-backend.install --- gconf-3.2.3/debian/gconf-service-backend.install 1969-12-31 16:00:00.000000000 -0800 +++ gconf-3.2.3/debian/gconf-service-backend.install 2012-02-23 12:56:44.000000000 -0800 @@ -0,0 +1,3 @@ +usr/lib/*/gconf/gconfd-2 +usr/lib/*/gconf/2/*.so +usr/share/dbus-1/services diff -Nru gconf-3.2.3/debian/gconf-service.install gconf-3.2.3/debian/gconf-service.install --- gconf-3.2.3/debian/gconf-service.install 2012-02-23 12:56:44.000000000 -0800 +++ gconf-3.2.3/debian/gconf-service.install 1969-12-31 16:00:00.000000000 -0800 @@ -1,3 +0,0 @@ -usr/lib/*/gconf/gconfd-2 -usr/lib/*/gconf/2/*.so -usr/share/dbus-1/services diff -Nru gconf-3.2.3/debian/rules gconf-3.2.3/debian/rules --- gconf-3.2.3/debian/rules 2012-02-23 12:56:44.000000000 -0800 +++ gconf-3.2.3/debian/rules 2012-03-23 15:43:34.000000000 -0700 @@ -30,7 +30,7 @@ LDFLAGS += -Wl,-z,defs -Wl,--as-needed -DEB_DH_MAKESHLIBS_ARGS_gconf-service += -Xbackend +DEB_DH_MAKESHLIBS_ARGS_gconf-service-backend += -Xbackend DEB_DH_MAKESHLIBS_ARGS_libgconf-2-4 += -V"libgconf-2-4 (>= 2.31.1), gconf-service" DEB_COMPRESS_EXCLUDE += usr/share/doc/gconf2/html