[devel] Q: duplicate qml() self-provides

Dmitry V. Levin ldv на altlinux.org
Чт Ноя 12 17:59:31 MSK 2020


On Thu, Nov 12, 2020 at 05:52:52PM +0300, Dmitry V. Levin wrote:
> On Thu, Nov 12, 2020 at 05:26:31PM +0300, Sergey V Turchin wrote:
> > On Thursday, 12 November 2020 16:00:06 MSK Dmitry V wrote:
> > > On Thu, Nov 12, 2020 at 02:01:40PM +0200, Igor Vlasenko wrote:
> > > > On Wed, Nov 11, 2020 at 07:34:26PM +0300, Dmitry V. Levin wrote:
> > > > > Hi,
> > > > > 
> > > > > У нас в репозитории обнаружилось 76 пакетов, которые содержат сразу две
> > > > > разных версии одного и того же osgi(...) в Provides.
> > > > > Предполагаю, что во всех случаях это ошибки, поскольку сравнения версий
> > > > > в
> > > > > rpm работают не так, как ожидают люди, когда у пакета больше одной
> > > > > версии.
> > > > 
> > > > Все это нужно для работы механизма зависимостей osgi.
> > > > Там всегда явное указание версий в requires и диапазоны в provides.
> > > > Та же ситуация, что с mono и qml.
> > > 
> > > Получается, что произошло массовая подмена понятия версионирования
> > > интерфейсов.
> > Не совсем так.
> > https://doc.qt.io/qt-5/qtqml-modules-qmldir.html#versioning-semantics
> 
> Там фактически написано, что different major versions - это разные
> интерфейсы, которые, в свою очередь, версионированы с помощью minor
> versions.
> 
> > > У интерфейса не может быть одновременно несколько разных версий
> > В QML может.
> 
> Там по сути тоже произошла подмена понятий, в результате чего стало
> невозможным написать адекватные зависимости.
> 
> Вместо того, чтобы написать, например,
> Provides: qml(QtMultimedia)-5 = 15
> Requires: qml(QtMultimedia)-5 >= 7
> 
> Тебе приходится извращаться следующим образом:
> $ rpmquery --provides -p Sisyphus/files/x86_64/RPMS/libqt5-multimedia-5.15.1-alt1.x86_64.rpm |\
>   grep '^qml(QtMultimedia)'          
> qml(QtMultimedia) = 5.0
> qml(QtMultimedia) = 5.1
> qml(QtMultimedia) = 5.10
> qml(QtMultimedia) = 5.11
> qml(QtMultimedia) = 5.12
> qml(QtMultimedia) = 5.13
> qml(QtMultimedia) = 5.14
> qml(QtMultimedia) = 5.15
> qml(QtMultimedia) = 5.2
> qml(QtMultimedia) = 5.3
> qml(QtMultimedia) = 5.4
> qml(QtMultimedia) = 5.5
> qml(QtMultimedia) = 5.6
> qml(QtMultimedia) = 5.7
> qml(QtMultimedia) = 5.8
> qml(QtMultimedia) = 5.9
> 
> Только для того, чтобы была возможность написать
> Requires: qml(QtMultimedia) = 5.7
> 
> Подумать только, 16 Provides вместо одной!

Кстати, у тебя где-нибудь есть версионированные qml Requires?
Я не нашёл.  Всё, что я вижу, выглядит примерно так:

$ rpmquery --provides -p Sisyphus/files/x86_64/RPMS/{qt5-quickcontrols-5.15.1-alt1.x86_64.rpm,qt5-quickcontrols2-5.15.1-alt1.x86_64.rpm} |\
  grep '^qml(QtQuick.Controls)'
qml(QtQuick.Controls) = 1.0
qml(QtQuick.Controls) = 1.1
qml(QtQuick.Controls) = 1.2
qml(QtQuick.Controls) = 1.3
qml(QtQuick.Controls) = 1.4
qml(QtQuick.Controls) = 1.5
qml(QtQuick.Controls) = 1.6
qml(QtQuick.Controls) = 2.0
qml(QtQuick.Controls) = 2.1
qml(QtQuick.Controls) = 2.10
qml(QtQuick.Controls) = 2.11
qml(QtQuick.Controls) = 2.12
qml(QtQuick.Controls) = 2.13
qml(QtQuick.Controls) = 2.14
qml(QtQuick.Controls) = 2.15
qml(QtQuick.Controls) = 2.2
qml(QtQuick.Controls) = 2.3
qml(QtQuick.Controls) = 2.4
qml(QtQuick.Controls) = 2.5
qml(QtQuick.Controls) = 2.6
qml(QtQuick.Controls) = 2.7
qml(QtQuick.Controls) = 2.8
qml(QtQuick.Controls) = 2.9

$ rpmquery -Rp Sisyphus/files/x86_64/RPMS/plasma5-kwin-5.20.2-alt1.x86_64.rpm |\
  grep '^qml(QtQuick.Controls)'
qml(QtQuick.Controls)  


-- 
ldv


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