[devel] U: Безусловный LC_ALL=C в /usr/lib/rpm/functions

Aleksey Avdeev solo на solin.spb.ru
Вт Фев 19 23:46:33 MSK 2013


19.02.2013 23:25, Dmitry V. Levin пишет:
> On Tue, Feb 19, 2013 at 06:02:00PM +0400, Aleksey Avdeev wrote:
>> 19.02.2013 15:04, Aleksey Avdeev пишет:
>>> 18.01.2013 15:41, REAL пишет:
>>>> привет!
>>>>
>>>> кто-нибудь может подсказать, что изменилось и как теперь с этим жить?
>>>
>>>   См.
>>> <http://git.altlinux.org/people/ldv/packages/?p=rpm.git;a=commitdiff;h=279f487ca4461fc3cc29bc7eb9ea05a45abba4c1>.
> 
> Я же ясно там написал: "A lot of code relies on C collation, C messages
> and so on.  Do not pretend it is expected to work with a non-C locale."
> Скажите, пожалуйста, какая часть этого комментария недостаточно понятна?

  Этот комментарий понятен. Но не UTF8 локаль _гарантировано_ ломает
байткомпиляцию pycairo (с чего всё и началось):

Bytecompiling python3 modules in
/usr/src/tmp/python3-module-pycairo-buildroot using /usr/bin/python3
Traceback (most recent call last):
  File "/usr/lib/rpm/python3.compileall.py", line 131, in <module>
    exit_status = bool(main())
  File "/usr/lib/rpm/python3.compileall.py", line 128, in main
    return compile_path(**dopt)
  File "/usr/lib/rpm/python3.compileall.py", line 93, in compile_path
    compile_all(join_prefix(prefix,item),[join_prefix(prefix,x) for x in
exclude],deep,skip_x,clean,prefix)
  File "/usr/lib/rpm/python3.compileall.py", line 81, in compile_all
    compile_all(p,exclude,deep-1,skip_x,clean,prefix)
  File "/usr/lib/rpm/python3.compileall.py", line 81, in compile_all
    compile_all(p,exclude,deep-1,skip_x,clean,prefix)
  File "/usr/lib/rpm/python3.compileall.py", line 84, in compile_all
    if not (skip_x and executable(p)) :
  File "/usr/lib/rpm/python3.compileall.py", line 60, in executable
    line = open(file).readline()
  File "/usr/lib64/python3.2/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 14:
ordinal not in range(128)

  Как быть с этим?

  Т. е. на данный момент ситуация выглядит так:

1. Локаль отличная от C зло, т. к. может взорвать некоторые скрипты.

2. У нас есть миниум 1 модуль, сборка которого взрывается, если локаль C
прибить гвоздями.

> 
>>>   У нас сейчас в /usr/lib/rpm/functions выставляется безусловный
>>> LC_ALL=C. Т. е. выставленное в спеке LC_ALL=en_US.UTF-8 не добирается до
>>> потребителя (/usr/bin/python3) вызываемого в скрипте
>>> /usr/lib/rpm/brp.d/096-bytecompile_python3.brp, т. к. перекрывается аж в
>>> двух вызовах /usr/lib/rpm/functions (в /usr/lib/rpm/brp-alt и самом
>>> /usr/lib/rpm/brp.d/096-bytecompile_python3.brp).
>>>
>>>   Похоже, нужна ручка для запрета перекрыия правильного LC_ALL в
>>> /usr/lib/rpm/functions.
>>
>>   И такая ручка у нас есть (цитирую
>> /usr/share/doc/rpm-4.0.4/README.ALT-ru_RU.UTF-8):
>>
>> Управление процессом сборки.
>> ...
>>    %_build_lang:
>>           значение переменных LANG, LANGUAGE и LC_ALL;
> 
> Надо убрать этот %_build_lang подальше, его включение ломает скрипты,
> совсем недавно кто-то на это опять наступил.

  А я сейчас (как и real@ ранее) -- наступил на слом сборки, если локаль
не UTF8... И как быть?

-- 

С уважением. Алексей.


----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 897 байтов
Описание: OpenPGP digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20130219/8689ef2d/attachment-0001.bin>


Подробная информация о списке рассылки Devel