From Fedora Project Wiki
Line 117: Line 117:
<!-- 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?-->
<!-- 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?-->
** Update the gettext package to have the new gettext-tools package, which pulls in the gettext base package.
** Update the gettext package to have the new gettext-tools package, which pulls in the gettext base package.
** Updating all Fedora packages with '''BuildRequires: gettext''' to gettext-tools (this affects about 1100+ Fedora packages)
** Updating all Fedora packages with <code>BuildRequires: gettext</code> to gettext-tools (this affects about 1100+ Fedora packages)


* Other developers: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Other developers: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- 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?-->
<!-- 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?-->
** Packagers who own packages that currently depend on gettext at runtime and actually need gettext-tools have to change their '''Requires: gettext''' to the new '''gettext-tools''' subpackage. (This can safely be done even if they actually only require '''gettext'''.)
** Packagers who own packages that currently depend on gettext at runtime and actually need gettext-tools have to change their <code>Requires: gettext</code> to the new <code>gettext-tools</code> subpackage. (This can safely be done even if they actually only require <code>gettext</code>.)


* Release engineering:  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Release engineering:  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->

Revision as of 06:07, 26 May 2022


Split Gettext Package

Summary

Moving the larger translation tools from the gettext base package into a separate tools sub-package.

Owner


Current status

  • Targeted release: Fedora Linux 37
  • Last updated: 2022-05-26
  • FESCo issue:
  • Tracker bug:
  • Release notes tracker:

Detailed Description

Gettext is one of the core packages. It's installed on-disk size is about ~6.1 MB. A large number of packages directly or indirectly depend on it. Extracting "tools" from main gettext package into a separate sub-package would reduce the footprint by about ~4.7 MB on most normal installations.

After the split this should look like:

gettext package
--------------------
compressed size: 172 kB
uncompressed size: 749.6 kB

gettext-tools subpackage
------------------------
compressed size: 1.0 MB
uncompressed size: 4.7 MB

As gettext depends on gettext-libs:

gettext-libs subpackage
-----------------------
compressed size: 322K
uncompressed size: 933.7 kB

Grouping of binaries:

gettext:
envsubst gettext gettext.sh ngettext

gettext-tools:
msgattrib msgcat msgcmp msgcomm msgconv msgen msgexec msgfilter msgfmt msggrep msginit msgmerge msgunfmt msguniq recode-sr-latin xgettext

Feedback

Benefit to Fedora

Space saving of about ~4.7 MB on most of the normal installations.

Scope

  • Proposal owners:
    • Update the gettext package to have the new gettext-tools package, which pulls in the gettext base package.
    • Updating all Fedora packages with BuildRequires: gettext to gettext-tools (this affects about 1100+ Fedora packages)
  • Other developers:
    • Packagers who own packages that currently depend on gettext at runtime and actually need gettext-tools have to change their Requires: gettext to the new gettext-tools subpackage. (This can safely be done even if they actually only require gettext.)
  • Release engineering:
    • All the spec changes to packages, particularly for BuildRequires, need to land in git before the mass rebuild.
  • Policies and guidelines: N/A (not needed for this Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Objectives:

Upgrade/compatibility impact

Both "gettext" and "gettext-tools" obsoletes earlier version of gettext.
So, on update both packages will get installed on systems having gettext. (preinstalled)

For current older Fedora releases gettext should Provides: gettext-tools for forward compatibility.


How To Test

  • test upgrades from F36 to F37
  • test minimal/default installs continue to work as expected
  • packages that depend on gettext continue to rebuild normally


User Experience

User will see lighter gettext package and a new gettext-tools package.
Many of the desktop/web apps/libraries use gettext-tools. They would need to update their dependency to "gettext-tools" now. This subpackaging is also the recommended packaging by upstream and corresponds to Debian's gettext-base and gettext packages.

Dependencies

Packages which explicitly have a dependency on gettext need to check if they need programs provided by gettext-tool, and if so they need to update their dependency to "gettext-tools" from gettext.

Perhaps about ~26 packages require gettext and ~1115 packages have build dependency.
Furthermore, gettext-tools has a dependency to gettext.

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) Revert the relevant packages updated.
    • (Provides: gettext-tools could also be added to gettext if necessary to simplify the reversion)
  • Contingency deadline: Beta freeze
  • Blocks release? No

Documentation

https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=PACKAGING


Release Notes

A gettext-tools package has been added to gettext, to separate out the larger gettext tools which are not commonly used at runtime.