From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sun, 6 Feb 2011 05:05:00 +0300 From: Alexey Tourbin To: ALT Devel discussion list Message-ID: <20110206020500.GD22517@altlinux.org> References: <20110131152337.GO30604@altlinux.org> <20110131154640.GB17803@altlinux.org> <20110203092032.GE5284@altlinux.org> <20110204174010.GA11630@altlinux.org> <20110204203819.GA9423@altlinux.org> <20110204222150.GA29815@altlinux.org> <20110204230024.GB9423@altlinux.org> <20110205054103.GA14181@altlinux.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110205054103.GA14181@altlinux.org> Subject: Re: [devel] Q: debuginfo strip controls & deps X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Feb 2011 02:05:01 -0000 Archived-At: List-Archive: List-Post: On Sat, Feb 05, 2011 at 08:41:03AM +0300, Alexey Tourbin wrote: > Насчет оптимизации зависимостей между подпакетами. Мне совсем недавно > пришло в голову, что зависимости можно оптимизировать ещё сильнее: > а именно, оптимизировать можно не только зависимости, удовлетворённые > через Provides, но и зависимости, удовлетворенные через Requires! Ж-) > > Пусть например пакет rpm требует две зависимости > librpm = 4.0.4-alt16 > libc.so.6()(64bit) > а пакет librpm в свою очередь требует среди прочих зависимость > libc.so.6()(64bit) > > Тогда из пакета rpm можно удалить зависимость на libc.so.6()(64bit). > То есть некоторые зависимости подпакетов иногда "отоваривать", как говорит > лидер нации, через базовый подпакет. Что в принципе имеет смысл. > > Но там сложнее сделать, поскольку две Requires зависимости нельзя > сравнивать напрямую. И это не будет хорошо работать с set-версиями, > потому что обычно будут разные/несравнимые подможества. А оптимизация > зависимостей делается прежде всего, чтобы снизить нагрузку на > pkglist/pkgcache и apt, которая подскочила из-за set-версий. > > В общем пока не решил, делать ещё одну оптимизацию зависимостей или нет. > Предлагаю дождаться окончания i586-пересборки, чтобы оценить степень > разлома. Потом можно решить, что нужно будет достаточно быстро доделать > или переделать. Впрочем, glibc вроде бы можно собирать в любом случае. Выложил предварительную реализацию (в ней есть что исправить, но она уже работает). Вот пример оптимизации. $ compare_packages -i -a --requires /home/at/RPM/RPMS/x86_64/xz-5.0.0-alt2.x86_64.rpm --- /tmp/.private/at/compare_packages.g3rVQA50Yd/1 2011-02-06 04:58:51.643607248 +0300 +++ /tmp/.private/at/compare_packages.g3rVQA50Yd/2 2011-02-06 04:58:51.627608733 +0300 @@ -1,13 +1,8 @@ /lib64/ld-linux-x86-64.so.2 -libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) -libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.6)(64bit) libc.so.6(GLIBC_2.7)(64bit) liblzma = 5.0.0-alt2 -liblzma.so.5()(64bit) >= set:keZ91URZaAr4qmA33KZiAIxjIAjEn7NatiLJUn4TV4uFJQi2NM3bXAi8wGbUJG9kZz4dcZuysjASmPqbf13FsMl0 libpthread.so.0(GLIBC_2.2.5)(64bit) rpmlib(PayloadIsLzma) -rpmlib(SetVersions) -rtld(GNU_HASH) $ Здесь по первому правилу, которое уже реализовано, удаляется зависимость на liblzma.so.5()(64bit) - т.к. пакет liblzma УДОВЛЕТВОРЯЕТ эту зависимость. А остальные зависимости удалены по новому правилу - подпакет liblzma УЖЕ ТРЕБУЕТ эти зависимости. Интересно, что rpmlib(PayloadIsLzma) не удаляется - эта зависимость добавляется в самом конце (прямо перед записью пакета на диск).