ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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