[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#694525: nmu: 227 source packages, for GStaticMutex



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: binnmu

The upgrade from GLib 2.30 to 2.32 breaks ABI on most non-x86 32-bit
architectures (#674156). Specifically, the deprecated struct GStaticMutex,
and the deprecated structs GStaticRecMutex and GStaticRWLock (each of which
contains a GStaticMutex), change in size on each architecture where the
alignment of a double is greater than the size of a pointer: for us, that's
armel, armhf, mips, mipsel, powerpc, s390 and sparc, plus probably some -ports
architectures.

Mitigations:

* it's in a deprecated struct
* the part of GStaticMutex after the initial pointer is no longer used for
  anything, so it only really matters when a larger struct contains a
  GStaticMutex followed by other members

Upstream consensus appears to be that since their stable branches 2.32 and
2.34 have the "new" ABI, we are way past the point where reverting it or
bumping the SONAME would be useful, so we should just consider the new ABI
to be the canonical one. I'm inclined to agree: any package in Debian that
gets regular uploads will have been built against the new GLib by now,
so we'd have to rebuild even more packages to go back.

Here is a lengthy list of binNMUs. I would like these to be done on all
architectures: our slower architectures are the ones that really need the
rebuild anyway, and if we also rebuild on the fast architectures, then those
packages from this list that are multiarch remain co-installable.

nmu \
    4store_1.1.4-2 \
    aisleriot_1:3.4.1-1 \
    alarm-clock-applet_0.3.3-1 \
    alarm-clock_1.2.5-1.2 \
    allegro5_5.0.7-2 \
    alsaplayer_0.99.80-5.1 \
    amanda_3.3.1-4 \
    ardour_2.8.14-1 \
    at-spi2-atk_2.5.3-2 \
    ats-lang-anairiats_0.2.3-1 \
    ats-lang-anairiats_0.2.6-1 \
    audacious-plugins_3.2.3-1 \
    audiopreview_0.6-2 \
    aweather_0.7-1 \
    ayttm_0.6.3-3 \
    balsa_2.4.12-1 \
    banshee-community-extensions_2.4.0-1 \
    betaradio_1.4-1 \
    bibledit-gtk_4.6-1 \
    bluefish_2.2.3-4 \
    bluez_4.99-2 \
    bognor-regis_0.6.12+git20101007.02c25268-7 \
    brasero_3.4.1-4 \
    bsl_0.5.0-2.1 \
    buzztard_0.5.0-4 \
    byzanz_0.2.2+git22.10.2011-1.3 \
    cheese_3.4.2-2 \
    cinnamon_1.6.2-1 \
    clementine_1.0.1+dfsg-2 \
    connman_1.0-1 \
    crystalhd_1:0.0~git20110715.fdd2f19-7 \
    cutter-testing-framework_1.1.7-1.2 \
    darktable_1.0.5-1 \
    dbus-glib_0.100-1 \
    dsyslog_0.6.0 \
    dvdisaster_0.72.4-1 \
    efax-gtk_3.2.8-1 \
    eiskaltdcpp_2.2.6-4 \
    entangle_0.4.1-1 \
    farstream_0.1.2-1 \
    ffgtk_0.8.1-2 \
    fluidsynth_1.1.5-2 \
    folks_0.6.9-1 \
    foxtrotgps_1.1.1-2 \
    fso-deviced_0.11.4-1 \
    g2ipmsg_0.9.6+dfsg-1.1 \
    gamine_1.1-2 \
    garcon_0.1.12-1 \
    gbemol_0.3.2-2 \
    gcompris_12.01-1 \
    gegl_0.2.0-2 \
    gentoo_0.19.13-2 \
    gfal2_2.0.0-1 \
    gftp_2.0.19-4 \
    gigedit_0.2.0-1 \
    gmerlin_1.2.0~dfsg-2 \
    gnac_0.2.4-1 \
    gnet_2.0.8-2.2 \
    gnome-applets_3.4.1-3  \
    gnome-dvb-daemon_1:0.2.8-1 \
    gnome-games_1:3.4.2-3 \
    gnome-keyring_3.4.1-5 \
    gnome-media_3.4.0-1 \
    gnome-mud_0.11.2-1 \
    gnome-settings-daemon_3.4.2+git20120925.a4c817-2 \
    gnome-shell_3.4.2-3 \
    gnome-subtitles_1.2-4 \
    gnome-sushi_0.4.1-3 \
    gnome-vfs_1:2.24.4-1 \
    gnomeradio_1.8-2 \
    gnomint_1.2.1-4 \
    gnonlin_0.10.17-2 \
    gnubiff_2.2.15-1 \
    gobject-introspection_1.32.1-1 \
    goobox_3.0.1-5 \
    google-gadgets_0.11.2-6 \
    gpe-announce_0.14-2 \
    gpe-bluetooth_0.56-3 \
    gpredict_1.3-2 \
    gsmartcontrol_0.8.6-1.2 \
    gst-buzztard_0.5.0-2+deb7u1 \
    gst-buzztard_0.6.0-1 \
    gst-fluendo-mp3_0.10.15.debian-1 \
    gst-plugins-base0.10_0.10.36-1 \
    gst0.10-python_0.10.22-3 \
    gst123_0.3.1-1 \
    gstreamer-hplugins_0.2.0-2 \
    gstreamer-sharp_0.9.2-4 \
    gstreamer0.10-editing-services_0.10.1-2 \
    gstreamer0.10-rtsp_0.10.8-3 \
    gstreamer0.10_0.10.36-1 \
    gthumb_3:3.0.1-2 \
    gtkpod_2.1.2-1 \
    guayadeque_0.3.5~ds0-4 \
    guile-gnome-platform_2.16.2-1 \
    gupnp-dlna_0.6.6-1 \
    gupnp-igd_0.2.1-2 \
    gxine_0.5.907-2 \
    haskell-gstreamer_0.12.1-1 \
    haskell-gtk_0.12.3-1 \
    heartbeat_3.0.5-3 \
    iptux_0.5.3-1 \
    istanbul_0.2.2-9 \
    jabber-muc_0.8-3 \
    jd_2.8.5~beta120206-3 \
    jnettop_0.13.0-1 \
    kamoso_2.0.2-1 \
    lensfun_0.2.5-2 \
    libbonobo_2.24.3-1 \
    libcanberra_0.28-5 \
    libdmapsharing_2.9.15-1 \
    libepc_0.4.4-1 \
    libgda5_5.0.3-1 \
    libgdata_0.12.0-1 \
    libgdiplus_2.10-3 \
    libglib-perl_3:1.260-1 \
    libgnome-keyring_3.4.1-1 \
    libgnome-media-profiles_3.0.0-1 \
    libgnome_2.32.1-2 \
    libgnomecups_0.2.3-5 \
    libgsecuredelete_0.2-1 \
    libgstreamer-interfaces-perl_0.06-2 \
    libgstreamer-perl_0.17-1 \
    libgusb_0.1.3-5 \
    libinstpatch_1.0.0-3 \
    libnice_0.1.2-1 \
    libplayer_2.0.1-2.1 \
    libvisual-plugins_0.4.0.dfsg.1-7 \
    libvisual_0.4.0-5 \
    libxr_1.0-2.1 \
    libzorpll_3.9.1.3-1 \
    lightspark_0.6.0.1-2 \
    linphone_3.5.2-10 \
    linuxdcpp_1.1.0-1 \
    longomatch_0.16.8+git20110626-1 \
    lua-lgi_0.6.2-1 \
    me-tv_1.3.7-0.2 \
    medit_1.0.93-1 \
    minbar_0.2.1-7 \
    mistelix_0.33-3 \
    moodbar_0.1.2-3 \
    moodbar_0.1.2-4 \
    morla_0.16.1-1.1 \
    mp3splt-gtk_0.7.2-2 \
    mpd_0.17.1-1 \
    mtpfs_1.1-2 \
    mysql-proxy_0.8.1-1.1 \
    mysql-workbench_5.2.40+dfsg-1 \
    netbeans_7.0.1+dfsg1-5 \
    network-manager_0.9.4.0-6 \
    nufw_2.4.3-2.1 \
    obex-data-server_0.4.5-1 \
    ocaml-gstreamer_0.1.0-3 \
    open-vm-tools_8.8.0+2012.05.21-724730-4 \
    openfetion_2.2.1-3.2 \
    openhpi_2.14.1-1.2 \
    orbit2_2.14.19-0.1 \
    packagekit_0.7.6-1 \
    pango1.0_1.30.0-1 \
    parole_0.2.0.6-1 \
    passepartout_0.7.1-1 \
    performous_0.6.1-6 \
    phonon-backend-gstreamer_4:4.6.0.0-2 \
    pidgin-sipe_1.13.1-2 \
    pidgin_2.10.6-1 \
    pidgin_2.10.6-2 \
    pigment-python_0.3.12-2 \
    pigment_0.3.17-1 \
    projectm_2.1.0+dfsg-1 \
    psimedia_1.0.3-git20120506-fb54b6e-1 \
    purple-plugin-pack_2.6.3-2 \
    qemu-kvm_1.1.2+dfsg-2 \
    qemu_1.1.2+dfsg-2 \
    qt-gstreamer_0.10.2-2 \
    rawstudio_2.0-1 \
    rhythmbox_2.97-2.1 \
    root-system_5.34.00-1 \
    ruby-gnome2_1.1.3-2 \
    rygel_0.14.3-2 \
    scli_0.4.0-2 \
    searchmonkey_0.8.1-8 \
    sflphone_1.1.0-2 \
    shotwell_0.12.3-2 \
    sigx_2.0.2-1 \
    slurm-llnl_2.3.4-2 \
    snappy-player_0.2-1 \
    sofia-sip_1.12.11+20110422-1 \
    sound-juicer_3.4.0-3 \
    spice-gtk_0.12-4 \
    sqlheavy_0.1.1-1 \
    squeak-vm_1:4.4.7.2357-1.1 \
    stardict_3.0.1-9.1 \
    subtitleeditor_0.33.0-1 \
    swac-explore_0.2-1.2 \
    swami_2.0.0+svn389-1 \
    sylpheed_3.2.0-1 \
    syncevolution_1.2.99.1-1 \
    syslog-ng_3.3.5-2 \
    telepathy-farstream_0.4.0-3 \
    telepathy-qt_0.9.1-4 \
    telepathy-ring_2.1.0-1 \
    thoggen_0.7.1-1 \
    tilda_0.09.6-2 \
    toonloop_2.2.0-1 \
    totem_3.0.1-8 \
    tumbler_0.1.25-1 \
    tuxcmd_0.6.70+dfsg-1 \
    uget_1.8.2-1 \
    vagalume_0.8.5-4 \
    vte3_0.32.2-1 \
    vte_0.28.2-5 \
    wireshark_1.8.2-1 \
    workrave_1.9.909+abc941eb70-1 \
    xbmc_11.0~git20120510.82388d5-1 \
    xfburn_0.4.3-4 \
    xfce4-mailwatch-plugin_1.1.0-5 \
    xfce4-volumed_0.1.13-3 \
    xfconf_4.8.1-1 \
    xmms2_0.8+dfsg-4 \
    xmp_3.4.0-1.1 \
    xneur_0.15.0-1.1 \
    xxxterm_1:1.11.3-1 \
    yelp_3.4.2-1 \
    zathura_0.1.2-4 \
    zorp_3.9.5-4 \
    . ALL . -m "Ensure package is built against GLib >= 2.32 (see #674156)"

Once all those have been binNMU'd, we can try again with gnome-dvb-daemon:

    gb gnome-dvb-daemon_1:0.2.9-1 . armel armhf mips mipsel powerpc s390 sparc

and it will probably build this time.

For some packages that I know to be big or significant, I checked the build
logs, confirmed that they were built with GLib 2.32 on all affected
architectures and excluded them from the list above. For instance, qt4-x11,
qtwebkit, webkit and the Mozilla suite don't need rebuilding, thankfully,
because their versions in both testing and unstable were built against
GLib 2.32 everywhere. There is scope for doing more of that, but at this
stage it's probably quicker to just queue the binNMUs...

To get that list I searched codesearch.debian.net for:

GStaticMutex, GStaticRecMutex, GStaticRWLock (for GLib)
\bStaticMutex, \bStaticRecMutex, \bStaticRWLock (for glibmm)
libvisual/libvisual.h (for libvisual)

and also included every package with a build-dependency on
src:gstreamer0.10, by asking dak (there were too many search results for
GstElement to look at them individually).

Of the affected packages, these headers mention GStaticMutex, GStaticRecMutex
or GStaticRWLock:

/usr/include/glibmm-2.4/glibmm/thread.h
/usr/include/gstreamer-0.10/gst/audio/gstaudiodecoder.h
/usr/include/gstreamer-0.10/gst/audio/gstaudioencoder.h
/usr/include/gstreamer-0.10/gst/base/gstcollectpads2.h
/usr/include/gstreamer-0.10/gst/check/gstcheck.h           (false positive)
/usr/include/gstreamer-0.10/gst/gstelement.h
/usr/include/gstreamer-0.10/gst/gstobject.h
/usr/include/gstreamer-0.10/gst/gstpad.h
/usr/include/gstreamer-0.10/gst/gsttask.h
/usr/include/gstreamer-0.10/gst/gsttrace.h
/usr/include/gstreamer-0.10/gst/rtp/gstbasertpdepayload.h
/usr/include/gstreamer-0.10/gst/video/gstbasevideocodec.h
/usr/include/libinstpatch-1.0/libinstpatch/IpatchItem.h
/usr/include/libvisual-0.4/libvisual/lv_thread.h
/usr/include/swami/libswami/SwamiLock.h
/usr/include/zorp/connect.h
/usr/include/zorp/listen.h
/usr/include/zorp/proxy.h

glibmm was already built against 2.32 on all architectures, because it
has a versioned dependency. So we don't have to binNMU glibmm, only
things that depend on it (because those might have been built with the
old GLib installed).

swami and zorp have a -dev but are in fact leaf packages, so we can stop
there.

I approximated the Gst stuff by the set of packages build-depending on
a package from src:gstreamer0.10. I'm open to suggestions for how to
improve on this - in theory, things could indirectly subclass one of the
Gst objects that contains a static mutex without directly depending on
libgstreamer0.10-dev, but in practice I don't think that really happens.

Regards,
    S


Reply to: