Bug 1326470

Summary: glibc `locale -a` output does not exactly match between locale-archive and langpacks.
Product: [Fedora] Fedora Reporter: Pravin Satpute <psatpute>
Component: glibcAssignee: Mike FABIAN <mfabian>
Status: NEW --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: arjun.is, codonell, dj, fweimer, i18n-bugs, jakub, law, mfabian, pfrankli, siddhesh, sipoyare
Target Milestone: ---Keywords: FutureFeature, i18n
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1627016 (view as bug list) Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1627016    

Description Pravin Satpute 2016-04-12 18:33:27 UTC
Description of problem:
1. dnf install  glibc-all-langpacks 
2. locale -a|grep mr
   mr_IN
   mr_IN.utf8

1. dnf remove glibc-all-langpacks, dnf install glibc-langpack-mr
   locale -a|grep mr
   mr_IN

  Missing mr_IN.utf

I am not sure about usage of mr_IN.utf8, but this is more issue from backward compatibility side.


Version-Release number of selected component (if applicable):
glibc-2.23.1-5.fc24.x86_64

How reproducible:
Everytime

Steps to Reproduce:
1. Install glibc-langpack-mr
2. locale -a|grep mr


Actual results:
List only 
- mr_IN

Expected results:
As a backward compatibility, It should list both
mr_IN
mr_IN.alias

Additional info:
It its redundant and no use, feel free to close as NOTABUG :)

Comment 1 Carlos O'Donell 2016-04-12 19:26:57 UTC
The only supported locale is mr_IN, and it is always UTF-8.

Therefore mr_IN and mr_IN.utf8 are identical.

I agree that we should have exactly the same locales in both cases.

There appears to be a slight difference in the locale-archive versus locale files cases and we need to track that down.

Mike, Any ideas?

Comment 2 Carlos O'Donell 2016-04-12 19:27:59 UTC
To be clear we should either have:

(a) Both mr_IN and mr_IN.utf8 with locale-archive and without.

or

(b) Only mr_IN with locale-archive adn without.

A consistent set of visible locales for both cases outlined in comment #0.

Comment 3 Mike FABIAN 2016-04-12 20:14:31 UTC
When the archive is created, mr_IN.utf8 is added as a sort of alias for mr_IN.

One can get the same effect for the folder by using symbolic links. 

Like this:

[mfabian@Fedora-Workstation-netinst-x86_6 ~]$ cd /usr/lib/locale/
[mfabian@Fedora-Workstation-netinst-x86_6 locale]$ sudo ln  -s mr_IN mr_IN.utf-8[sudo] mfabian のパスワード:
[mfabian@Fedora-Workstation-netinst-x86_6 locale]$ locale -a | grep ^mr
mr_IN
mr_IN.utf-8
[mfabian@Fedora-Workstation-netinst-x86_6 locale]$ 

I could improve the glibc.spec to package such symlinks for all cases
where this makes a difference.

Another option would be to edit the SUPPORTED file.
For example, for German it contains:

de_AT.UTF-8/UTF-8 \
de_AT/ISO-8859-1 \
de_AT@euro/ISO-8859-15 \
de_BE.UTF-8/UTF-8 \
de_BE/ISO-8859-1 \
de_BE@euro/ISO-8859-15 \
de_CH.UTF-8/UTF-8 \
de_CH/ISO-8859-1 \
de_DE.UTF-8/UTF-8 \
de_DE/ISO-8859-1 \
de_DE@euro/ISO-8859-15 \
de_LU.UTF-8/UTF-8 \
de_LU/ISO-8859-1 \
de_LU@euro/ISO-8859-15 \

For the lines which do not have an encoding before the /, in this case

de_DE/ISO-8859-1 

for example, locale-archive will contain 2 entries, 

de_DE *and* de_DE.iso88591 which is then listed by "locale -a".

But when the folders are used, only the de_DE folder exists.

So either create such symbolic links for all lines in SUPPORTED which do 
not have an encoding before / (a little bit of scripting and macros ...),
*or* edit SUPPORTED to *always* have an encoding before  /, i.e. 
change 

de_DE/ISO-8859-1

into

de_DE.ISO-8859-1/ISO-8859-1

In the latter case, locale archive would list only de_DE.iso88591
and the folder created would be /usr/lib/locale/de_DE.iso88591 so in case
of the folders "locale -a" would list the same.

But in the latter case, the "locale -a" list would be a bit shorter then it used to be because the duplicates would be missing in the list.
Would that cause backward compatibility problems?

If we want the same list as it always was, we could create the symbolic links
to list the duplicates in the folder case as well.

Comment 4 Fedora End Of Life 2017-07-25 20:32:15 UTC
This message is a reminder that Fedora 24 is nearing its end of life.
Approximately 2 (two) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 24. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as EOL if it remains open with a Fedora  'version'
of '24'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version'
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not
able to fix it before Fedora 24 is end of life. If you would still like
to see this bug fixed and are able to reproduce it against a later version
of Fedora, you are encouraged  change the 'version' to a later Fedora
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's
lifetime, sometimes those efforts are overtaken by events. Often a
more recent Fedora release includes newer upstream software that fixes
bugs or makes them obsolete.

Comment 5 Florian Weimer 2017-07-27 11:16:38 UTC
glibc-2.25.90-27.fc27.x86_64 is still inconsistent.

Comment 6 Jan Kurik 2017-08-15 07:24:49 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 27 development cycle.
Changing version to '27'.

Comment 7 Jan Kurik 2018-08-14 11:00:57 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 29 development cycle.
Changing version to '29'.

Comment 8 Carlos O'Donell 2018-10-15 16:22:44 UTC
The real solution here is to create the symlinks in /usr/lib/locale that match exactly what the locale-archive is displaying.

Mike, if you get a chance, please feel free to go in that direction to fix this difference between langpacks and locale-archive.

Comment 9 Jens Petersen 2019-03-18 09:19:53 UTC
Can we fix this for F31?

Comment 10 Pravin Satpute 2019-05-03 07:34:17 UTC
*** Bug 1705635 has been marked as a duplicate of this bug. ***

Comment 11 Florian Weimer 2019-10-30 13:44:34 UTC
I think we should add the required aliases to /usr/share/locale/locale.alias (upstream: intl/locale.alias), instead of trying to package symbolic links.

Comment 12 Carlos O'Donell 2019-10-30 13:55:06 UTC
(In reply to Florian Weimer from comment #11)
> I think we should add the required aliases to /usr/share/locale/locale.alias
> (upstream: intl/locale.alias), instead of trying to package symbolic links.

... and possibly remove the locarchive.c alias creation code so that the alias lives only in locale.alias and is computed from SUPPORTED. This would make it easier for downstream since they just update SUPPORTED.

The other option is to have localedef create the alias with a new flag. This is better for end users since they can control adding the alias or not. This option would control adding the alias to locarchive or the files.