[devel] Как собирать для python3?

Vitaly Kuznetsov vitty на altlinux.ru
Чт Мар 22 11:29:21 MSK 2012


On Thu, 22 Mar 2012 10:39:07 +0400, Sergei Epiphanov wrote:
> Добрый день!
>
> On 22 марта 2012 09:51 Vitaly Kuznetsov wrote:
>> Я хочу добавить новый механизм вида %add_python3_path для указания
>> того, что в конкретном каталоге .py файлы следует рассматривать как
>> python3 со всеми вытекающими (компиляция, поиск requires и provides)
>> последствиями.
>
> То есть пока со сборкой blender подождать до выхода этой 
> функциональности?

Я постараюсь собрать rpm-build-python/rpm-build-python3 сегодня.

>> При этом на выходе мы получим следующие python3-зависимости:
>>
>> $ rpm -qp --requires 
>> ~/RPM/RPMS/x86_64/blender-2.62-alt0.2.x86_64.rpm |
>> grep python3.2\(.*\)
>
> Тогда уж необходимо, чтобы они (зависимости самого blender) были как
> Provides, а не Requires. А то такой пакет не встанет никуда, так как 
> он требует самого
> себя, но не знает об этом. :)

blender таскает модули по нестандартному пути (кстати, зачем?). Для 
того, чтобы воспринимать их как модули нужно добавить в spec следующее:
%add_python3_lib_path /usr/lib/blender/scripts/modules
(следите за отсутствием trailing slash, с ним работать не будет)

Мы получим вот что:

$ rpm -qp --provides ~/RPM/RPMS/x86_64/blender-2.62-alt0.2.x86_64.rpm
python3.2(addon_utils)
python3.2(animsys_refactor)
python3.2(blend_render_info)
python3.2(bpy)
python3.2(bpy.ops)
python3.2(bpy.path)
python3.2(bpy.utils)
python3.2(bpy_extras)
python3.2(bpy_extras.anim_utils)
python3.2(bpy_extras.image_utils)
python3.2(bpy_extras.io_utils)
python3.2(bpy_extras.keyconfig_utils)
python3.2(bpy_extras.mesh_utils)
python3.2(bpy_extras.object_utils)
python3.2(bpy_extras.view3d_utils)
python3.2(bpy_types)
python3.2(bpyml)
python3.2(bpyml_ui)
python3.2(console)
python3.2(console.complete_calltip)
python3.2(console.complete_import)
python3.2(console.complete_namespace)
python3.2(console.intellisense)
python3.2(console_python)
python3.2(console_shell)
python3.2(graphviz_export)
python3.2(keyingsets_utils)
python3.2(rna_info)
python3.2(rna_prop_ui)
python3.2(rna_xml)
python3.2(sys_info)
blender = 2.62-alt0.2

Но, видимо, этого будет недостаточно, всё равно останутся странные 
зависимости вида python3.2(_bpy)
С ними легко побороться с помощью
%add_python3_req_skip _bpy

либо нужно разобрать откуда она таки импортирует эти недостающие модули 
и включить эти пути с помощью %add_python3_lib_path. Но это имеет смысл 
только в том случае, если эту зависимость надо экспортировать в пакете 
(и, соответственно, использовать в каких-то других пакетах).



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