Bug 1894854
| Summary: | find-lang.sh doesn't find locales or generate wrong when qm file has 3 characters | |||
|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | sixg0000d <sixg0000d> | |
| Component: | rpm | Assignee: | Packaging Maintenance Team <packaging-team-maint> | |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | |
| Severity: | medium | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 33 | CC: | igor.raits, mjw, packaging-team-maint, pmatilai, pmoravco, vmukhame | |
| Target Milestone: | --- | |||
| Target Release: | --- | |||
| Hardware: | All | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | Doc Type: | --- | ||
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 2144005 (view as bug list) | Environment: | ||
| Last Closed: | 2021-05-16 12:03:55 UTC | 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: | 2144005 | |||
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.