From Fedora Project Wiki
No edit summary
No edit summary
Line 44: Line 44:
been updated to track the latest upstream changes, as detailed in this [https://bugzilla.redhat.com/show_bug.cgi?id=2036372#c1 comment] on the tracking issue.
been updated to track the latest upstream changes, as detailed in this [https://bugzilla.redhat.com/show_bug.cgi?id=2036372#c1 comment] on the tracking issue.


This proposal is part of a pair of proposals that aim to provide a way to modernize the TBB packging for
This proposal is part of a [https://fedoraproject.org/wiki/Changes/F39TBB2020.3 pair] of proposals that aim to provide a way to modernize the TBB packge version for Fedora while providing stability for those packages which are dependent on the older TBB library version.
Fedora while providing stability for those packages which are dependent on the older TBB library version.
 
It will be possible to install both devel and runtime versions of both TBB packages, but the devel compat package for version 2020.3 will require clients to point to a new include path where the legacy headers will be found.


== Feedback ==
== Feedback ==
Line 51: Line 52:


== Benefit to Fedora ==
== Benefit to Fedora ==
<!-- What is the benefit to the distribution?  Will the software we generate be improved? How will the process of creating Fedora releases be improved?
 
      Be sure to include the following areas if relevant:
      If this is a major capability update, what has changed?
          For example: This change introduces Python 5 that runs without the Global Interpreter Lock and is fully multithreaded.
      If this is a new functionality, what capabilities does it bring?
          For example: This change allows package upgrades to be performed automatically and rolled-back at will.
      Does this improve some specific package or set of packages?
          For example: This change modifies a package to use a different language stack that reduces install size by removing dependencies.
      Does this improve specific Spins or Editions?
          For example: This change modifies the default install of Fedora Workstation to be more in line with the base install of Fedora Server.
      Does this make the distribution more efficient?
          For example: This change replaces thousands of individual %post scriptlets in packages with one script that runs at the end.
      Is this an improvement to maintainer processes?
          For example: Gating Fedora packages on automatic QA tests will make rawhide more stable and allow changes to be implemented more smoothly.
      Is this an improvement targeted as specific contributors?
          For example: Ensuring that a minimal set of tools required for contribution to Fedora are installed by default eases the onboarding of new contributors.


    When a Change has multiple benefits, it's better to list them all.
Fedora 39 will include a current version of Thread Building Blocks, specifically version 2021.7.
Fedora will stay relevant, as far as Thread Building Blocks clients are concerned, including GCC's support for Standard C++, as ships with an embedded version of the C++17 parallel algorithms, based on code that is also part of the upstream TBB, and currently requires TBB to be present on the system.


    Consider these Change pages from previous editions as inspiration:
Fedora 39 will continue to include the older 2020.3 version of TBB to ensure stability for Thread Building Blocks clients which are not currently able to move to a newer version of TBB.
    https://fedoraproject.org/wiki/Changes/Annobin (low-level and technical, invisible to users)
    https://fedoraproject.org/wiki/Changes/ParallelInstallableDebuginfo (low-level, but visible to advanced users)
    https://fedoraproject.org/wiki/Changes/VirtualBox_Guest_Integration (primarily a UX change)
    https://fedoraproject.org/wiki/Changes/NoMoreAlpha (an improvement to distro processes)
    https://fedoraproject.org/wiki/Changes/perl5.26 (major upgrade to a popular software stack, visible to users of that stack)
-->


== Scope ==
== Scope ==
* Proposal owners:
* Proposal owners:
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
** A compat package based on the current 2020.3 version of the existing TBB package will be created.
** Evaluate TBB dependent packages to identify those which need to move to the compat version of the TBB package. An initial
[https://bugzilla.redhat.com/show_bug.cgi?id=2036372#c1 analysis] suggests the majority of current TBB clients will need to
move to the compat package.
** Request a "f39-tbb" [https://docs.pagure.org/releng/sop_adding_side_build_targets.html build system tag]
** Build TBB into that tag.
** Post a request for rebuilds to fedora-devel
** Create patches for those packages affected by this change to adjust their includes to point the compat package's headers as necessary, work with affected package owners to update package specs to account for the change.
** When most packages are done, re-tag all the packages rawhide.
** Watch fedora-devel and assist in rebuilding broken TBB clients.


* Other developers: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Other developers:
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
** Those who depend on Thread Building Blocks 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: [https://pagure.io/releng/issues #Releng issue number] <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Release engineering: TODO <!-- [https://pagure.io/releng/issues #Releng issue number] -->
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuild required?  include a link to the releng issue.
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->


* Policies and guidelines: N/A (not needed for this Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Policies and guidelines: N/A (not needed for this Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. Please submit a pull request with the proposed changes before submitting your Change proposal. -->
** Apart from scope, this is business as usual, so no new policies, no new guidelines.
 
* Trademark approval: N/A (not needed for this Change)
<!-- If your Change may require trademark approval (for example, if it is a new Spin), file a ticket ( https://pagure.io/Fedora-Council/tickets/issues ) requesting trademark approval from the Fedora Council. This approval will be done via the Council's consensus-based process. -->
 
* Alignment with Objectives:
<!-- Does your proposal align with the current Fedora Objectives: https://docs.fedoraproject.org/en-US/project/objectives/ ? It's okay if it doesn't, but it's something to consider -->


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? -->
* No manual configuration or data migration needed.
 
* Some impact on other packages needing code changes to rebuild.
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 


== How To Test ==
== How To Test ==
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done. If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.
* No special hardware is needed.
 
* Parallel install of the 2020.3 TBB compat packages and the updated TBB packages and checking that it does not
Remember that you are writing this how to for interested testers to use to check out your change implementation - documenting what you do for testing is OK, but it's much better to document what *I* can do to test your change.
break other packages. See [https://bugzilla.redhat.com/show_bug.cgi?id=2036372#c1] for an analysis of impacted packages.
 
A good "how to test" should answer these four questions:
 
0. What special hardware / data / etc. is needed (if any)?
1. How do I prepare my system to test this change? What packages
need to be installed, config files edited, etc.?
2. What specific actions do I perform to check that the change is
working like it's supposed to?
3. What are the expected results of those actions?
-->
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 


== User Experience ==
== User Experience ==
<!-- If this change proposal is noticeable by users, how will their experiences change as a result?
* Expected to remain largely the same.
 
* Developers building third-party software on Fedora may need to rebuild against the new TBB packages, and may need to adjust their code to either remain on the compat TBB version or move to the new version supplied by the updated TBB package.
This section partially overlaps with the Benefit to Fedora section above. This section should be primarily about the User Experience, written in a way that does not assume deep technical knowledge. More detailed technical description should be left for the Benefit to Fedora section.
 
Describe what Users will see or notice, for example:
  - Packages are compressed more efficiently, making downloads and upgrades faster by 10%.
  - Kerberos tickets can be renewed automatically. Users will now have to authenticate less and become more productive. Credential management improvements mean a user can start their work day with a single sign on and not have to pause for reauthentication during their entire day.
- Libreoffice is one of the most commonly installed applications on Fedora and it is now available by default to help users "hit the ground running".
- Green has been scientifically proven to be the most relaxing color. The move to a default background color of green with green text will result in Fedora users being the most relaxed users of any operating system.
-->


== Dependencies ==
== Dependencies ==
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->
Packages that must be rebuilt:
<code>& dnf repoquery -s --releasever=rawhide --whatrequires libtbb\* --enablerepo=fedora | sort -u</code>


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
The tracking [https://bugzilla.redhat.com/show_bug.cgi?id=2036372 issue's] analysis suggests that only the following packages will be able to move to a newer TBB -
* fawkes
* gazebo
* opencascade
* pmemkv
* root


While the remaining clients of TBB will need to have their spec's include paths adjusted to use the proposed [https://fedoraproject.org/wiki/Changes/F39TBB2020.3 2020.3 compat] package.


== Contingency Plan ==
== Contingency Plan ==


<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism: Worst case scenario is to abandon the update and simply ship F39 with the existing TBB package, which is already in rawhide.
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Contingency deadline: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? N/A (not a System Wide Change), Yes/No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 


== Documentation ==
== Documentation ==
<!-- Is there upstream documentation on this change, or notes you have written yourself? Link to that material here so other interested developers can get involved. -->
* Notes on the scope of change, motivation, and likely impacts are in the comments on the tracking [https://bugzilla.redhat.com/show_bug.cgi?id=2036372 issue].
 
* https://github.com/oneapi-src/oneTBB/releases/tag/v2021.7.0 (Released 2nd October 2022)
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* https://github.com/oneapi-src/oneTBB/releases/tag/v2020.3 (Released 10th July 2020)
N/A (not a System Wide Change)  


== Release Notes ==
== Release Notes ==
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- TODO -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this change, indicate them here.  A link to upstream documentation will often satisfy this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release.
 
Release Notes are not required for initial draft of the Change Proposal but has to be completed by the Change Freeze.
-->

Revision as of 00:52, 6 February 2023

Modernize Thread Building Blocks for Fedora 39

This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.

Summary

Fedora is currently shipping version 2020.3 (released July 10, 2020) of the Thread Building Blocks library. The current upstream version is 2021.7 (released October 28, 2022). The Fedora community has expressed interest in moving the TBB package to track a more modern version of the upstream.

Owner


Current status

  • Targeted release: Fedora 39
  • Last updated: 2023-02-06
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

Fedora has shipped with version 2020.3 of the Thread Building Blocks library since Fedora 33. The upstream project made a decision to break backward compatibility after this release. As packages have moved to match the upstream's changes it has become more difficult to continue to defer updating the Fedora packaging for TBB. The situation is further complicated by not all dependent packages having been updated to track the latest upstream changes, as detailed in this comment on the tracking issue.

This proposal is part of a pair of proposals that aim to provide a way to modernize the TBB packge version for Fedora while providing stability for those packages which are dependent on the older TBB library version.

It will be possible to install both devel and runtime versions of both TBB packages, but the devel compat package for version 2020.3 will require clients to point to a new include path where the legacy headers will be found.

Feedback

Benefit to Fedora

Fedora 39 will include a current version of Thread Building Blocks, specifically version 2021.7. Fedora will stay relevant, as far as Thread Building Blocks clients are concerned, including GCC's support for Standard C++, as ships with an embedded version of the C++17 parallel algorithms, based on code that is also part of the upstream TBB, and currently requires TBB to be present on the system.

Fedora 39 will continue to include the older 2020.3 version of TBB to ensure stability for Thread Building Blocks clients which are not currently able to move to a newer version of TBB.

Scope

  • Proposal owners:
    • A compat package based on the current 2020.3 version of the existing TBB package will be created.
    • Evaluate TBB dependent packages to identify those which need to move to the compat version of the TBB package. An initial

analysis suggests the majority of current TBB clients will need to move to the compat package.

    • Request a "f39-tbb" build system tag
    • Build TBB into that tag.
    • Post a request for rebuilds to fedora-devel
    • Create patches for those packages affected by this change to adjust their includes to point the compat package's headers as necessary, work with affected package owners to update package specs to account for the change.
    • When most packages are done, re-tag all the packages rawhide.
    • Watch fedora-devel and assist in rebuilding broken TBB clients.
  • Other developers:
    • Those who depend on Thread Building Blocks 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: TODO
  • Policies and guidelines: N/A (not needed for this Change)
    • Apart from scope, this is business as usual, so no new policies, no new guidelines.

Upgrade/compatibility impact

  • No manual configuration or data migration needed.
  • Some impact on other packages needing code changes to rebuild.

How To Test

  • No special hardware is needed.
  • Parallel install of the 2020.3 TBB compat packages and the updated TBB packages and checking that it does not

break other packages. See [1] for an analysis of impacted packages.

User Experience

  • Expected to remain largely the same.
  • Developers building third-party software on Fedora may need to rebuild against the new TBB packages, and may need to adjust their code to either remain on the compat TBB version or move to the new version supplied by the updated TBB package.

Dependencies

Packages that must be rebuilt: & dnf repoquery -s --releasever=rawhide --whatrequires libtbb\* --enablerepo=fedora | sort -u

The tracking issue's analysis suggests that only the following packages will be able to move to a newer TBB -

  • fawkes
  • gazebo
  • opencascade
  • pmemkv
  • root

While the remaining clients of TBB will need to have their spec's include paths adjusted to use the proposed 2020.3 compat package.

Contingency Plan

  • Contingency mechanism: Worst case scenario is to abandon the update and simply ship F39 with the existing TBB package, which is already in rawhide.

Documentation

Release Notes