[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