From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.2.5 To: X-PHP-Originating-Script: 0:func.inc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Tue, 28 Feb 2012 22:59:42 +0400 From: Vitaly Kuznetsov In-Reply-To: <20120228174115.GB17879@dad.imath.kiev.ua> References: <20120227181316.GA8941@dad.imath.kiev.ua> <20120227234209.GB5185@altlinux.org> <20120228174115.GB17879@dad.imath.kiev.ua> Message-ID: <97f79e7e88e373226e1272fbd9afc078@hadoop.ru> X-Sender: vitty@altlinux.ru User-Agent: Roundcube Webmail/0.5.3 Subject: Re: [devel] I: arepo: next steps 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: Tue, 28 Feb 2012 18:59:57 -0000 Archived-At: List-Archive: List-Post: On Tue, 28 Feb 2012 19:41:15 +0200, Igor Vlasenko wrote: > On Tue, Feb 28, 2012 at 04:32:57PM +0400, Vitaly Kuznetsov wrote: >> спасибо, это как раз то, что я хотел написать. Я попробую в >> ближайшее время поиграться с python-rpm и понять, можем ли бы им >> сформировать правильную rpm-ку. Если сможем, то мы получим очень >> приличную скорость. Это важно как минимум для бутстрапа (когда мы >> будем перепаковывать весь репозитоий). > > О, замечательно. В этом случае, мне, наверное, > нет смысла копаться в коде arepo-1, который вскоре, > похоже, полностью устареет. > > Будем ждать arepo-2 :) В взглянул на python-rpm и rpmrebuild. Первый, похоже, вообще не имеет интерфейса для записи заголовков rpm. Второй решает немного другую задачу - восстанавливает rpm из установленного состояния (т.е. проворачивает фарш обратно). Нам нужен немного другой инструмент: взять rpm-файл, отредактировать заголовки и содержимое, сохранить как новый rpm-файл. Мне пока такой найти не удалось. Вижу два возможных варианта решения: 1) Реализовать такой инструмент на librpm-е (муторно) 2) Таки билдить результирующий rpm с помощью rpmbuild-а. В общем случае данный подход требует новой хешерницы для каждого пакета, но мы можем использовать дополнительное знание о том, что спек-файл является вовсе не произвольным, а только что нами сформированным. Его можно попытаться сформировать таким образом, чтобы никакого выполнения произвольного кода не происходило (выписываем все Requires/Provides вручную, глушим все автопоисковики,...). Тогда будет возможно всю перепаковку для всей репозиторной транзакции (или вообще для всего репозитория в период бутстрапа) выполнить последовательно в одной и той же хешернице: создаём спек, специальным образом извлекаем файлы из исходного пакета, формируем новый пакет. Это должно быть достаточно быстро.