[devel] python and typelib

Alexey Shabalin a.shabalin на gmail.com
Ср Дек 4 21:22:56 MSK 2019


пн, 2 дек. 2019 г. в 23:10, Stanislav Levin <slev на basealt.ru>:
>
>
>
> 02.12.2019 22:27, Alexey Shabalin пишет:
> >
> > Не совсем понял, к чему Вы тут придираетесь?
> > "Libosinfo" из "gi.repository" по сути и есть typelib(Libosinfo),
> > потому что только пакет
> > libosinfo-gir провайдит typelib(Libosinfo). Поэтому надо выставить
> > зависимость на typelib(Libosinfo), что специально умеет делать
> > rpm-build-gir.
> > Да, есть более тяжёлые случаи, когда провайдят разные версии разные
> > пакеты(например gtk2 и gtk3).
>
> Да какие придирки? :-) Я вообще не знаю, что такое rpm-build-gir и с чем
> его едят.
>
> Только лишь обратил внимание не логичную (по-моему) вещь, а именно:
>
> клиент (например, virt-manager), использующий gi.repository не должен
> ничего знать про то, как устроен импортируемый объект (Libosinfo) и уж
> тем более требовать за
> него что-то для себя. Поэтому, по-моему, именно gi.repository
> (python3-module-pygobject3) должен зависеть от libosinfo-gir, а не
> virt-manager и подобные клиенты.
>

В случае с gi.repository ваша логика абсолютно неверна :)
gi.repository - это не простой модуль python, а прокладка между python
и бинарными библиотеками специального типа typelib. Это такой спец тип
библиотек, которые удобно и просто использовать в разных языках,
например python, javascript(можно посмотреть на gnome-shell), кажется
vala(могу ошибаться), возможно где-то еще(вроде dmd на их основе
делает свои биндинги).
Разные проекты, в основном использующие glib2, gtk, предоставляют эти
бинарные библиотеки typelib. У нас они отделены в отдельные пакеты
*-gir. Каждый такой пакет содержит Provides: typelib(foo).
gi.repository ничего не знает о сторонних проектах. Он просто
позволяет подгружать эти библиотеки.
Поэтому он не может вытягивать все возможные пакеты с typelib.
В выше описанном примере, virt-manager сам должен позаботиться о
вытягивании пакета libosinfo-gir.

> В любом случае спасибо за предоставленную информацию!
Пожалуйста.

-- 
Alexey Shabalin


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