From Fedora Project Wiki

Revision as of 10:21, 20 February 2015 by Pmachata (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Fedora 22 Boost 1.58 Uplift

Summary

This change brings Boost 1.57.0 or later to Fedora 22. We generally aim to ship 1.58.0, as that seems likely to make it (hence the Change name), but 1.57.0 is out and available now.

Owner

  • Name: Petr Machata
  • Email: pmachata redhat com
  • Release notes owner:

Current status

Update 2015-02-04

  • Fedora 22 rebased to Boost 1.57
  • All clients rebuilt, except those that had boost-unrelated failures.
  • Side tag merged.
  • Secondary rebuilds underway for packages with tag-merge conflicts.
  • 100% done.

Detailed Description

The aim is to synchronize Fedora with the most recent Boost release. Because ABI stability is one of explicit Boost non-goals, this entails rebuilding of all dependent packages. This has also always entailed yours truly assisting maintainers of client packages in decoding cryptic boostese seen in output from g++. Such care is to be expected this time around as well.

Boost 1.58 doesn't have firm schedule yet. I don't think there is even a provisional schedule at this point. We may have to package Boost 1.57 instead.

Here is the Fedora 21 Change, should you need it.

Benefit to Fedora

Fedora will stay relevant, as far as Boost clients are concerned. It seems like Boost 1.58 will bring a new library Boost.Convert. There are no new libraries in Boost 1.57.

Scope

Rebasing Boost has a fairly large impact on Fedora. For Fedora 20, the scope was: about 130 packages _must_ be rebuilt due to ABI breakage inherent in bumping Boost sonames. There were almost 250 client packages total. I expect these numbers to stay in the same ballpark for Fedora 22.

  • Proposal owners:
    • Build will be done with Boost.Build v2 (which is upstream-sanctioned way of building Boost)
    • Request a "boost" build system tag (discussion) (ticket)
    • Build boost into that tag (build)
    • Post a request for rebuilds to fedora-devel (XXX link to fedora-devel message here)
    • Work on rebuilding dependent packages in the tag.
    • When most is done, re-tag all the packages to rawhide
    • Watch fedora-devel and assist in rebuilding broken Boost clients (by fixing the client, or Boost).
  • Other developers: Those who depend on Boost DSO's will have to rebuild their packages. Feature owners will alleviate some of this work as indicated above, and will assist those whose packages fail to build in debugging them.
  • Release engineering: Side tag creation.
  • Policies and guidelines: Apart from scope, this is business as usual, so no policies, no guidelines.

Upgrade/compatibility impact

No impact on system upgrade.

Some impact on other packages. Historically this hasn't been too big of a problem and could always be resolved before deadline.

How To Test

  • No special hardware is needed.
  • Integration testing simply consists of installing Boost packages (yum install boost) on Fedora and checking that it does not break other packages (see below for a way to obtain a list of boost clients).

User Experience

Expected to remain largely the same.

Dependencies

Packages that must be rebuilt:

$ repoquery -s --releasever=rawhide --whatrequires libboost\* --disablerepo=* --enablerepo=fedora | sort -u

All clients:

$ repoquery --releasever=rawhide --archlist=src --whatrequires boost-devel --disablerepo='*' --enablerepo=fedora-source

Contingency Plan

  • clean 1.58 (if everything works)
  • patch 1.58 (the likely outcome)
  • clean 1.57
  • patch 1.57 (the likely fallback outcome)
  • fedora 1.56 (the likely contingency plan)
  • fedora 1.56 + patches (if new GCC rejects code in 1.56)
  • remove Boost and its dependencies from Fedora

Boost's own test suite will likely catch many instances of what would otherwise bite us during rebuilds, so many of the wrinkles can be smoothed off-line.

  • Contingency deadline: We will know within days after side-tag is created.
  • Blocks release? Yes if there are client packages that are on installation media.

Documentation

Release Notes

Boost has been upgraded to version XXX. Apart from a number of bugfixes, this brings XXX.