ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] kde4games & dep optimizations
@ 2011-02-06  3:31 Alexey Tourbin
  2011-02-06 21:27 ` Dmitry V. Levin
  0 siblings, 1 reply; 7+ messages in thread
From: Alexey Tourbin @ 2011-02-06  3:31 UTC (permalink / raw)
  To: devel

Новый rpm выполняет оптимизацию зависимостей между подпакетами: если
пакет A содержит строгую зависимость на libA (Requires: libA =
%version-%release), то все остальные зависимости пакета A,
которые разрешаются в libA, - например Requires: libA.so.0, -
удаляются.

В этом примере названия пакетов A и libA условны, оптимизация работает
для пакетов с любыми именами (я выбрал имена A и libA, чтобы пример
был интуитивно понятнее).

Оптимизация в том числе выстраивает цепочки строгих зависимостей:
A -> libA0 -> libA1 -> ... libAN,
чтобы удалить лишние зависимости пакета A, разрешающиеся в libAN
(в случае, если пакет A требует только libA0, но libA0 в свою очередь
требует libA1 и т.д.)

К сожалению, для некоторых пакетов эта оптимизация не сработает,
потому что у этих пакетов нет строгих зависимостей между подпакетами.
Как ни странно, одним из первых пакетов такого рода мне попался kde4games
(в то время как kde4 у нас собирается с очень жесткими зависимостями).

$ hsh-install kde4games-bovo
...
$ hsh-run -- rpm -e --test libkdegames4
error: removing these packages would break dependencies:
	libkdegames.so.5()(64bit) >= set:okXdnAZtmOhWJfrPk02zqtrC0apKQoS0 is needed by kde4games-bovo-4.5.5-alt1
$ hsh-run -- rpm -q --qf '%{SOURCERPM}\n' kde4games-bovo libkdegames4
kde4games-4.5.5-alt1.src.rpm
kde4games-4.5.5-alt1.src.rpm
$

Отсюда видно, что подпакеты kde4games-bovo и libkdegames4 собираются из
одного исходного пакета, и между ними существует soname-зависимость с
set-версией; но в тоже время нет ни одной строгой зависимости на имя
пакета с библиотекой - ни прямой, ни по цепочке.

Таким образом, во всех kde4games-* подпакетах не удастся соптимизировать
дорогостоящую зависимость с set-версией (которая занимает больше места,
и для проверки которой будет выполняться rpmsetcmp) на более строгую
и дешевую зависимость - имя пакета с версией (для проверки такой версии
обычно будет достаточно strcmp).

Получается, что мои усилия по оптимизации зависимостей во многом
бесполезны, потому что некоторые толстые пакеты собраны не по понятиям.

Интересно, что тогда дальше делать?  С одной стороны, следовало бы
исправить такие пакеты (для этого нужно сначала научиться их
диагностировать).  С другой стороны, если мейнтейнерам это в голову не
приходит, то может лучше научить rpm автоматически вставлять строгие
зависимости туда, где они будут иметь смысл?


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] kde4games & dep optimizations
  2011-02-06  3:31 [devel] kde4games & dep optimizations Alexey Tourbin
@ 2011-02-06 21:27 ` Dmitry V. Levin
  2011-02-06 23:55   ` Alexey Tourbin
                     ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Dmitry V. Levin @ 2011-02-06 21:27 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 653 bytes --]

On Sun, Feb 06, 2011 at 06:31:15AM +0300, Alexey Tourbin wrote:
> Интересно, что тогда дальше делать?  С одной стороны, следовало бы
> исправить такие пакеты (для этого нужно сначала научиться их
> диагностировать).  С другой стороны, если мейнтейнерам это в голову не
> приходит, то может лучше научить rpm автоматически вставлять строгие
> зависимости туда, где они будут иметь смысл?

Для того, чтобы проставлять такие зависимости автоматически, нужно
- научиться диагностировать нехватку таких зависимостей;
- выдать packager'ам интерфейс для отключения новой автоматики в случае,
  если она принимает неправильное решение.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] kde4games & dep optimizations
  2011-02-06 21:27 ` Dmitry V. Levin
@ 2011-02-06 23:55   ` Alexey Tourbin
  2011-02-07  0:07     ` Dmitry V. Levin
  2011-02-08  5:13   ` Alexey Tourbin
  2011-02-12 13:13   ` Alexey Tourbin
  2 siblings, 1 reply; 7+ messages in thread
From: Alexey Tourbin @ 2011-02-06 23:55 UTC (permalink / raw)
  To: ALT Devel discussion list

