From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 23 Aug 2012 10:06:23 +0400 From: Alexey Tourbin To: ALT Linux Team development discussions Message-ID: <20120823060622.GA5634@altlinux.org> References: <20120822195649.GA23099@dad.imath.kiev.ua> <20120822211157.GA15257@t60p.mithraen.ru> <20120822212941.GA1465@altlinux.org> <20120823050344.GA23461@t60p.mithraen.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20120823050344.GA23461@t60p.mithraen.ru> X-Mailman-Approved-At: Thu, 23 Aug 2012 11:22:47 +0400 Subject: Re: [devel] I: repocop test for %{get_version ...} is disabled. 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: Thu, 23 Aug 2012 06:06:24 -0000 Archived-At: List-Archive: List-Post: On Thu, Aug 23, 2012 at 09:03:44AM +0400, Денис Смирнов wrote: > On Thu, Aug 23, 2012 at 01:29:44AM +0400, Алексей Турбин wrote: > AT> Гарантия разрешимости символов, которую дают set-версии, довольно высокая: > AT> в предельном случае, когда по сравнению с предыдущей версией требуется > AT> всего один новый символ, она зафиксирована на уровне не хуже 2^{-10} > AT> т.е. около 0.1%. Когда требуется два новых символа, гарантия уже > AT> подскакивает до милионной. > > Это не такой уж маленький процент при нашей пакетной базе. Однако > увеличение объема индексов apt до создания более эффективной системы, мне > кажется, неприемлимо. Процент довольно маленький - если бы людей лечили с такой эффективностью, мы бы жили в более счастливом мире. Попробуй удалить один используемый символ из библиотеки, проверка срабатывает в среднем в 1535 из 1536 случаев. Это уже на уровне человеческого фактора. Попробуй удалить два используемых символа - проверка срабатывает, грубо говоря, уже всегда. Насчет индексов апта - set-версии составляют в них не более половины. Их удалось ужать до практичного размера. Так что полагаю, что разговоры насчет объема индексов apt и создания "более эффективной системы" политически мотивированы. $ l /var/cache/apt/pkgcache.bin -rw-r--r-- 1 at rpm 58513368 Aug 22 03:31 /var/cache/apt/pkgcache.bin $ strings /var/cache/apt/pkgcache.bin |grep ^set: |wc -c 25803870 $ У меня еще подключен репозиторий x86_64-i586, что делает размер правдоподобным: $ strings /var/lib/apt/lists/_ALT_Sisyphus_x86%5f64_base_pkglist.classic |grep ^set: |wc -c 13820628 $ strings /var/lib/apt/lists/_ALT_Sisyphus_x86%5f64-i586_base_pkglist.classic |grep ^set: |wc -c 11934095 > А вот у заведомо излишних зависимостей есть большая проблема -- они резко > усложняют частичные обновления, что для меня более критичная проблема. Зависимости %get_version не заведомо излишни, а просто они безосновательны и глупы: зависимости должны выражать необходимые и достаточные условия, а с помощью оператора >= можно выразить лишь достаточные условия, да и то с очень большой натяжкой, поскольку сохранение обратной совместимости в новых версиях ничем не гарантируется. Короче, подписчикам следут меньше думать о том, что set-версии не дают "абсолютной гарантии". Гарантия очень большая, а абсолютную гарантию, как известно, дает только страховой полис. That said, интересно подумать, что можно еще извлечь из set-версий. Над чем я думал: можно внести поддержку прототипов по схеме, похожей на C++ mangling - это довольно сложно, но не архисложно. Информацию о прототипах можно извлекать из .debug файлов, которые автоматически создаются на стадии brp-debuginfo. Над чем еще не думал: можно ли таким образом контролировать структуру VMT в C++ (по некоторым данным, к этому классу можно отнести около 1% изученных случаев бинарной несовместимости). > -- > С уважением, Денис > > http://mithraen.ru/