Bug 1894854 - find-lang.sh doesn't find locales or generate wrong when qm file has 3 characters
Summary: find-lang.sh doesn't find locales or generate wrong when qm file has 3 charac...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: rpm
Version: 33
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Packaging Maintenance Team
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 2144005
TreeView+ depends on / blocked
 
Reported: 2020-11-05 09:23 UTC by sixg0000d@gmail.com
Modified: 2022-11-18 16:51 UTC (History)
6 users (show)

Fixed In Version:
Clone Of:
: 2144005 (view as bug list)
Environment:
Last Closed: 2021-05-16 12:03:55 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description sixg0000d@gmail.com 2020-11-05 09:23:08 UTC
Description of problem:
The find-lang script cannot find qm files when my qm file name with a ISO 639-3 code like 'yue.qm' .

Version-Release number of selected component (if applicable):
$ rpm -qf /usr/lib/rpm/find-lang.sh
rpm-build-4.16.0-1.fc33.x86_64

How reproducible:
always

Steps to Reproduce:
1.Has some qm files in buildroot
$ ls path/usr/share/name/lang/
en_US.qm  ja_JP.qm  yue_HK.qm  yue.qm  zh_CN.qm  zh_TW.qm

2.Try to use script to handle there
$ /usr/lib/rpm/find-lang.sh path name --with-qt --all-name

Actual results:
$ cat name.lang 
%lang(en_US) /usr/share/name/lang/en_US.qm
%lang(ja_JP) /usr/share/name/lang/ja_JP.qm
%lang(zh_CN) /usr/share/name/lang/zh_CN.qm
%lang(zh_TW) /usr/share/name/lang/zh_TW.qm
# This is a wrong locale code, because it is missing language code
%lang(HK) /usr/share/name/lang/yue_HK.qm


Expected results:
$ cat name.lang 
%lang(en_US) /usr/share/name/lang/en_US.qm
%lang(ja_JP) /usr/share/name/lang/ja_JP.qm
%lang(zh_CN) /usr/share/name/lang/zh_CN.qm
%lang(zh_TW) /usr/share/name/lang/zh_TW.qm
%lang(yue_HK) /usr/share/name/lang/yue_HK.qm
%lang(yue) /usr/share/name/lang/yue.qm

Additional info:
I think the problem is in the sed expression in the script:
...
'
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$QT"'s:\(.*/'"$NAME"'_\([a-zA-Z]\{2\}\([_@].*\)\?\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/[^/_]\+_\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/[^/_]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
s:^[^%].*::
s:%lang(C) ::
/^$/d'
...
It seems that it only captures the Alpha-2 code, and misses the Alpha-3 code.


Note You need to log in before you can comment on or make changes to this bug.