On Mon, Feb 07, 2011 at 12:27:02AM +0300, Dmitry V. Levin wrote:
> On Sun, Feb 06, 2011 at 06:31:15AM +0300, Alexey Tourbin wrote:
> > Интересно, что тогда дальше делать?  С одной стороны, следовало бы
> > исправить такие пакеты (для этого нужно сначала научиться их
> > диагностировать).  С другой стороны, если мейнтейнерам это в голову не
> > приходит, то может лучше научить rpm автоматически вставлять строгие
> > зависимости туда, где они будут иметь смысл?
> 
> Для того, чтобы проставлять такие зависимости автоматически, нужно
> - научиться диагностировать нехватку таких зависимостей;

Я ещё раз проверил зависмости kde4games, там всё не так глупо.

$ hsh-run -- rpm -e --test kde4games-common
error: removing these packages would break dependencies:
        kde4games-common = 4.5.5-alt1 is needed by kde4games-core-4.5.5-alt1
        kde4games-common = 4.5.5-alt1 is needed by libkdegames4-4.5.5-alt1
$

Зависимости устроены по принципу

%package common
%package -n libkdegames4
Requires: %name-common = %version-%release
%package game1
Requires: %name-common = %version-%release
%package game2
Requires: %name-common = %version-%release
...
%package gameN
Requires: %name-common = %version-%release

То есть, с одной стороны, все зависимости вроде бы строгие.  С другой
стороны, строгой цепочки от kde4games-gameN к libkdegames4 нет.
Смысл этого феномена мне ещё не сосем понятен.  Нельзя ли из всего
этого каким-то образом заключить, что можно добавить (или "усилить")
строгую зависимость на libkdegames4?

> - выдать packager'ам интерфейс для отключения новой автоматики в случае,
>   если она принимает неправильное решение.

Понятно, что автоматика будет работать по принципу: если между двумя
подпакетами есть виртуальная зависимость, но нет строгой зависимости на
имя пакета, то нужно добавить строгую зависимость на имя пакета.

Мне пока известно всего одно необходимое и разумное исключение из этого
правила: пакет gcc4.5 требует libgcc4.5 >= 4.5.1-alt7.  Такая конструкция
позволит сосуществовать старому компилятору gcc4.5 с новой библиотекой
libgcc4.6.  Этот класс случаев, когда зависимость на имя пакета
с библиотекой уже есть, но она специально не строгая, легко учитывать
автоматически.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] kde4games & dep optimizations
  2011-02-06 23:55   ` Alexey Tourbin
@ 2011-02-07  0:07     ` Dmitry V. Levin
  0 siblings, 0 replies; 7+ messages in thread
From: Dmitry V. Levin @ 2011-02-07  0:07 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1950 bytes --]

On Mon, Feb 07, 2011 at 02:55:09AM +0300, Alexey Tourbin wrote:
> Зависимости устроены по принципу
> 
> %package common
> %package -n libkdegames4
> Requires: %name-common = %version-%release
> %package game1
> Requires: %name-common = %version-%release
> %package game2
> Requires: %name-common = %version-%release
> ...
> %package gameN
> Requires: %name-common = %version-%release
> 
> То есть, с одной стороны, все зависимости вроде бы строгие.  С другой
> стороны, строгой цепочки от kde4games-gameN к libkdegames4 нет.
> Смысл этого феномена мне ещё не сосем понятен.  Нельзя ли из всего
> этого каким-то образом заключить, что можно добавить (или "усилить")
> строгую зависимость на libkdegames4?

Теоретически возможно установить другой libkdegames4, у которого нет
строгой зависимости на %name-common = %version-%release; если бы можно
было предположить, что у всех мыслимых сборок libkdegames4 всегда есть эта
строгая зависимость, то да, можно проставить строгую зависимость на
libkdegames4 = %version-%release.

> > - выдать packager'ам интерфейс для отключения новой автоматики в случае,
> >   если она принимает неправильное решение.
> 
> Понятно, что автоматика будет работать по принципу: если между двумя
> подпакетами есть виртуальная зависимость, но нет строгой зависимости на
> имя пакета, то нужно добавить строгую зависимость на имя пакета.
> 
> Мне пока известно всего одно необходимое и разумное исключение из этого
> правила: пакет gcc4.5 требует libgcc4.5 >= 4.5.1-alt7.

Если бы пакет честно назывался не libgcc4.5, а libgcc_s1 по имени soname,
то никаких нестрогих зависимостей не потребовалось бы.

