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

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


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 вместо одной!


-- 
ldv


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