* [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: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 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 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 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 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: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 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 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: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
* [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
* 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 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: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 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 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 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
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