> Такая конструкция
> позволит сосуществовать старому компилятору gcc4.5 с новой библиотекой
> libgcc4.6.  Этот класс случаев, когда зависимость на имя пакета
> с библиотекой уже есть, но она специально не строгая, легко учитывать
> автоматически.

Да, наверное.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] kde4games & dep optimizations
  2011-02-06 21:27 ` Dmitry V. Levin
  2011-02-06 23:55   ` Alexey Tourbin
@ 2011-02-08  5:13   ` Alexey Tourbin
  2011-02-12 13:13   ` Alexey Tourbin
  2 siblings, 0 replies; 7+ messages in thread
From: Alexey Tourbin @ 2011-02-08  5:13 UTC (permalink / raw)
  To: ALT Devel discussion list

On Mon, Feb 07, 2011 at 12:27:02AM +0300, Dmitry V. Levin wrote:
> On Sun, Feb 06, 2011 at 06:31:15AM +0300, Alexey Tourbin wrote:
> > Интересно, что тогда дальше делать?  С одной стороны, следовало бы
> > исправить такие пакеты (для этого нужно сначала научиться их
> > диагностировать).  С другой стороны, если мейнтейнерам это в голову не
> > приходит, то может лучше научить rpm автоматически вставлять строгие
> > зависимости туда, где они будут иметь смысл?
> 
> Для того, чтобы проставлять такие зависимости автоматически, нужно
> - научиться диагностировать нехватку таких зависимостей;

4.0.4-alt100.18-2-g7891bc3
build/interdep.c: diagnose non-strict dependencies between subpackages

Пример работы:

warning: util-linux: non-strict dependency on libblkid
warning: util-linux: non-strict dependency on libuuid
warning: util-linux: non-strict dependency on libmount
warning: mount: non-strict dependency on libblkid
warning: cfdisk: non-strict dependency on libblkid
warning: fdisk: non-strict dependency on libblkid
warning: libblkid: non-strict dependency on libuuid
warning: libblkid-devel: non-strict dependency on libuuid-devel
warning: libmount-devel: non-strict dependency on libblkid-devel
warning: util-linux-debuginfo: non-strict dependency on libblkid-debuginfo
warning: util-linux-debuginfo: non-strict dependency on libuuid-debuginfo
warning: util-linux-debuginfo: non-strict dependency on libmount-debuginfo
warning: mount-debuginfo: non-strict dependency on libblkid-debuginfo
warning: cfdisk-debuginfo: non-strict dependency on libblkid-debuginfo
warning: fdisk-debuginfo: non-strict dependency on libblkid-debuginfo
warning: libblkid-debuginfo: non-strict dependency on libuuid-debuginfo

Note that the right time for this check is after strict dependencies
are propagated, and also after debuginfo dependencies have been lifted.

Причем не обязательно исправлять все зависимости, упомянутые в этом
предупреждении.  Возьмем util-linux: если добавить строгую зависимость
на libblkid, а в libblkid добавить строгую зависимость на libuuid,
то зависиость на libuuid будет "засчитана" автоматически (по цепочке
строгих зависимостей).  Более того, все зависимости, которые могут
быть "засчитаны" таким образом, будут автоматически удаляться.

Нестрогие зависимости между debuginfo пакетами являются отражением
нестрогих зависимостей между основными пакетами; иначе бы зависимости
между debuginfo пакетами были "усилены" (lifted).

