On Thu, Aug 30, 2007 at 04:07:20PM +0400, Alexey Tourbin wrote: > On Thu, Aug 30, 2007 at 03:06:41PM +0400, Alexey Tourbin wrote: > > Хорошо. Будем исходить из отказа от src.rpm и большой неопределенности > > на стадии запроса собрать пакет из gear. КТО-ТО попросил собрать > > КАКОЙ-ТО gear-репозитарий. Применять ACL на данном этапе глупо, > > gear-репозитарий может называться как угодно, и мы НЕ ЗНАЕМ, что > > же из него в конечном счёт может собраться. Единственный способ > > это выяснить -- собрать gear-репозитарий. > > Кстати, я не понял, как вы (ldv и legion) собираетесь реализовать > проверку наследования коммитов. Проверка наследования коммитов > подразумевает, что есть публичный репозитарий с точно таким же > именем, в котором хедом является предыдущая (текущяя) сборка. > Но имя репозитария это по сути имя каталога, оно ничем не > ограничено, и нет никаких ограничений на соответствие между > именем репозитария и rpm-пакетами, которые из него собираются. > > Допустим, я опубликовал perl2.git в котором нет наследования > от perl.git. Публичного репозитария perl2.git ещё нету, поэтому > проверка наследования "для нового пакета" отключается, а собранные > пакеты perl-* просто пройдут в сизиф? Вот решение проблемы: требовать, чтобы имя gear-репозитария в точности совпадало с именем src.rpm пакета, который получился при сборке. --- pkg_build_status.txt- 2007-08-30 15:30:38 +0000 +++ pkg_build_status.txt 2007-08-30 15:34:17 +0000 @@ -24,6 +24,10 @@ check_build_status :: build_arch_status+ -> pkg_build_status | reject all primary arches must build (hasher_exit_status = 0 for primary_arches) all srpm_NSVR must be the same (map this.srpm_NSVR build_arch_status+ |sort -u |wc -l => 1) + require that $(basename gear-request.gear-repo .git) exactly matches srpm_NSVR.name + if has public gear-request.gear-repo; then + check commit ancestry $(public gear-repo) gear-request.commit-id + fi if at least one RPMS.hasher/*.rpm is noarch; then # noarch packages must build essentially the same on all arches # otherwise we DO NOT KNOW how to move them to sisyphus В этом случае мы уже убедились, что пакет собрался на всех основных архитектурах, и что на всех архитектурах srpm_NSVR совпадает. Значит, теперь мы точно знаем "базовое имя пакета" (имя src.rpm пакета), даже с некоторой защитой от фальсификации имени. Тут получается вот какая особенность: проверить наследование коммитов можно ТОЛЬКО ПОСЛЕ ТОГО, КАК ПАКЕТ УЖЕ СОБРАЛСЯ (причем, на всех основных архитектурах). Это противоречит нашему интуитивному представлению о том, что наследование коммитов нужно проверять до того, как собирать пакет. Ну противоречит и ладно. Не вижу в этом большой проблемы. Квантовая механика тоже противоречит инуитивным представлениям, причем неким похожим образом -- "нельзя узнать раньше времени, пока оно таки не случится". http://en.wikipedia.org/wiki/Wavefunction_collapse http://en.wikipedia.org/wiki/Double-slit_experiment