Please transition orbit2 to multi-arch

Bug #977966 reported by Tom Ellis
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
orbit2 (Debian)
Fix Released
Unknown
orbit2 (Ubuntu)
Fix Released
Medium
Steve Langasek
Precise
Fix Released
Medium
Steve Langasek
Quantal
Fix Released
Medium
Steve Langasek

Bug Description

SRU JUSTIFICATION: orbit2 is part of the core GNOME2 library stack. Although GNOME2 is itself deprecated, there is still plenty of software using these libraries, and some of this software is only available as 32-bit software (in some cases because it's non-free and binary-only). It's important to have good support for such software in an LTS release, since users of such software will often stick with the LTS.

This SRU is part of a set together with libart-lgpl, libbonobo, libbonoboui, and gnome-vfs.

REGRESSION POTENTIAL: orbit2 loads dynamic objects from the filesystem. This means that there's potential for regression of reverse-dependencies to failing to find the library at build time, but also potential for regression at runtime due to orbit2 failing to load objects. This must be tested thoroughly before promotion as an SRU.

TEST CASE:
1. Install liborbit2 from precise on an amd64 machine.
2. Try to install liborbit2:i386. Note that it wants to remove liborbit2. Abort the installation.
3. enable -proposed. Try to install liborbit2:i386 again. Note that it wants to upgrade liborbit2 and install liborbit2:i386. Accept the upgrade.
4. confirm that the packages install successfully.
5. install liborbit2-dev from -proposed. Rebuild all packages that build-depend on liborbit2-dev to verify that they build successfully with no changes to the package contents or dependencies. Package list: evolution-exchange gtkhtml4.0 libbonobo libreoffice pyorbit at-spi balsa dasher gnome-mag gnome-speech gtkhtml3.14 stardict teg

Original bug report:
Please transition orbit2 to support multi-arch.

This package is still required by some third party applications.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: liborbit2 1:2.14.19-0.1
ProcVersionSignature: Ubuntu 3.2.0-22.35-generic 3.2.14
Uname: Linux 3.2.0-22-generic x86_64
ApportVersion: 2.0-0ubuntu5
Architecture: amd64
Date: Tue Apr 10 12:36:44 2012
InstallationMedia: Ubuntu 12.04 LTS "Precise Pangolin" - Beta amd64 (20120401)
ProcEnviron:
 LANGUAGE=en_GB:en
 TERM=xterm
 PATH=(custom, no user)
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
SourcePackage: orbit2
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Tom Ellis (tellis) wrote :
Changed in orbit2 (Debian):
status: Unknown → New
Revision history for this message
Tom Ellis (tellis) wrote :

There is some progress in the upstream debian bug, a patch was submitted but needs some modifications.

Changed in orbit2 (Ubuntu):
assignee: nobody → Canonical Foundations Team (canonical-foundations)
Steve Langasek (vorlon)
Changed in orbit2 (Ubuntu Precise):
status: New → In Progress
assignee: Canonical Foundations Team (canonical-foundations) → Steve Langasek (vorlon)
importance: Undecided → Medium
Steve Langasek (vorlon)
description: updated
Revision history for this message
Steve Langasek (vorlon) wrote :

I've build-tested all reverse-build-dependencies of orbit2 in the precise archive with the exception of libreoffice, and have seen no problems with any of them.

Revision history for this message
Martin Pitt (pitti) wrote :

++ g_ptr_array_add (paths, g_strdup ("/usr/lib/orbit-2.0"));

This backwards compat patch raises some further questions, as it's a change beyond standard multi-archification.

There are a number of packages which ship libraries in the old directory:

$ zgrep usr/lib/orbit-2.0 /tmp/Contents-i386.gz
usr/lib/debug/usr/lib/orbit-2.0/Accessibility_LoginHelper_module.so universe/libdevel/libatspi-dbg
usr/lib/debug/usr/lib/orbit-2.0/Accessibility_module.so universe/libdevel/libatspi-dbg
usr/lib/orbit-2.0/Bonobo_module.so libs/libbonobo2-0
usr/lib/orbit-2.0/GNOME_Magnifier_module.so universe/libs/libgnome-mag2
usr/lib/orbit-2.0/GNOME_Speech_module.so universe/libs/libgnome-speech7

(I filtered out the files from orbit2 itself.) These should be tested during verification.

Does liborbit gracefully handle the situation when you e. g. install libgnome-mag2:i386 on an amd64 machine, and thus /usr/lib/orbit-2.0/GNOME_Magnifier_module.so is an i386 library? If so (gvfs handles that corresponding case just fine), it's all ok. If not, I'd rather we convert the other packages to the new multi-arch path, too.

Revision history for this message
Steve Langasek (vorlon) wrote : Re: [Bug 977966] Re: Please transition orbit2 to multi-arch

On Mon, Apr 23, 2012 at 09:59:48AM -0000, Martin Pitt wrote:
> Does liborbit gracefully handle the situation when you e. g. install
> libgnome-mag2:i386 on an amd64 machine, and thus
> /usr/lib/orbit-2.0/GNOME_Magnifier_module.so is an i386 library?

Good question. The relevant loader code is:

                paths = ORBit_get_typelib_paths ();

                for (i = 0; paths && paths [i]; i++) {
                        fname = g_strconcat (
                                paths [i], G_DIR_SEPARATOR_S, libname, "_module", NULL);

                        if ((loaded = load_module (fname, libname)))
                                break;

                        else {
                                g_free (fname);
                                fname = NULL;
                        }
                }

load_module() returns false if g_module_open() fails, which will be true if
either the file doesn't exist or if it's of the wrong architecture (since
g_module_open() is a wrapper around dlopen()).

So a wrong-architecture module on the path should have no impact

> If so (gvfs handles that corresponding case just fine), it's all ok. If
> not, I'd rather we convert the other packages to the new multi-arch path,
> too.

If this would cause problems, those should be fixed in their own right as
part of the update, to ensure that a partial upgrade of orbit2 without the
plugin packages doesn't cause problems. Partial upgrades in SRUs are much
more likely to hit users than partial upgrades between releases.

I've regression-tested the module loading by manually installing an i386
version of Bonobo.so to /usr/lib/x86_64-linux-gnu/orbit-2.0/Bonobo.so on my
system, shadowing /usr/lib/orbit-2.0/Bonobo.so, and launching quodlibet, a
gnome2 app that loads Bonobo.so on my system. Strace confirms that with the
new liborbit2, /usr/lib/x86_64-linux-gnu/orbit-2.0/Bonobo.so is opened and
then rejected in favor of /usr/lib/orbit-2.0/Bonobo.so.

An application that wants to load a module from /usr/lib/orbit-2.0/ will of
course not be able to do so if it's of the wrong architecture; but the risk
of this leading to a regression is minimal, because currently only packages
of the native architecture will be installed (for both consumers of
liborbit2 and plugins). *After* this SRU it will be possible for users to
mix architectures in a way that's not usable, but that still requires wrong
configuration on the part of the user.

Revision history for this message
Martin Pitt (pitti) wrote :

I agree, it's not a problem of this SRU that an amd64 liborbit can't load :i386 extensions in /usr/lib/orbit-2.0/. Thanks for the careful testing!

Changed in orbit2 (Ubuntu Precise):
status: In Progress → Fix Committed
tags: added: verification-needed
Revision history for this message
Martin Pitt (pitti) wrote : Please test proposed package

Hello Tom, or anyone else affected,

Accepted orbit2 into precise-proposed. The package will build now and be available in a few hours. Please test and give feedback here. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you in advance!

Revision history for this message
Tom Ellis (tellis) wrote :

The package in proposed installs ok and allows both arch's to be installed. Fixed for me.

tags: added: verification-done
removed: verification-needed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package orbit2 - 1:2.14.19-0.1ubuntu1

---------------
orbit2 (1:2.14.19-0.1ubuntu1) precise-proposed; urgency=low

  [ Riku Voipio ]
  * Multiarchize. Closes: #641615.

  [ Steve Langasek ]
  * Remove .la files from the package, as they're no longer needed.
  * debian/patches/pre-multiarch-compatibility.patch: Support pre-
    multiarch directory as a compatibility fallback. Closes: #641615,
    LP: #977966.
 -- Steve Langasek <email address hidden> Fri, 20 Apr 2012 23:34:47 +0000

Changed in orbit2 (Ubuntu Quantal):
status: Triaged → Fix Released
Changed in orbit2 (Ubuntu Precise):
status: Fix Committed → Fix Released
Changed in orbit2 (Ubuntu Precise):
milestone: none → ubuntu-12.04.1
Changed in orbit2 (Debian):
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.