> - выдать packager'ам интерфейс для отключения новой автоматики в случае,
>   если она принимает неправильное решение.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] kde4games & dep optimizations
  2011-02-06 21:27 ` Dmitry V. Levin
  2011-02-06 23:55   ` Alexey Tourbin
  2011-02-08  5:13   ` Alexey Tourbin
@ 2011-02-12 13:13   ` Alexey Tourbin
  2011-02-14 14:15     ` Sergey V Turchin
  2 siblings, 1 reply; 7+ messages in thread
From: Alexey Tourbin @ 2011-02-12 13:13 UTC (permalink / raw)
  To: ALT Devel discussion list

On Mon, Feb 07, 2011 at 12:27:02AM +0300, Dmitry V. Levin wrote:
> Для того, чтобы проставлять такие зависимости автоматически, нужно
> - научиться диагностировать нехватку таких зависимостей;
> - выдать packager'ам интерфейс для отключения новой автоматики в случае,
>   если она принимает неправильное решение.

Попробовал исправить зависимости у qt4.  Вроде бы это не очень сложно,
т.к. rpm теперь говорит, что нужно исправлять.  С другой стороны,
пакет монструозный, а rpm говорит очень много.  Так что пришлось
несколько раз запускать 'gear-rpm -bl', а это не очень быстро выходит.

В общем даже не знаю, стоит ли надеяться, что другие пакеты будут
исправлены packager'ами таким же образом, как я исправил qt4, или нет.

Вообще много кривоватых пакетов попадается.  Как из такой груды кривоватых
пакетов можно создать Национальную ОС, или хотя бы стабильный LTS бранч,
не понятно.

Взять например тот же qt4.

%package -n lib%{name}-clucene
Summary: CLucene library for the Qt%major GUI toolkit
%description -n lib%{name}-clucene
CLucene library for the Qt%major GUI toolkit

Оказывается, libqt4-clucene - это библиотека CLucene для Qt4.
Не хватает разве что локализации этого замечательного факта:
libqt4-clucene - это библиотека "клюсене" для кью-ти-фоур.


commit 4aab082715fa94c2bb61a8fd8b57462941ef9fd1
Author: Alexey Tourbin <at@altlinux.ru>
Date:   Sat Feb 12 12:56:47 2011 +0300

    - enabled strict dependencies between subpackages
    
    Before this change, dependencies between subpackages were arranged like
    this (arrows indicate strict dependencies - Requires: N = [E:]V-R).
    
    libqt4-core	libqt4-gui
    	 |	|
    	 v	v
    	 qt4-common
    
    This scheme does not ensure strict dependency between libqt4-core
    and libqt4-gui, though (note that libqt4-gui requires libQtCore.so.4).
    Logically, it is possible that another package provides libQtCore.so.4.
    Hence it is not possible to deduce strict dependency between libqt4-gui
    and libqt4-core.
    
    With this change, I rearrange dependencies like this:
    
    libqt4-gui
    	|
    	v
    libqt4-core
    	|
    	v
    qt4-common
    
    Note that, since rpm will propagate strict dependencies, it is also
    safe to assume that there is strict dependency between libqt4-gui and
    qt4-common: libqt4-gui -> qt4-common.
    
    As to why rearrangement is needed.
    
    1) With strict dependencies between subpackages, rpm will optimize
    /usr/src/debug files in their corresponding debuginfo packages.
    E.g. rpm will remove libqt4-gui-debuginfo sources which are already
    part of libqt4-core-debuginfo.  (Normally, there won't be many source
    dups between subpackages, with one notable exception: header files).
    
    2) With strict dependencies between subpackages, rpm will optimize
    dependencies.  E.g. rpm will remove libQtCore.so.4 dependency from
    libqt4-gui, along with its set-version, since it is provided by
    libqt4-core.  Furthermore, rpm will also remove dependencies which
    are already required by libqt4-core, such as libstdc++.so.6.

diff --git a/altlinux/qt4.spec b/altlinux/qt4.spec
index d0def3b..995e4a4 100644
--- a/altlinux/qt4.spec
+++ b/altlinux/qt4.spec
@@ -52,11 +52,13 @@ Summary: Shared library for the Qt%major GUI toolkit
 Url: http://www.trolltech.com/products/qt/
 License: GPLv3 / LGPLv2.1
 
-Provides: %name-x11 = %version-%release
-Requires: %name-sql lib%name %name-assistant
+Requires: lib%name = %version-%release
+Requires: %name-sql = %version-%release
+Requires: %name-assistant = %version-%release
 %if_enabled dbus
-Requires: %name-dbus
+Requires: %name-dbus = %version-%release
 %endif
+Provides: %name-x11 = %version-%release
 
 Source0: kde-qt-everywhere-opensource-src-%version%beta.tar
 #
@@ -158,14 +160,27 @@ Common package for Qt%major
 BuildArch: noarch
 Summary: Shared library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: lib%{name}-core lib%{name}-gui lib%{name}-network
-Requires: lib%{name}-opengl lib%{name}-sql lib%{name}-xml
-Requires: lib%{name}-qt3support lib%{name}-svg lib%{name}-script
-Requires: lib%{name}-designer lib%{name}-uitools
-Requires: lib%{name}-webkit lib%{name}-xmlpatterns lib%{name}-multimedia
-Requires: lib%{name}-help lib%{name}-declarative
-Requires: lib%{name}-clucene %{?_enable_dbus:lib%{name}-dbus}
-Provides: lib%{name}-x11 = %version-%release
+Requires: lib%name-core = %version-%release
+Requires: lib%name-gui = %version-%release
+Requires: lib%name-network = %version-%release
+Requires: lib%name-opengl = %version-%release
+Requires: lib%name-sql = %version-%release
+Requires: lib%name-xml = %version-%release
+Requires: lib%name-qt3support = %version-%release
+Requires: lib%name-svg = %version-%release
+Requires: lib%name-script = %version-%release
+Requires: lib%name-designer = %version-%release
+Requires: lib%name-uitools = %version-%release
+Requires: lib%name-webkit = %version-%release
+Requires: lib%name-xmlpatterns = %version-%release
+Requires: lib%name-multimedia = %version-%release
+Requires: lib%name-help = %version-%release
+Requires: lib%name-declarative = %version-%release
+Requires: lib%name-clucene = %version-%release
+%if_enabled dbus
+Requires: lib%name-dbus = %version-%release
+%endif
+Provides: lib%name-x11 = %version-%release
 
 %description -n lib%name
 Qt is a GUI software toolkit. Qt simplifies the task of writing and maintaining
@@ -186,7 +201,10 @@ well as the README files for Qt.
 %package -n lib%{name}-qt3support
 Summary: Qt3 support library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
+Requires: lib%name-network = %version-%release
+Requires: lib%name-sql = %version-%release
+Requires: lib%name-xml = %version-%release
 %description -n lib%{name}-qt3support
 Qt3 support library for the Qt%major GUI toolkit
 
@@ -203,7 +221,7 @@ Core library for the Qt%major GUI toolkit
 %package -n lib%{name}-gui
 Summary: GUI support library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-core = %version-%release
 Provides: libqtgui%major = %version-%release
 Conflicts: yachat < 3.1.0 yapsi < 3.1.0
 %description -n lib%{name}-gui
@@ -213,7 +231,7 @@ GUI support library for the Qt%major GUI toolkit
 %package -n lib%{name}-dbus
 Summary: DBus support library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-xml = %version-%release
 %description -n lib%{name}-dbus
 DBus support library for the Qt%major GUI toolkit
 
@@ -221,7 +239,7 @@ DBus support library for the Qt%major GUI toolkit
 %package -n lib%{name}-network
 Summary: Network support library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-dbus = %version-%release
 %description -n lib%{name}-network
 Network support library for the Qt%major GUI toolkit
 
@@ -229,7 +247,7 @@ Network support library for the Qt%major GUI toolkit
 %package -n lib%{name}-uitools
 Summary: Designer UI tools library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
 %description -n lib%{name}-uitools
 Designer UI tools library for the Qt%major GUI toolkit
 
@@ -237,7 +255,7 @@ Designer UI tools library for the Qt%major GUI toolkit
 %package -n lib%{name}-svg
 Summary: SVG support for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
 %description -n lib%{name}-svg
 Support for rendering Scalable Vector Graphics (SVG)
 drawings and animations for the Qt%major GUI toolkit
@@ -246,7 +264,7 @@ drawings and animations for the Qt%major GUI toolkit
 %package -n lib%{name}-opengl
 Summary: OpenGL support library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
 %description -n lib%{name}-opengl
 OpenGL support library for the Qt%major GUI toolkit
 
@@ -254,7 +272,7 @@ OpenGL support library for the Qt%major GUI toolkit
 %package -n lib%{name}-sql
 Summary: SQL support library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-core = %version-%release
 %description -n lib%{name}-sql
 SQL support library for the Qt%major GUI toolkit
 
@@ -262,7 +280,7 @@ SQL support library for the Qt%major GUI toolkit
 %package -n lib%{name}-test
 Summary: Unit Testing Library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-core = %version-%release
 %description -n lib%{name}-test
 Unit Testing Library for the Qt%major GUI toolkit
 
@@ -270,7 +288,9 @@ Unit Testing Library for the Qt%major GUI toolkit
 %package -n lib%{name}-designer
 Summary: Libraries for the Qt%major Designer
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
+Requires: lib%name-script = %version-%release
+Requires: lib%name-xml = %version-%release
 %description -n lib%{name}-designer
 Libraries for the Qt%major Designer
 
@@ -278,7 +298,7 @@ Libraries for the Qt%major Designer
 %package -n lib%{name}-xml
 Summary: XML support library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-core = %version-%release
 %description -n lib%{name}-xml
 XML support library for the Qt%major GUI toolkit
 
@@ -286,7 +306,7 @@ XML support library for the Qt%major GUI toolkit
 %package -n lib%{name}-script
 Summary: Scripting support library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-dbus = %version-%release
 %description -n lib%{name}-script
 Qt Script is based on the ECMAScript scripting language, as defined in
 standard ECMA-262. Microsoft's JScript, and Netscape's JavaScript are
@@ -296,7 +316,7 @@ also based on the ECMAScript standard.
 %package -n lib%{name}-xmlpatterns
 Summary: XmlPatterns library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-network = %version-%release
 %description -n lib%{name}-xmlpatterns
 XmlPatterns library for the Qt%major GUI toolkit
 
@@ -304,7 +324,8 @@ XmlPatterns library for the Qt%major GUI toolkit
 %package -n lib%{name}-scripttools
 Summary: ScriptTools library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
+Requires: lib%name-script = %version-%release
 %description -n lib%{name}-scripttools
 ScriptTools library for the Qt%major GUI toolkit
 
@@ -312,7 +333,10 @@ ScriptTools library for the Qt%major GUI toolkit
 %package -n lib%{name}-help
 Summary: Help library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-clucene = %version-%release
+Requires: lib%name-gui = %version-%release
+Requires: lib%name-network = %version-%release
+Requires: lib%name-sql = %version-%release
 %description -n lib%{name}-help
 Help library for the Qt%major GUI toolkit
 
@@ -320,7 +344,8 @@ Help library for the Qt%major GUI toolkit
 %package -n lib%{name}-webkit
 Summary: WebKit library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
+Requires: lib%name-network = %version-%release
 %description -n lib%{name}-webkit
 WebKit library for the Qt%major GUI toolkit
 
@@ -328,7 +353,7 @@ WebKit library for the Qt%major GUI toolkit
 %package -n lib%{name}-clucene
 Summary: CLucene library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-core = %version-%release
 %description -n lib%{name}-clucene
 CLucene library for the Qt%major GUI toolkit
 
@@ -336,7 +361,7 @@ CLucene library for the Qt%major GUI toolkit
 %package -n lib%{name}-multimedia
 Summary: Multimedia framework library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
 %description -n lib%{name}-multimedia
 Multimedia framework library for the Qt%major GUI toolkit
 
@@ -344,7 +369,13 @@ Multimedia framework library for the Qt%major GUI toolkit
 %package -n lib%{name}-declarative
 Summary: Ddeclarative framework library for the Qt%major GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-gui = %version-%release
+Requires: lib%name-network = %version-%release
+Requires: lib%name-opengl = %version-%release
+Requires: lib%name-script = %version-%release
+Requires: lib%name-sql = %version-%release
+Requires: lib%name-webkit = %version-%release
+Requires: lib%name-xmlpatterns = %version-%release
 %description -n lib%{name}-declarative
 Declarative framework library for the Qt%major GUI toolkit
 Declarative module provides a declarative framework
@@ -355,9 +386,11 @@ for building highly dynamic, custom user interfaces
 BuildArch: noarch
 Group: System/Libraries
 Summary: Meta-package for development with Qt%major GUI toolkit
-Requires: lib%name-devel %name-designer %name-assistant
+Requires: lib%name-devel = %version-%release
+Requires: %name-designer = %version-%release
+Requires: %name-assistant = %version-%release
 %if_enabled docs
-Requires: %name-doc
+Requires: %name-doc = %version-%release
 %endif
 %description devel
 Meta-package for development with Qt%major GUI toolkit
@@ -366,10 +399,10 @@ Meta-package for development with Qt%major GUI toolkit
 %package -n lib%name-devel
 Summary: Header files and libraries for developing apps which will use Qt%major
 Group: Development/KDE and QT
-Requires: %name-common = %version-%release
-Requires: lib%name
+Requires: lib%name = %version-%release
+Requires: lib%name-test = %version-%release
+Requires: lib%name-scripttools = %version-%release
 Requires: xorg-devel libssl-devel freetype2-devel fontconfig-devel libpng-devel zlib-devel libtiff-devel libGLU-devel
-Requires: lib%{name}-test lib%{name}-scripttools
 %if_enabled dbus
 Requires: libdbus-devel
 %endif
@@ -398,8 +431,7 @@ This package contains the files necessary to develop applications
 %package -n lib%name-devel-static
 Summary: Version of the Qt GUI toolkit for static linking
 Group: Development/KDE and QT
-Requires: %name-common = %version-%release
-Requires: lib%name-devel
+Requires: lib%name-devel = %version-%release
 Obsoletes: %name-devel-static
 %description -n lib%name-devel-static
 This package package contains the files necessary to link applications
@@ -411,8 +443,7 @@ on the system running the application.
 %package qml
 Summary: QML modules Qt%major
 Group: Development/KDE and QT
-Requires: %name-common = %version-%release
-Requires: lib%name-devel
+Requires: lib%name-devel = %version-%release
 %description qml
 The package contains a QML modules and viewer for the Qt%major toolkit.
 
@@ -420,8 +451,7 @@ The package contains a QML modules and viewer for the Qt%major toolkit.
 %package designer
 Summary: Designer for the Qt%major
 Group: Development/KDE and QT
-Requires: %name-common = %version-%release
-Requires: lib%name-devel
+Requires: lib%name-devel = %version-%release
 %description designer
 The package contains an User Interface designer
 tool for the Qt%major toolkit.
@@ -430,7 +460,7 @@ tool for the Qt%major toolkit.
 %package -n lib%name-styles
 Summary: Extra styles for the Qt GUI toolkit
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-core = %version-%release
 %description -n lib%name-styles
 Extra styles (themes) for the Qt GUI toolkit.
 
@@ -439,25 +469,25 @@ Extra styles (themes) for the Qt GUI toolkit.
 BuildArch: noarch
 Group: System/Libraries
 Summary: Meta-package for SQL support of Qt%major GUI toolkit
-Requires: lib%name-sql-mysql
-Requires: lib%name-sql-sqlite
+Requires: lib%name-sql-mysql = %version-%release
+Requires: lib%name-sql-sqlite = %version-%release
 %if_enabled sql_tds
-Requires: lib%name-sql-tds
+Requires: lib%name-sql-tds = %version-%release
 %endif
 %if_enabled sql_ibase
-Requires: lib%name-sql-interbase
+Requires: lib%name-sql-interbase = %version-%release
 %endif
 %if_enabled sql_pgsql
-Requires: lib%name-sql-postgresql
+Requires: lib%name-sql-postgresql = %version-%release
 %endif
 %if_enabled sql_ibase
-Requires: lib%name-sql-interbase
+Requires: lib%name-sql-interbase = %version-%release
 %endif
 %if_enabled sql_sqlite2
-Requires: lib%name-sql-sqlite2
+Requires: lib%name-sql-sqlite2 = %version-%release
 %endif
 %if_enabled sql_odbc
-Requires: lib%name-sql-odbc
+Requires: lib%name-sql-odbc = %version-%release
 %endif
 %description sql
 Meta-package for SQL support of Qt%major GUI toolkit
@@ -466,7 +496,7 @@ Meta-package for SQL support of Qt%major GUI toolkit
 %package -n lib%name-sql-odbc
 Summary: ODBC drivers for Qt%major SQL classes
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-sql = %version-%release
 Provides: lib%name-plugin-sql = %version-%release
 %description -n lib%name-sql-odbc
 ODBC driver for Qt's SQL classes (QODBC)
@@ -475,7 +505,7 @@ ODBC driver for Qt's SQL classes (QODBC)
 %package -n lib%name-sql-tds
 Summary: FreeTDS(Sybase) driver for Qt%major SQL classes
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-sql = %version-%release
 Provides: lib%name-plugin-sql = %version-%release
 %description -n lib%name-sql-tds
 FreeTDS(Sybase) driver for Qt's SQL classes (QTDS)
@@ -484,7 +514,7 @@ FreeTDS(Sybase) driver for Qt's SQL classes (QTDS)
 %package -n lib%name-sql-mysql
 Summary: MySQL driver for Qt%major SQL classes
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-sql = %version-%release
 Provides: lib%name-plugin-sql = %version-%release
 %description -n lib%name-sql-mysql
 MySQL driver for Qt's SQL classes (QMYSQL)
@@ -493,7 +523,7 @@ MySQL driver for Qt's SQL classes (QMYSQL)
 %package -n lib%name-sql-postgresql
 Summary: PostgreSQL drivers for Qt%major SQL classes
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-sql = %version-%release
 Provides: lib%name-plugin-sql = %version-%release
 %description -n lib%name-sql-postgresql
 PostgreSQL driver for Qt's SQL classes (QPSQL)
@@ -502,7 +532,7 @@ PostgreSQL driver for Qt's SQL classes (QPSQL)
 %package -n lib%name-sql-interbase
 Summary: InterBase drivers for Qt%major SQL classes
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-sql = %version-%release
 Provides: lib%name-plugin-sql = %version-%release
 %description -n lib%name-sql-interbase
 InterBase driver for Qt's SQL classes (QIBASE)
@@ -511,7 +541,7 @@ InterBase driver for Qt's SQL classes (QIBASE)
 %package -n lib%name-sql-sqlite
 Summary: SQLite driver for Qt%major SQL classes
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-sql = %version-%release
 Provides: lib%name-plugin-sql = %version-%release
 %description -n lib%name-sql-sqlite
 SQLite driver for Qt's SQL classes (QSQLITE)
@@ -520,7 +550,7 @@ SQLite driver for Qt's SQL classes (QSQLITE)
 %package -n lib%name-sql-sqlite2
 Summary: SQLite2 driver for Qt%major SQL classes
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-sql = %version-%release
 Provides: lib%name-plugin-sql = %version-%release
 %description -n lib%name-sql-sqlite2
 SQLite2 driver for Qt's SQL classes (QSQLITE2)
@@ -560,7 +590,7 @@ This package contains documentation in man format.
 %package doc-examples
 Summary: Examples for developing apps which will use Qt%{major}
 Group: Development/KDE and QT
-Requires: %name-common = %version
+Requires: lib%name = %version-%release
 %description doc-examples
 This package contains sources for example programs.
 
@@ -568,8 +598,9 @@ This package contains sources for example programs.
 %package assistant
 Summary: Assistant for the Qt%major
 Group: Text tools
-Requires: %name-common = %version-%release
-Requires: lib%name-sql-sqlite
+Requires: lib%name-help = %version-%release
+Requires: lib%name-webkit = %version-%release
+Requires: lib%name-sql-sqlite = %version-%release
 %description assistant
 This package contains an documentation browser
 for the Qt%major toolkit and Qt-based programs.
@@ -578,7 +609,9 @@ for the Qt%major toolkit and Qt-based programs.
 %package dbus
 Summary: D-Bus utilities for the Qt%major
 Group: System/Configuration/Other
-Requires: %name-common = %version-%release
+Requires: lib%name-dbus = %version-%release
+Requires: lib%name-gui = %version-%release
+Requires: lib%name-xml = %version-%release
 Requires: dbus-tools-gui
 %description dbus
 This package contains D-Bus utilities
@@ -589,7 +622,7 @@ for the Qt%major toolkit and Qt-based programs.
 Version: %phonon_ver
 Summary: Phonon Multimedia Framework library
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-core = %version-%release
 %description -n libphonon
 Phonon Multimedia Framework library
 
@@ -598,7 +631,7 @@ Phonon Multimedia Framework library
 Version: %phonon_ver
 Summary: Development files for Phonon
 Group: System/Libraries
-Requires: %name-common = %version-%release
+Requires: lib%name-core = %version-%release
 %description -n phonon-devel
 Development files for Phonon
 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] kde4games & dep optimizations
  2011-02-12 13:13   ` Alexey Tourbin
