* [devel] Q: duplicate osgi() self-provides
@ 2020-11-11 16:34 Dmitry V. Levin
2020-11-12 12:01 ` Igor Vlasenko
0 siblings, 1 reply; 23+ messages in thread
From: Dmitry V. Levin @ 2020-11-11 16:34 UTC (permalink / raw)
To: ALT Devel discussion list
Hi,
У нас в репозитории обнаружилось 76 пакетов, которые содержат сразу две
разных версии одного и того же osgi(...) в Provides.
Предполагаю, что во всех случаях это ошибки, поскольку сравнения версий в
rpm работают не так, как ожидают люди, когда у пакета больше одной версии.
Кто-нибудь знает, зачем это было сделано?
$ pkglist-query '[%{PROVIDENAME} %{NAME} %{PROVIDEFLAGS:depflags}%{PROVIDEVERSION}\n]' \
Sisyphus/{x86_64,noarch}/base.bloat/pkglist.classic |\
sed -rn -e 's/ \+$//' -e 's/^(osgi\([^ ]+) ([^ ]+) ([^ ]+)$/\3 \2 \1/p' |\
sort -k2 |\
uniq -D -f1 |\
sed -rn -e 's/^([^ ]+) ([^ ]+) ([^ ]+)$/\2 \3 \1/p' |\
sort -k2,2 |\
column -t -N 'Package:,Provide Name:,Provide Version:'
Package: Provide Name: Provide Version:
guava osgi(com.google.guava) =25.0.0
guava osgi(com.google.guava) =25.0.0.jre
google-guice osgi(com.google.inject) =1.4
google-guice osgi(com.google.inject) =4.2.2
guice-assistedinject osgi(com.google.inject.assistedinject) =1.4
guice-assistedinject osgi(com.google.inject.assistedinject) =4.2.2
guice-grapher osgi(com.google.inject.grapher) =1.4
guice-grapher osgi(com.google.inject.grapher) =4.2.2
guice-jndi osgi(com.google.inject.jndi) =1.4
guice-jndi osgi(com.google.inject.jndi) =4.2.2
guice-servlet osgi(com.google.inject.servlet) =1.4
guice-servlet osgi(com.google.inject.servlet) =4.2.2
guice-throwingproviders osgi(com.google.inject.throwingproviders) =1.4
guice-throwingproviders osgi(com.google.inject.throwingproviders) =4.2.2
guice-jmx osgi(com.google.inject.tools.jmx) =1.4
guice-jmx osgi(com.google.inject.tools.jmx) =4.2.2
atinject osgi(javax.inject) =1.0.0
atinject osgi(javax.inject) =1.0.0.v20091030
javamail osgi(javax.mail) =1.5
javamail osgi(javax.mail) =1.5.2
lpg-java-compat osgi(net.sourceforge.lpg.lpgjavaruntime) =1.1.0
lpg-java-compat osgi(net.sourceforge.lpg.lpgjavaruntime) =1.1.0.v200803061910
fop osgi(org.apache.batik.pdf) =1.6.0
fop osgi(org.apache.batik.pdf) =1.6.0.v200806031500
apache-commons-codec osgi(org.apache.commons.codec) =1.11
apache-commons-codec osgi(org.apache.commons.codec) =1.11.0
ganttproject osgi(org.apache.commons.codec) =1.4
ganttproject osgi(org.apache.commons.codec) =1.5
apache-commons-el osgi(org.apache.commons.el) =1.0.0
apache-commons-el osgi(org.apache.commons.el) =1.0.0.v200806031608
apache-commons-lang osgi(org.apache.commons.lang) =2.6
apache-commons-lang osgi(org.apache.commons.lang) =2.6.0
apache-commons-logging osgi(org.apache.commons.logging) =1.2
apache-commons-logging osgi(org.apache.commons.logging) =1.2.0
apache-commons-net osgi(org.apache.commons.net) =3.6
apache-commons-net osgi(org.apache.commons.net) =3.6.0
xalan-j2 osgi(org.apache.xml.serializer) =2.7.1
xalan-j2 osgi(org.apache.xml.serializer) =2.7.1.v200806030322
eclipse-jdt osgi(org.eclipse.jdt.annotation) =1.1.100.v20160511.1000
eclipse-jdt osgi(org.eclipse.jdt.annotation) =2.1.0.v20160511.1000
jetty-alpn-client osgi(org.eclipse.jetty.alpn.client) =9.4.19
jetty-alpn-client osgi(org.eclipse.jetty.alpn.client) =9.4.19.v20190610
jetty-alpn-client osgi(org.eclipse.jetty.alpn.openjdk8.client) =9.4.19
jetty-alpn-client osgi(org.eclipse.jetty.alpn.openjdk8.client) =9.4.19.v20190610
jetty-alpn-server osgi(org.eclipse.jetty.alpn.openjdk8.server) =9.4.19
jetty-alpn-server osgi(org.eclipse.jetty.alpn.openjdk8.server) =9.4.19.v20190610
jetty-alpn-server osgi(org.eclipse.jetty.alpn.server) =9.4.19
jetty-alpn-server osgi(org.eclipse.jetty.alpn.server) =9.4.19.v20190610
jetty-annotations osgi(org.eclipse.jetty.annotations) =9.4.19
jetty-annotations osgi(org.eclipse.jetty.annotations) =9.4.19.v20190610
jetty-ant osgi(org.eclipse.jetty.ant) =9.4.19
jetty-ant osgi(org.eclipse.jetty.ant) =9.4.19.v20190610
jetty-jstl osgi(org.eclipse.jetty.apache.jstl) =9.4.19
jetty-jstl osgi(org.eclipse.jetty.apache.jstl) =9.4.19.v20190610
jetty-cdi osgi(org.eclipse.jetty.cdi.cdi2) =9.4.19
jetty-cdi osgi(org.eclipse.jetty.cdi.cdi2) =9.4.19.v20190610
jetty-cdi osgi(org.eclipse.jetty.cdi.core) =9.4.19
jetty-cdi osgi(org.eclipse.jetty.cdi.core) =9.4.19.v20190610
jetty-cdi osgi(org.eclipse.jetty.cdi.servlet) =9.4.19
jetty-cdi osgi(org.eclipse.jetty.cdi.servlet) =9.4.19.v20190610
jetty-cdi osgi(org.eclipse.jetty.cdi.websocket) =9.4.19
jetty-cdi osgi(org.eclipse.jetty.cdi.websocket) =9.4.19.v20190610
jetty-client osgi(org.eclipse.jetty.client) =9.4.19
jetty-client osgi(org.eclipse.jetty.client) =9.4.19.v20190610
jetty-continuation osgi(org.eclipse.jetty.continuation) =9.4.19
jetty-continuation osgi(org.eclipse.jetty.continuation) =9.4.19.v20190610
jetty-deploy osgi(org.eclipse.jetty.deploy) =9.4.19
jetty-deploy osgi(org.eclipse.jetty.deploy) =9.4.19.v20190610
jetty-fcgi-client osgi(org.eclipse.jetty.fcgi.client) =9.4.19
jetty-fcgi-client osgi(org.eclipse.jetty.fcgi.client) =9.4.19.v20190610
jetty-fcgi-server osgi(org.eclipse.jetty.fcgi.server) =9.4.19
jetty-fcgi-server osgi(org.eclipse.jetty.fcgi.server) =9.4.19.v20190610
jetty-http osgi(org.eclipse.jetty.http) =9.4.19
jetty-http osgi(org.eclipse.jetty.http) =9.4.19.v20190610
jetty-http-spi osgi(org.eclipse.jetty.http.spi) =9.4.19
jetty-http-spi osgi(org.eclipse.jetty.http.spi) =9.4.19.v20190610
jetty-http2-client osgi(org.eclipse.jetty.http2.client) =9.4.19
jetty-http2-client osgi(org.eclipse.jetty.http2.client) =9.4.19.v20190610
jetty-http2-http-client-transport osgi(org.eclipse.jetty.http2.client.http) =9.4.19
jetty-http2-http-client-transport osgi(org.eclipse.jetty.http2.client.http) =9.4.19.v20190610
jetty-http2-common osgi(org.eclipse.jetty.http2.common) =9.4.19
jetty-http2-common osgi(org.eclipse.jetty.http2.common) =9.4.19.v20190610
jetty-http2-hpack osgi(org.eclipse.jetty.http2.hpack) =9.4.19
jetty-http2-hpack osgi(org.eclipse.jetty.http2.hpack) =9.4.19.v20190610
jetty-http2-server osgi(org.eclipse.jetty.http2.server) =9.4.19
jetty-http2-server osgi(org.eclipse.jetty.http2.server) =9.4.19.v20190610
jetty-io osgi(org.eclipse.jetty.io) =9.4.19
jetty-io osgi(org.eclipse.jetty.io) =9.4.19.v20190610
jetty-jaas osgi(org.eclipse.jetty.jaas) =9.4.19
jetty-jaas osgi(org.eclipse.jetty.jaas) =9.4.19.v20190610
jetty-jmx osgi(org.eclipse.jetty.jmx) =9.4.19
jetty-jmx osgi(org.eclipse.jetty.jmx) =9.4.19.v20190610
jetty-jndi osgi(org.eclipse.jetty.jndi) =9.4.19
jetty-jndi osgi(org.eclipse.jetty.jndi) =9.4.19.v20190610
jetty-jspc-maven-plugin osgi(org.eclipse.jetty.jspc.plugin) =9.4.19
jetty-jspc-maven-plugin osgi(org.eclipse.jetty.jspc.plugin) =9.4.19.v20190610
jetty-maven-plugin osgi(org.eclipse.jetty.maven.plugin) =9.4.19
jetty-maven-plugin osgi(org.eclipse.jetty.maven.plugin) =9.4.19.v20190610
jetty-nosql osgi(org.eclipse.jetty.nosql) =9.4.19
jetty-nosql osgi(org.eclipse.jetty.nosql) =9.4.19.v20190610
jetty-plus osgi(org.eclipse.jetty.plus) =9.4.19
jetty-plus osgi(org.eclipse.jetty.plus) =9.4.19.v20190610
jetty-proxy osgi(org.eclipse.jetty.proxy) =9.4.19
jetty-proxy osgi(org.eclipse.jetty.proxy) =9.4.19.v20190610
jetty-quickstart osgi(org.eclipse.jetty.quickstart) =9.4.19
jetty-quickstart osgi(org.eclipse.jetty.quickstart) =9.4.19.v20190610
jetty-rewrite osgi(org.eclipse.jetty.rewrite) =9.4.19
jetty-rewrite osgi(org.eclipse.jetty.rewrite) =9.4.19.v20190610
jetty-security osgi(org.eclipse.jetty.security) =9.4.19
jetty-security osgi(org.eclipse.jetty.security) =9.4.19.v20190610
jetty-jaspi osgi(org.eclipse.jetty.security.jaspi) =9.4.19
jetty-jaspi osgi(org.eclipse.jetty.security.jaspi) =9.4.19.v20190610
jetty-server osgi(org.eclipse.jetty.server) =9.4.19
jetty-server osgi(org.eclipse.jetty.server) =9.4.19.v20190610
jetty-servlet osgi(org.eclipse.jetty.servlet) =9.4.19
jetty-servlet osgi(org.eclipse.jetty.servlet) =9.4.19.v20190610
jetty-servlets osgi(org.eclipse.jetty.servlets) =9.4.19
jetty-servlets osgi(org.eclipse.jetty.servlets) =9.4.19.v20190610
jetty-spring osgi(org.eclipse.jetty.spring) =9.4.19
jetty-spring osgi(org.eclipse.jetty.spring) =9.4.19.v20190610
jetty osgi(org.eclipse.jetty.start) =9.4.19
jetty osgi(org.eclipse.jetty.start) =9.4.19.v20190610
jetty-start osgi(org.eclipse.jetty.start) =9.4.19
jetty-start osgi(org.eclipse.jetty.start) =9.4.19.v20190610
jetty-unixsocket osgi(org.eclipse.jetty.unixsocket) =9.4.19
jetty-unixsocket osgi(org.eclipse.jetty.unixsocket) =9.4.19.v20190610
jetty-util osgi(org.eclipse.jetty.util) =9.4.19
jetty-util osgi(org.eclipse.jetty.util) =9.4.19.v20190610
jetty-util-ajax osgi(org.eclipse.jetty.util.ajax) =9.4.19
jetty-util-ajax osgi(org.eclipse.jetty.util.ajax) =9.4.19.v20190610
jetty-webapp osgi(org.eclipse.jetty.webapp) =9.4.19
jetty-webapp osgi(org.eclipse.jetty.webapp) =9.4.19.v20190610
jetty-websocket-api osgi(org.eclipse.jetty.websocket.api) =9.4.19
jetty-websocket-api osgi(org.eclipse.jetty.websocket.api) =9.4.19.v20190610
jetty-websocket-client osgi(org.eclipse.jetty.websocket.client) =9.4.19
jetty-websocket-client osgi(org.eclipse.jetty.websocket.client) =9.4.19.v20190610
jetty-websocket-common osgi(org.eclipse.jetty.websocket.common) =9.4.19
jetty-websocket-common osgi(org.eclipse.jetty.websocket.common) =9.4.19.v20190610
jetty-javax-websocket-client-impl osgi(org.eclipse.jetty.websocket.javax.websocket) =9.4.19
jetty-javax-websocket-client-impl osgi(org.eclipse.jetty.websocket.javax.websocket) =9.4.19.v20190610
jetty-javax-websocket-server-impl osgi(org.eclipse.jetty.websocket.javax.websocket.server) =9.4.19
jetty-javax-websocket-server-impl osgi(org.eclipse.jetty.websocket.javax.websocket.server) =9.4.19.v20190610
jetty-websocket-server osgi(org.eclipse.jetty.websocket.server) =9.4.19
jetty-websocket-server osgi(org.eclipse.jetty.websocket.server) =9.4.19.v20190610
jetty-websocket-servlet osgi(org.eclipse.jetty.websocket.servlet) =9.4.19
jetty-websocket-servlet osgi(org.eclipse.jetty.websocket.servlet) =9.4.19.v20190610
jetty-xml osgi(org.eclipse.jetty.xml) =9.4.19
jetty-xml osgi(org.eclipse.jetty.xml) =9.4.19.v20190610
eclipselink osgi(org.eclipse.persistence.core) =2.6.3
eclipselink osgi(org.eclipse.persistence.core) =2.6.3.v20160428-59c81c5
eclipselink osgi(org.eclipse.persistence.dbws) =2.6.3
eclipselink osgi(org.eclipse.persistence.dbws) =2.6.3.v20160428-59c81c5
eclipselink osgi(org.eclipse.persistence.extension) =2.6.3
eclipselink osgi(org.eclipse.persistence.extension) =2.6.3.v20160428-59c81c5
eclipselink osgi(org.eclipse.persistence.jpa) =2.6.3
eclipselink osgi(org.eclipse.persistence.jpa) =2.6.3.v20160428-59c81c5
eclipselink osgi(org.eclipse.persistence.jpa.jpql) =2.6.3
eclipselink osgi(org.eclipse.persistence.jpa.jpql) =2.6.3.v20160428-59c81c5
eclipselink osgi(org.eclipse.persistence.jpa.modelgen) =2.6.3
eclipselink osgi(org.eclipse.persistence.jpa.modelgen) =2.6.3.v20160428-59c81c5
eclipselink osgi(org.eclipse.persistence.moxy) =2.6.3
eclipselink osgi(org.eclipse.persistence.moxy) =2.6.3.v20160428-59c81c5
eclipselink osgi(org.eclipse.persistence.sdo) =2.6.3
eclipselink osgi(org.eclipse.persistence.sdo) =2.6.3.v20160428-59c81c5
glassfish-jsp osgi(org.glassfish.web.javax.servlet.jsp) =2.3.3
glassfish-jsp osgi(org.glassfish.web.javax.servlet.jsp) =2.3.3.b02
hamcrest-core osgi(org.hamcrest.core) =1.3.0
hamcrest-core osgi(org.hamcrest.core) =1.3.0.v201303031735
hamcrest osgi(org.hamcrest.generator) =1.3.0
hamcrest osgi(org.hamcrest.generator) =1.3.0.v20090501071000
hamcrest osgi(org.hamcrest.integration) =1.3.0
hamcrest osgi(org.hamcrest.integration) =1.3.0.v20090501071000
hamcrest osgi(org.hamcrest.library) =1.3.0
hamcrest osgi(org.hamcrest.library) =1.3.0.v20090501071000
hibernate-jpa-2.0-api osgi(org.hibernate.javax.persistence) =1.0.1
hibernate-jpa-2.0-api osgi(org.hibernate.javax.persistence) =1.0.1.Final
sat4j osgi(org.sat4j.core) =2.3.5
sat4j osgi(org.sat4j.core) =2.3.5.v20130405
sat4j osgi(org.sat4j.pb) =2.3.5
sat4j osgi(org.sat4j.pb) =2.3.5.v20130405
sac osgi(org.w3c.css.sac) =1.3.0
sac osgi(org.w3c.css.sac) =1.3.0.v200805290154
--
ldv
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate osgi() self-provides
2020-11-11 16:34 [devel] Q: duplicate osgi() self-provides Dmitry V. Levin
@ 2020-11-12 12:01 ` Igor Vlasenko
2020-11-12 13:00 ` Dmitry V. Levin
0 siblings, 1 reply; 23+ messages in thread
From: Igor Vlasenko @ 2020-11-12 12:01 UTC (permalink / raw)
To: ALT Linux Team development discussions; +Cc: ldv
On Wed, Nov 11, 2020 at 07:34:26PM +0300, Dmitry V. Levin wrote:
> Hi,
>
> У нас в репозитории обнаружилось 76 пакетов, которые содержат сразу две
> разных версии одного и того же osgi(...) в Provides.
> Предполагаю, что во всех случаях это ошибки, поскольку сравнения версий в
> rpm работают не так, как ожидают люди, когда у пакета больше одной версии.
Все это нужно для работы механизма зависимостей osgi.
Там всегда явное указание версий в requires и диапазоны в provides.
Та же ситуация, что с mono и qml.
На примере google-guice, его спек файл (MANIFEST.MF)
Manifest-Version: 1.0
Bundle-Description: Guice is a lightweight dependency injection framew
ork for Java 6 and above
Automatic-Module-Name: com.google.guice
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-SymbolicName: com.google.inject
JavaPackages-Version: 4.2.2
Built-By: builder
Bundle-ManifestVersion: 2
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
JavaPackages-ArtifactId: guice
Bundle-Copyright: Copyright (C) 2006 Google Inc.
Bundle-DocURL: https://github.com/google/guice
Bundle-Vendor: Google, Inc.
Import-Package: com.google.common.base;version="[25.0,26)",com.google.
common.cache;version="[25.0,26)",com.google.common.collect;version="[
25.0,26)",com.google.common.primitives;version="[25.0,26)",javax.inje
ct;version="[1.0,2)",net.sf.cglib.core;version="[3.2,4)";resolution:=
optional,net.sf.cglib.proxy;version="[3.2,4)";resolution:=optional,ne
t.sf.cglib.reflect;version="[3.2,4)";resolution:=optional,org.aopalli
ance.intercept,org.objectweb.asm;version="[7.0,8)";resolution:=option
al
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
Eclipse-ExtensibleAPI: true
Export-Package: com.google.inject;version="1.4",com.google.inject.bind
er;version="1.4",com.google.inject.matcher;version="1.4",com.google.i
nject.multibindings;version="1.4",com.google.inject.name;version="1.4
",com.google.inject.spi;version="1.4",com.google.inject.util;version=
"1.4"
Bundle-Name: guice
Bundle-Version: 4.2.2
JavaPackages-GroupId: com.google.inject
Created-By: Apache Maven 3.5.4
Build-Jdk: 1.8.0_212
--
I V
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate osgi() self-provides
2020-11-12 12:01 ` Igor Vlasenko
@ 2020-11-12 13:00 ` Dmitry V. Levin
2020-11-12 14:26 ` Sergey V Turchin
2020-11-12 18:37 ` [devel] Q: duplicate osgi() self-provides Vladimir D. Seleznev
0 siblings, 2 replies; 23+ messages in thread
From: Dmitry V. Levin @ 2020-11-12 13:00 UTC (permalink / raw)
To: ALT Devel discussion list
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.
Получается, что произошло массовая подмена понятия версионирования
интерфейсов. У интерфейса не может быть одновременно несколько разных
версий, это несколько разных интерфейсов. На примере libc,
$ rpmquery --provides glibc-core |grep '^libc[^=]*$'
libc.so.6(ALT_2.24)(64bit)
libc.so.6(GLIBC_2.10)(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.12)(64bit)
libc.so.6(GLIBC_2.13)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.16)(64bit)
libc.so.6(GLIBC_2.17)(64bit)
libc.so.6(GLIBC_2.18)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.2.6)(64bit)
libc.so.6(GLIBC_2.22)(64bit)
libc.so.6(GLIBC_2.23)(64bit)
libc.so.6(GLIBC_2.24)(64bit)
libc.so.6(GLIBC_2.25)(64bit)
libc.so.6(GLIBC_2.26)(64bit)
libc.so.6(GLIBC_2.27)(64bit)
libc.so.6(GLIBC_2.28)(64bit)
libc.so.6(GLIBC_2.29)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.30)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.5)(64bit)
libc.so.6(GLIBC_2.6)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libc.so.6(GLIBC_2.8)(64bit)
libc.so.6(GLIBC_2.9)(64bit)
Это не 31 версия у интерфейса libc.so.6, это 31 интерфейс у libc.so.6.
Теперь надо думать, как это неправильное понимание версионирования
аккуратно исправить.
--
ldv
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate osgi() self-provides
2020-11-12 13:00 ` Dmitry V. Levin
@ 2020-11-12 14:26 ` Sergey V Turchin
2020-11-12 14:52 ` [devel] Q: duplicate qml() self-provides Dmitry V. Levin
2020-11-12 18:37 ` [devel] Q: duplicate osgi() self-provides Vladimir D. Seleznev
1 sibling, 1 reply; 23+ messages in thread
From: Sergey V Turchin @ 2020-11-12 14:26 UTC (permalink / raw)
To: ALT Linux Team development discussions
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
> У интерфейса не может быть одновременно несколько разных версий
В QML может.
> , это несколько разных интерфейсов.
[...]
--
Regards, Sergey.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 14:26 ` Sergey V Turchin
@ 2020-11-12 14:52 ` Dmitry V. Levin
2020-11-12 14:59 ` Dmitry V. Levin
` (4 more replies)
0 siblings, 5 replies; 23+ messages in thread
From: Dmitry V. Levin @ 2020-11-12 14:52 UTC (permalink / raw)
To: ALT Devel discussion list
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
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 14:52 ` [devel] Q: duplicate qml() self-provides Dmitry V. Levin
@ 2020-11-12 14:59 ` Dmitry V. Levin
2020-11-12 15:21 ` Dmitry V. Levin
2020-11-12 15:01 ` Anton Farygin
` (3 subsequent siblings)
4 siblings, 1 reply; 23+ messages in thread
From: Dmitry V. Levin @ 2020-11-12 14:59 UTC (permalink / raw)
To: ALT Devel discussion list
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
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 14:52 ` [devel] Q: duplicate qml() self-provides Dmitry V. Levin
2020-11-12 14:59 ` Dmitry V. Levin
@ 2020-11-12 15:01 ` Anton Farygin
2020-11-12 15:09 ` Dmitry V. Levin
2020-11-12 15:11 ` Aleksei Nikiforov
2020-11-12 15:06 ` Aleksei Nikiforov
` (2 subsequent siblings)
4 siblings, 2 replies; 23+ messages in thread
From: Anton Farygin @ 2020-11-12 15:01 UTC (permalink / raw)
To: devel
On 12.11.2020 17:52, Dmitry V. Levin wrote:
> Вместо того, чтобы написать, например,
> Provides: qml(QtMultimedia)-5 = 15
> Requires: qml(QtMultimedia)-5 >= 7
иногда qml(QtMultimedia)-5 >= 7 может оказаться неправильным для случая,
когда qml(QtMultimedia) из этого пакета перестанет предоставлять по
какой-то причине qml(QtMultimedia) = 5.7
Но сейчас конечно это выглядит более красиво. Ну и наверное можно было
просто сделать
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
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 14:52 ` [devel] Q: duplicate qml() self-provides Dmitry V. Levin
2020-11-12 14:59 ` Dmitry V. Levin
2020-11-12 15:01 ` Anton Farygin
@ 2020-11-12 15:06 ` Aleksei Nikiforov
2020-11-12 15:12 ` Dmitry V. Levin
2020-11-13 8:23 ` [devel] Q: duplicate qml() self-provides Sergey V Turchin
2020-11-12 15:24 ` Alexey Gladkov
2020-11-13 8:20 ` Sergey V Turchin
4 siblings, 2 replies; 23+ messages in thread
From: Aleksei Nikiforov @ 2020-11-12 15:06 UTC (permalink / raw)
To: devel
12.11.2020 17:52, Dmitry V. Levin пишет:
> Вместо того, чтобы написать, например,
> Provides: qml(QtMultimedia)-5 = 15
> Requires: qml(QtMultimedia)-5 >= 7
>
А мне такой вариант нравится, отличное предложение! На мой взгляд,
синтаксис немного хуже, зато использовать может быть удобнее.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:01 ` Anton Farygin
@ 2020-11-12 15:09 ` Dmitry V. Levin
2020-11-12 15:17 ` Anton Farygin
2020-11-12 15:11 ` Aleksei Nikiforov
1 sibling, 1 reply; 23+ messages in thread
From: Dmitry V. Levin @ 2020-11-12 15:09 UTC (permalink / raw)
To: ALT Devel discussion list
On Thu, Nov 12, 2020 at 06:01:58PM +0300, Anton Farygin wrote:
> On 12.11.2020 17:52, Dmitry V. Levin wrote:
> > Вместо того, чтобы написать, например,
> > Provides: qml(QtMultimedia)-5 = 15
> > Requires: qml(QtMultimedia)-5 >= 7
>
> иногда qml(QtMultimedia)-5 >= 7 может оказаться неправильным для случая,
> когда qml(QtMultimedia) из этого пакета перестанет предоставлять по
> какой-то причине qml(QtMultimedia) = 5.7
Согласно вышеупомянутому
https://doc.qt.io/qt-5/qtqml-modules-qmldir.html#versioning-semantics
если модуль QtMultimedia предоставляет версию 5.15, это означает, что
этот модуль обязан обеспечить совместимость со всеми предыдущими версиями
этого модуля ветки 5.x.
> Но сейчас конечно это выглядит более красиво. Ну и наверное можно было
> просто сделать
>
> Provides: qml(QtMultimedia) = 5.15
> Requires: qml(QtMultimedia) >= 5.7
Если так сделать, то
Provides: qml(QtMultimedia) = 6.0
подойдёт для удовлетворения
Requires: qml(QtMultimedia) >= 5.7
а это уже будет неправильно, потому что, согласно тому же документу,
между разными major versions модуля совместимость не предусмотрена.
--
ldv
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:01 ` Anton Farygin
2020-11-12 15:09 ` Dmitry V. Levin
@ 2020-11-12 15:11 ` Aleksei Nikiforov
1 sibling, 0 replies; 23+ messages in thread
From: Aleksei Nikiforov @ 2020-11-12 15:11 UTC (permalink / raw)
To: devel
12.11.2020 18:01, Anton Farygin пишет:
> On 12.11.2020 17:52, Dmitry V. Levin wrote:
>> Вместо того, чтобы написать, например,
>> Provides: qml(QtMultimedia)-5 = 15
>> Requires: qml(QtMultimedia)-5 >= 7
>
> иногда qml(QtMultimedia)-5 >= 7 может оказаться неправильным для случая,
> когда qml(QtMultimedia) из этого пакета перестанет предоставлять по
> какой-то причине qml(QtMultimedia) = 5.7
>
Если пакет перестанет провайдить qml(QtMultimedia) = 5.7, то он
перестанет следовать qml versioning. Это ошибка.
> Но сейчас конечно это выглядит более красиво. Ну и наверное можно было
> просто сделать
>
> Provides: qml(QtMultimedia) = 5.15
> Requires: qml(QtMultimedia) >= 5.7
>
Какой-нибудь пакет вполне может начать провайдить qml(QtMultimedia) =
6.0. С текущим версионированием это не будет ошибкой. И при этом надо
вытягивать именно 5.x в соответствии с текущей схемой версионирования
если есть некий импорт вида 'import QtMultimedia 5.x'. Вытягивать
qml(QtMultimedia) = 6.0 вместо 5.x будет ошибкой когда нужен
qml(QtMultimedia) версии 5.x. Зато можно вытянуть любой
qml(QtMultimedia) = 5.y, если y >= x.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:06 ` Aleksei Nikiforov
@ 2020-11-12 15:12 ` Dmitry V. Levin
2020-12-08 0:54 ` [devel] Versioned interface provides syntax (Was: Q: duplicate qml() self-provides) Vladimir D. Seleznev
2020-11-13 8:23 ` [devel] Q: duplicate qml() self-provides Sergey V Turchin
1 sibling, 1 reply; 23+ messages in thread
From: Dmitry V. Levin @ 2020-11-12 15:12 UTC (permalink / raw)
To: ALT Devel discussion list
On Thu, Nov 12, 2020 at 06:06:19PM +0300, Aleksei Nikiforov wrote:
> 12.11.2020 17:52, Dmitry V. Levin пишет:
> > Вместо того, чтобы написать, например,
> > Provides: qml(QtMultimedia)-5 = 15
> > Requires: qml(QtMultimedia)-5 >= 7
>
> А мне такой вариант нравится, отличное предложение! На мой взгляд,
> синтаксис немного хуже, зато использовать может быть удобнее.
Получается, что тут главное - перенести major version из PROVIDEVERSION
в PROVIDENAME, синтаксис можно попробовать придумать получше.
--
ldv
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:09 ` Dmitry V. Levin
@ 2020-11-12 15:17 ` Anton Farygin
0 siblings, 0 replies; 23+ messages in thread
From: Anton Farygin @ 2020-11-12 15:17 UTC (permalink / raw)
To: devel
On 12.11.2020 18:09, Dmitry V. Levin wrote:
> On Thu, Nov 12, 2020 at 06:01:58PM +0300, Anton Farygin wrote:
>> On 12.11.2020 17:52, Dmitry V. Levin wrote:
>>> Вместо того, чтобы написать, например,
>>> Provides: qml(QtMultimedia)-5 = 15
>>> Requires: qml(QtMultimedia)-5 >= 7
>> иногда qml(QtMultimedia)-5 >= 7 может оказаться неправильным для случая,
>> когда qml(QtMultimedia) из этого пакета перестанет предоставлять по
>> какой-то причине qml(QtMultimedia) = 5.7
> Согласно вышеупомянутому
> https://doc.qt.io/qt-5/qtqml-modules-qmldir.html#versioning-semantics
> если модуль QtMultimedia предоставляет версию 5.15, это означает, что
> этот модуль обязан обеспечить совместимость со всеми предыдущими версиями
> этого модуля ветки 5.x.
>
>> Но сейчас конечно это выглядит более красиво. Ну и наверное можно было
>> просто сделать
>>
>> Provides: qml(QtMultimedia) = 5.15
>> Requires: qml(QtMultimedia) >= 5.7
> Если так сделать, то
> Provides: qml(QtMultimedia) = 6.0
> подойдёт для удовлетворения
> Requires: qml(QtMultimedia) >= 5.7
> а это уже будет неправильно, потому что, согласно тому же документу,
> между разными major versions модуля совместимость не предусмотрена.
>
>
Ясно, спасибо.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 14:59 ` Dmitry V. Levin
@ 2020-11-12 15:21 ` Dmitry V. Levin
2020-11-12 15:28 ` Dmitry V. Levin
2020-11-13 8:18 ` Sergey V Turchin
0 siblings, 2 replies; 23+ messages in thread
From: Dmitry V. Levin @ 2020-11-12 15:21 UTC (permalink / raw)
To: ALT Devel discussion list
On Thu, Nov 12, 2020 at 05:59:31PM +0300, Dmitry V. Levin wrote:
[...]
> Кстати, у тебя где-нибудь есть версионированные qml Requires?
Сейчас в репозитории ровно 3 пакета, у которых есть qml(...) в Requires,
и все эти Requires без версий:
$ rpmquery -Rp plasma5-kwin-5.20.2-alt1.x86_64.rpm \
plasma5-systemsettings-5.20.2-alt1.x86_64.rpm \
plasma5-workspace-qml-5.20.2-alt2.x86_64.rpm \
|grep ^qml
qml(QtMultimedia)
qml(QtQuick.VirtualKeyboard)
qml(QtQuick.Controls)
qml(org.kde.kquickcontrols)
qml(org.kde.plasma.components)
qml(org.kde.plasma.core)
qml(org.kde.kcm)
qml(org.kde.plasma.core)
Это значит, что версионирование qml можно безболезненно поменять.
--
ldv
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 14:52 ` [devel] Q: duplicate qml() self-provides Dmitry V. Levin
` (2 preceding siblings ...)
2020-11-12 15:06 ` Aleksei Nikiforov
@ 2020-11-12 15:24 ` Alexey Gladkov
2020-11-12 15:28 ` Alexey Gladkov
2020-11-13 8:39 ` Sergey V Turchin
2020-11-13 8:20 ` Sergey V Turchin
4 siblings, 2 replies; 23+ messages in thread
From: Alexey Gladkov @ 2020-11-12 15:24 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thu, Nov 12, 2020 at 05:52:52PM +0300, Dmitry V. Levin wrote:
> > В QML может.
>
> Там по сути тоже произошла подмена понятий, в результате чего стало
> невозможным написать адекватные зависимости.
>
> Вместо того, чтобы написать, например,
> Provides: qml(QtMultimedia)-5 = 15
> Requires: qml(QtMultimedia)-5 >= 7
То есть в sisyphus_check можно добавить проверку, что qml
Requires/Provides должны иметь вид: ^qml([^)]+)-[0-9]+ = [0-9]+$
> Тебе приходится извращаться следующим образом:
> $ 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
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:24 ` Alexey Gladkov
@ 2020-11-12 15:28 ` Alexey Gladkov
2020-11-13 8:39 ` Sergey V Turchin
1 sibling, 0 replies; 23+ messages in thread
From: Alexey Gladkov @ 2020-11-12 15:28 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thu, Nov 12, 2020 at 04:25:00PM +0100, Alexey Gladkov wrote:
> On Thu, Nov 12, 2020 at 05:52:52PM +0300, Dmitry V. Levin wrote:
> > > В QML может.
> >
> > Там по сути тоже произошла подмена понятий, в результате чего стало
> > невозможным написать адекватные зависимости.
> >
> > Вместо того, чтобы написать, например,
> > Provides: qml(QtMultimedia)-5 = 15
> > Requires: qml(QtMultimedia)-5 >= 7
>
> То есть в sisyphus_check можно добавить проверку, что qml
> Requires/Provides должны иметь вид: ^qml([^)]+)-[0-9]+ = [0-9]+$
Provides: ^qml([^)]+)-[0-9]+ = [0-9]+$
Requires: ^qml([^)]+)-[0-9]+ >?= [0-9]+$
>
> > Тебе приходится извращаться следующим образом:
> > $ 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
>
> --
> Rgrds, legion
>
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:21 ` Dmitry V. Levin
@ 2020-11-12 15:28 ` Dmitry V. Levin
2020-11-13 8:18 ` Sergey V Turchin
1 sibling, 0 replies; 23+ messages in thread
From: Dmitry V. Levin @ 2020-11-12 15:28 UTC (permalink / raw)
To: ALT Devel discussion list
On Thu, Nov 12, 2020 at 06:21:30PM +0300, Dmitry V. Levin wrote:
> On Thu, Nov 12, 2020 at 05:59:31PM +0300, Dmitry V. Levin wrote:
> [...]
> > Кстати, у тебя где-нибудь есть версионированные qml Requires?
>
> Сейчас в репозитории ровно 3 пакета, у которых есть qml(...) в Requires,
> и все эти Requires без версий:
>
> $ rpmquery -Rp plasma5-kwin-5.20.2-alt1.x86_64.rpm \
> plasma5-systemsettings-5.20.2-alt1.x86_64.rpm \
> plasma5-workspace-qml-5.20.2-alt2.x86_64.rpm \
> |grep ^qml
> qml(QtMultimedia)
> qml(QtQuick.VirtualKeyboard)
> qml(QtQuick.Controls)
> qml(org.kde.kquickcontrols)
> qml(org.kde.plasma.components)
> qml(org.kde.plasma.core)
> qml(org.kde.kcm)
> qml(org.kde.plasma.core)
>
> Это значит, что версионирование qml можно безболезненно поменять.
Для сравнения, на данный момент qml(...) присутствует в Provides у 70
пакетов, а всего qml(...) Provides сейчас в репозитории 3616 штуки.
Возникает вопрос, почему, даже с учётом агрессивной оптимизации
межпакетных зависимостей, отрыв настолько большой?
--
ldv
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate osgi() self-provides
2020-11-12 13:00 ` Dmitry V. Levin
2020-11-12 14:26 ` Sergey V Turchin
@ 2020-11-12 18:37 ` Vladimir D. Seleznev
2020-11-13 8:40 ` Sergey V Turchin
1 sibling, 1 reply; 23+ messages in thread
From: Vladimir D. Seleznev @ 2020-11-12 18:37 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thu, Nov 12, 2020 at 04:00:06PM +0300, Dmitry V. Levin 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.
>
> Получается, что произошло массовая подмена понятия версионирования
> интерфейсов. У интерфейса не может быть одновременно несколько разных
> версий, это несколько разных интерфейсов.
Отлично! Я тогда переделаю провайдсы и реквайрсы для tcl под
версионированные интерфейсы.
> Provides: qml(QtMultimedia)-5 = 15
> Requires: qml(QtMultimedia)-5 >= 7
Выглядит не очень красиво. Я пока думаю, как это лучше записывать.
--
WBR,
Vladimir D. Seleznev
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:21 ` Dmitry V. Levin
2020-11-12 15:28 ` Dmitry V. Levin
@ 2020-11-13 8:18 ` Sergey V Turchin
1 sibling, 0 replies; 23+ messages in thread
From: Sergey V Turchin @ 2020-11-13 8:18 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thursday, 12 November 2020 18:21:30 MSK Dmitry V wrote:
> On Thu, Nov 12, 2020 at 05:59:31PM +0300, Dmitry V. Levin wrote:
> [...]
>
> > Кстати, у тебя где-нибудь есть версионированные qml Requires?
>
> Сейчас в репозитории ровно 3 пакета, у которых есть qml(...) в Requires,
> и все эти Requires без версий:
Т.к. ручные. Автоматическе пока проблематично включать.
>
> $ rpmquery -Rp plasma5-kwin-5.20.2-alt1.x86_64.rpm \
> plasma5-systemsettings-5.20.2-alt1.x86_64.rpm \
> plasma5-workspace-qml-5.20.2-alt2.x86_64.rpm \
>
> |grep ^qml
>
> qml(QtMultimedia)
> qml(QtQuick.VirtualKeyboard)
> qml(QtQuick.Controls)
> qml(org.kde.kquickcontrols)
> qml(org.kde.plasma.components)
> qml(org.kde.plasma.core)
> qml(org.kde.kcm)
> qml(org.kde.plasma.core)
>
> Это значит, что версионирование qml можно безболезненно поменять.
--
Regards, Sergey.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 14:52 ` [devel] Q: duplicate qml() self-provides Dmitry V. Levin
` (3 preceding siblings ...)
2020-11-12 15:24 ` Alexey Gladkov
@ 2020-11-13 8:20 ` Sergey V Turchin
4 siblings, 0 replies; 23+ messages in thread
From: Sergey V Turchin @ 2020-11-13 8:20 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thursday, 12 November 2020 17:52:52 MSK Dmitry V 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
Судя по первлму абзацу
https://doc.qt.io/qt-5/qtqml-modules-qmldir.html#versioning-semantics
должно быть
Requires: qml(QtMultimedia)-5 = 7
[...]
--
Regards, Sergey.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:06 ` Aleksei Nikiforov
2020-11-12 15:12 ` Dmitry V. Levin
@ 2020-11-13 8:23 ` Sergey V Turchin
1 sibling, 0 replies; 23+ messages in thread
From: Sergey V Turchin @ 2020-11-13 8:23 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thursday, 12 November 2020 18:06:19 MSK Aleksei Nikiforov wrote:
> 12.11.2020 17:52, Dmitry V. Levin пишет:
> > Вместо того, чтобы написать, например,
> > Provides: qml(QtMultimedia)-5 = 15
> > Requires: qml(QtMultimedia)-5 >= 7
>
> А мне такой вариант нравится, отличное предложение! На мой взгляд,
> синтаксис немного хуже, зато использовать может быть удобнее.
Да. Между мажорами нет коллизий.
--
Regards, Sergey.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate qml() self-provides
2020-11-12 15:24 ` Alexey Gladkov
2020-11-12 15:28 ` Alexey Gladkov
@ 2020-11-13 8:39 ` Sergey V Turchin
1 sibling, 0 replies; 23+ messages in thread
From: Sergey V Turchin @ 2020-11-13 8:39 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thursday, 12 November 2020 18:24:55 MSK Alexey Gladkov wrote:
> On Thu, Nov 12, 2020 at 05:52:52PM +0300, Dmitry V. Levin wrote:
> > > В QML может.
> >
> > Там по сути тоже произошла подмена понятий, в результате чего стало
> > невозможным написать адекватные зависимости.
> >
> > Вместо того, чтобы написать, например,
> > Provides: qml(QtMultimedia)-5 = 15
> > Requires: qml(QtMultimedia)-5 >= 7
>
> То есть в sisyphus_check можно добавить проверку, что qml
> Requires/Provides должны иметь вид: ^qml([^)]+)-[0-9]+ = [0-9]+$
Просьба не крутить гайки хотя бы до прохождения сборки task#257984 .
[...]
--
Regards, Sergey.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [devel] Q: duplicate osgi() self-provides
2020-11-12 18:37 ` [devel] Q: duplicate osgi() self-provides Vladimir D. Seleznev
@ 2020-11-13 8:40 ` Sergey V Turchin
0 siblings, 0 replies; 23+ messages in thread
From: Sergey V Turchin @ 2020-11-13 8:40 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thursday, 12 November 2020 21:37:09 MSK Vladimir D wrote:
[...]
> Отлично! Я тогда переделаю провайдсы и реквайрсы для tcl под
> версионированные интерфейсы.
>
> > Provides: qml(QtMultimedia)-5 = 15
> > Requires: qml(QtMultimedia)-5 >= 7
>
> Выглядит не очень красиво. Я пока думаю, как это лучше записывать.
Просьба не крутить гайки хотя бы до прохождения сборки task#257984 .
--
Regards, Sergey.
^ permalink raw reply [flat|nested] 23+ messages in thread
* [devel] Versioned interface provides syntax (Was: Q: duplicate qml() self-provides)
2020-11-12 15:12 ` Dmitry V. Levin
@ 2020-12-08 0:54 ` Vladimir D. Seleznev
0 siblings, 0 replies; 23+ messages in thread
From: Vladimir D. Seleznev @ 2020-12-08 0:54 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Thu, Nov 12, 2020 at 06:12:48PM +0300, Dmitry V. Levin wrote:
> On Thu, Nov 12, 2020 at 06:06:19PM +0300, Aleksei Nikiforov wrote:
> > 12.11.2020 17:52, Dmitry V. Levin пишет:
> > > Вместо того, чтобы написать, например,
> > > Provides: qml(QtMultimedia)-5 = 15
> > > Requires: qml(QtMultimedia)-5 >= 7
> >
> > А мне такой вариант нравится, отличное предложение! На мой взгляд,
> > синтаксис немного хуже, зато использовать может быть удобнее.
>
> Получается, что тут главное - перенести major version из PROVIDEVERSION
> в PROVIDENAME, синтаксис можно попробовать придумать получше.
Не придумали синтаксис получше? А то я тоже хочу использовать такой
вариант.
--
WBR,
Vladimir D. Seleznev
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2020-12-08 0:54 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-11 16:34 [devel] Q: duplicate osgi() self-provides Dmitry V. Levin
2020-11-12 12:01 ` Igor Vlasenko
2020-11-12 13:00 ` Dmitry V. Levin
2020-11-12 14:26 ` Sergey V Turchin
2020-11-12 14:52 ` [devel] Q: duplicate qml() self-provides Dmitry V. Levin
2020-11-12 14:59 ` Dmitry V. Levin
2020-11-12 15:21 ` Dmitry V. Levin
2020-11-12 15:28 ` Dmitry V. Levin
2020-11-13 8:18 ` Sergey V Turchin
2020-11-12 15:01 ` Anton Farygin
2020-11-12 15:09 ` Dmitry V. Levin
2020-11-12 15:17 ` Anton Farygin
2020-11-12 15:11 ` Aleksei Nikiforov
2020-11-12 15:06 ` Aleksei Nikiforov
2020-11-12 15:12 ` Dmitry V. Levin
2020-12-08 0:54 ` [devel] Versioned interface provides syntax (Was: Q: duplicate qml() self-provides) Vladimir D. Seleznev
2020-11-13 8:23 ` [devel] Q: duplicate qml() self-provides Sergey V Turchin
2020-11-12 15:24 ` Alexey Gladkov
2020-11-12 15:28 ` Alexey Gladkov
2020-11-13 8:39 ` Sergey V Turchin
2020-11-13 8:20 ` Sergey V Turchin
2020-11-12 18:37 ` [devel] Q: duplicate osgi() self-provides Vladimir D. Seleznev
2020-11-13 8:40 ` Sergey V Turchin
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git