<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>43041</bug_id>
          
          <creation_ts>2022-06-22 14:24:57 +0300</creation_ts>
          <short_desc>find-lang и языко-зависимая установка</short_desc>
          <delta_ts>2022-06-22 14:24:57 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>rpm-build</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stanislav Levin">slev</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>211971</commentid>
    <comment_count>0</comment_count>
    <who name="Stanislav Levin">slev</who>
    <bug_when>2022-06-22 14:24:57 +0300</bug_when>
    <thetext>Собираю Docker образ из library/alt:sisyphus.

Для значительного уменьшения размера этого образа ограничиваю список устанавливаемых i18n, например, fr_FR:

[root@cf2717cdcd7d /]# cat /etc/rpm/macros
%_install_langs fr_FR:
%_rpmscript_werror 1

Директория при этом /usr/share/locale/en_GB отсутствует:

[root@36121e2f67cd /]# ls -la /usr/share/locale/en_GB
ls: cannot access &apos;/usr/share/locale/en_GB&apos;: No such file or directory

Безуспешно пытаюсь установить glibc-locales:

[root@cf2717cdcd7d /]# rpm -ivvv  ~/glibc-locales_6%3a2.35.0.6.491f2e-alt1%3asisyphus+295115.100.1.1\@1644420165_x86%5f64.rpm
...
D: skipnstate 040755  1 (   0,   0)     0 /usr/share/locale/en_GB
D: skipnstate 040755  1 (   0,   0)     0 /usr/share/locale/en_GB/LC_MESSAGES
D: create     100644  1 (   0,   0)  1433 /usr/share/locale/en_GB/LC_MESSAGES/libc.mo;62b2f492
fdio:   20740 reads, 166612160 total bytes in 1.618491 secs
error: unpacking of archive failed on file /usr/share/locale/en_GB/LC_MESSAGES/libc.mo;62b2f492: cpio: open
ufdio:       6 reads,   793160 total bytes in 0.000589 secs
error: glibc-locales-6:2.35.0.6.491f2e-alt1.x86_64: install failed

Убеждаемся, что /usr/share/locale/en_GB/LC_MESSAGES/libc.mo языко-независимый файл и соответственно будет установлен независимо от заданного %_install_langs:
 
[root@cf2717cdcd7d /]# rpm -q --qf=&apos;[%{FILENAMES}:%{FILELANGS}\n]&apos; -p  ~/glibc-locales_6%3a2.35.0.6.491f2e-alt1%3asisyphus+295115.100.1.1\@1644420165_x86%5f64.rpm | awk -F&quot;:&quot; &apos;{if (length($2) &lt;= 0 &amp;&amp; substr($1, length($1) - 2) == &quot;.mo&quot;) print $1}&apos;
/usr/share/locale/en_GB/LC_MESSAGES/libc.mo


Данный список генерируется %find_lang во время сборки пакета:
[builder@localhost glibc-2.35.0.6.491f2e-alt1]$ cat libc.lang
%defattr(644,root,root,755)
%lang(zh) /usr/share/locale/zh_CN/LC_MESSAGES/libc.mo
...
%lang(eo) /usr/share/locale/eo/LC_MESSAGES/libc.mo
/usr/share/locale/en_GB/LC_MESSAGES/libc.mo


lang(en) выседичивается find-lang&apos;ом:

https://git.altlinux.org/gears/r/rpm-build.git?p=rpm-build.git;a=blob;f=scripts/find-lang.in;h=2699a1817ac03d1f850fb78dc7afa9af49b2eb24;hb=HEAD#l191

с очень давних пор:
https://git.altlinux.org/gears/r/rpm-build.git?p=rpm-build.git;a=commit;h=b0a478061a959c977d3cc87062363e5b14d9e0b4

Наверное, en_* i18n должна быть доступна всегда?

Если это так, то и весь путь к устанавливаемой en_* i18n должен маркироваться как языко-независимый, в противном случае, приходится создавать все требуемые директории вручную в зависимости от устанавливаемого приложения.

Пример некорректной(?) генерации для glibc-locales:
%lang(en_GB) %dir /usr/share/locale/en_GB
%lang(en_GB) %dir /usr/share/locale/en_GB/LC_MESSAGES
%lang(en_GB) %dir /usr/share/locale/en_GB/LC_TIME</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>