From Fedora Project Wiki

Fedora 21 Boost 1.56 Uplift

Summary

This change brings Boost 1.55.0 (as, Boost 1.56.0 was not ready in time) to Fedora 21.

Owner

Current status

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.56 doesn't have firm schedule yet. Current provisional schedule (published here) talks about May 5 2014, which would give us enough time to package Boost 1.56. But we may have to package Boost 1.55 instead.

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

Benefit to Fedora

Fedora will stay relevant, as far as Boost clients are concerned. Boost 1.55 brings a new library Boost.Predef.

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 largely the same for Fedora 21.

  • 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) (tag request ticket)
    • Build boost into that tag (build)
    • Post a request for rebuilds to fedora-devel (message)
    • 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 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

Historically, coordination was necessary for Python 3 packages that Boost depends on. Similarly if there are deep changes to MPI packages (openmpi, mpich2), we should coordinate.

Contingency Plan

  • clean 1.56 (if everything works)
  • patch 1.56 (the likely outcome)
  • clean 1.55
  • patch 1.55 (the likely fallback outcome)
  • 1.54 as in F20 (the likely contingency plan)
  • patch 1.54 (if new GCC rejects code in F20 boost)
  • 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 1.56.0. Apart from a number of bugfixes, this XXX fill in later when 1.56 is actually out XXX