@ 2011-02-14 14:15     ` Sergey V Turchin
  0 siblings, 0 replies; 7+ messages in thread
From: Sergey V Turchin @ 2011-02-14 14:15 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: Text/Plain, Size: 765 bytes --]

On Saturday 12 February 2011 16:13, Alexey Tourbin wrote:

[...]
> В общем даже не знаю, стоит ли надеяться, что другие пакеты будут
> исправлены packager'ами таким же образом, как я исправил qt4, или нет.

[...]
> @@ -578,7 +609,9 @@ for the Qt%major toolkit and Qt-based programs.
>  %package dbus
>  Summary: D-Bus utilities for the Qt%major
>  Group: System/Configuration/Other
> -Requires: %name-common = %version-%release
> +Requires: lib%name-dbus = %version-%release
> +Requires: lib%name-gui = %version-%release
> +Requires: lib%name-xml = %version-%release
Не, IMHO фигня получается.
Зачем rpm тогда? Отслеживать изменения тоже мне?
Мне в kde4* совершенно не хочется таким заниматься.

[...]

-- 
Regards, Sergey.       ALT Linux, http://www.altlinux.ru/

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-02-14 14:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-06  3:31 [devel] kde4games & dep optimizations Alexey Tourbin
2011-02-06 21:27 ` Dmitry V. Levin
2011-02-06 23:55   ` Alexey Tourbin
2011-02-07  0:07     ` Dmitry V. Levin
2011-02-08  5:13   ` Alexey Tourbin
2011-02-12 13:13   ` Alexey Tourbin
2011-02-14 14:15     ` 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