From Fedora Project Wiki


Gettext Runtime Subpackage

Summary

Subpackage gettext's runtime programs in a small runtime subpackage, reducing the default install footprint.

Owner

Current status

Detailed Description

Gettext is one of the core packages. Its installed on-disk size is about ~6.1 MB. Extracting runtime utilities from main gettext package into a separate sub-package will reduce the default system footprint by about ~4.7 MB on most normal installations.

Note further that envsubst has also been split out into the gettext-envsubst subpackage allowing it to be installed independently.

After the split this should look like:

gettext-runtime subpackage
-----------------------
compressed size: 172 kB
uncompressed size: 749.6 kB

gettext package
------------------------
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

  • initial devel thread floating subpackaging idea (April 2022)

Benefit to Fedora

Space saving of about ~4.7 MB for typical installations.

Scope

  • Proposal owners:
    • Add Provides: gettext-runtime to gettext [done in rawhide]
    • Update the gettext package in rawhide to have the new gettext-runtime subpackage, pulled in by the gettext base package (PR)
    • File bugs against packages that could be changed to only need gettext-runtime at runtime.
    • Subpackage envsubst as a mini-subpackage of gettext-runtime (bz)
  • Other developers:
    • Packagers who own packages that have a direct runtime dependency on gettext (roughly 30 packages) and that actually only need gettext-runtime can change their Requires: gettext to the new gettext-runtime subpackage in Rawhide.
  • 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

Impact should be low: on upgrade both packages will get installed on systems that had gettext installed.


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, install, and function normally


User Experience

User will see a new lighter gettext-runtime package and a gettext package.
This subpackage separation also corresponds to the recommended packaging by upstream and Debian's gettext-base and gettext packages.

Dependencies

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

Only about 33 Fedora packages currently require gettext (whereas almost 1200 packages have a buildtime dependency):

NsCDE backup-manager blivet-gui byobu debootstrap deepin-gettext-tools ecryptfs-utils fontconfig gambas3 gnome-books gnome-common grub2 ibus ibus-chewing kf5-ki18n libpst libvirt lokalize mate-common osmo photocollage playonlinux po-debconf po4a poedit redhat-lsb rpminspect sensible-utils sugar-toolkit-gtk3 translate-toolkit vdr vim-syntastic yast2-devtools

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) Package owners to revert relevant packages.
  • Contingency deadline: Beta freeze
  • Blocks release? No

Documentation

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


Release Notes

gettext-runtime and gettext-envsubst subpackages have been added to gettext to separate out the programs needed at runtime, reducing the default install footprint.