From Fedora Project Wiki
m (Petersen moved page Changes/GettextToolsPackage to Changes/GettextRuntimeSubpackage: simplified Change)
(No difference)

Revision as of 12:13, 7 June 2022


Gettext Runtime Package

Summary

Moving the gettext runtime libraries from the gettext package into a separate runtime sub-package.

Owner

Current status

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

Detailed Description

Gettext is one of the core packages. Its installed on-disk size is about ~6.1 MB. A large number of packages directly or indirectly depend on it. Extracting "runtime" 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-runtime package
-----------------------
compressed size: 172 kB
uncompressed size: 749.6 kB

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

As gettext-runtime depends on gettext-libs:

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

Grouping of binaries:

gettext-runtime:
envsubst gettext gettext.sh ngettext

gettext:
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 for typical installations.

Scope

  • Proposal owners:
    • Update the gettext package in all Fedora branches including rawhide to add Provides: gettext-tools for forward compatibility [done for rawhide]
    • File bugs against packages that require gettext-tools or gettext-devel at runtime and hence need to be updated to depend on it.
    • Before the Mass Rebuild:
      • In Rawhide dist-git change all packages with BuildRequires: gettext to BuildRequires: gettext-tools (this affects about 1100+ Fedora source packages)
      • Update the Rawhide gettext package to have the new gettext-tools subpackage, which pulls in the gettext base package (PR)
    • Before branching, complete updating any remaining Requires: gettext in packages, which require gexttext-tools at runtime and weren't updated in time by their package maintainers.
  • Other developers:
    • Packagers who own packages that have a direct runtime dependency on gettext (estimated to be not more than 30 packages) and actually need gettext-tools have to change their Requires: gettext to the new gettext-tools subpackage in Rawhide (roughly around 10 Fedora packages). (This should be a safe change even if they really only actually require gettext.)
  • Release engineering:
    • Just need to confirm that all BuildRequires changes have landed in dist-git ahead of 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

On update both packages will get installed on systems having gettext. (preinstalled)


How To Test


User Experience

User will see a new lighter gettext-runtime package and a gettext package.
Many of the desktop/web apps/libraries continue using gettext. 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-runtime, and if so they may update their dependency to "gettext-runtime" from gettext.

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

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) Change owners will revert the relevant packages updated.
    • (Provides: gettext-tools could be put back in the base package if necessary to simplify the reverting)
  • 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-runtime package has been added to gettext to separate out the gettext translation utilities that are not commonly used at runtime.