Via 'copy', a locale can reuse definitions from another locale. This is very practical as it reduces the file size of a locale and eases maintenance. Some locales copy parts from each other in both directions, however, resulting in cyclic dependencies. This prevents only using a one of these locales in a minimized setup, as both locales are always required. Additionally, a cyclic dependency also increases the complexity or maintaining copied parts. For these reasons it is better to untangle cyclic dependencies by interchanging definitions and reuse so that one of these locales is no longer depending on the other locale. In most of these cases, a new local reuses a lot from an existing locale, but also adds definitions which were not present in the existing locale. When some of these new definitions apply for both locales, the older locale (in which these definitions were originally missing) starts using these via a copy. This can be very simple definitions such as paper size, but it creates a cyclic dependency, where it was better to move these definitions to the older locale and reuse them in the newer locale (which already does a lot of reuse of the older locale). An overview of cyclic dependencies can be shown with the script https://github.com/PanderMusubi/locale-en-nl/blob/master/analysis/3-cyclic-dependencies.py At the moment, the result is: - Cyclic dependencies via copy found between locales en_US and en_GB - Cyclic dependencies via copy found between locales om_ET and om_KE - Cyclic dependencies via copy found between locales am_ET and ti_ET - Cyclic dependencies via copy found between locales en_PH and tl_PH - Cyclic dependencies via copy found between locales tl_PH and fil_PH - Cyclic dependencies via copy found between locales ber_DZ and kab_DZ I would like to propose that regarding only these cyclic dependencies (not other dependencies) are solved by eventually: - en_GB depends on en_US - om_ET depends on om_KE - am_ET depends on ti_ET - en_PH and tl_PH depend on fil_PH and en_US - kab_DZ depends on ber_DZ If desired by the maintainers of glibc, I can contribute patches for this, starting with the more simple cases, such as DZ and PH.
Created attachment 13384 [details] Graph with dependencies Red arrows in this graph are cyclic dependencies. To keep the graph readable, the following files are omitted: 'i18n', 'iso14651_t1', 'iso14651_t1_common', 'iso14651_t1_pinyin'
Created attachment 13385 [details] Graph with dependencies (PNG version) See comment for PDF version. Hope that the attachments help getting this issue solved.
The master branch has been updated by Mike Fabian <mfabian@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=cb8e8b2e218c4d8c1e33b3ab212b0bc15245f48c commit cb8e8b2e218c4d8c1e33b3ab212b0bc15245f48c Author: Mike FABIAN <mfabian@redhat.com> Date: Wed Jan 10 18:00:26 2024 +0100 localedata: resolve cyclic dependencies Resolves: BZ # 24006
Fixed in glibc master.