On Thu, Mar 27, 2008 at 02:53:40AM +0300, Dmitry V. Levin wrote: > Не пора ли нам, согласно плану выпуска 4.1 > http://freesource.info/wiki/AltLinux/Branches/41 > всё-таки объявить freeze? У меня дело с окамлем пошло в гору, но как сайд эффект ничем кроме окамля в ближайшие несколько дней я заниматься не смогу. А то вылетит из головы или станет не интересно. Прошу пока не удалять мои пакеты в orphaned, которые очень долго не пересобираются (perl-Gtk2), я к ним обязательно вернусь. Прогресс по части окамля таков: 1) версионные зависимости на сам окамль должны быть не = %version, а $MAJOR.$MINOR (т.е. не 3.10.2, а 3.10). В любом случае, зависимость на версию окамля очень мало гарантирует (на самом деле, версия самого окамля в окамлевских файлах нигде не учитывается). 2) Связь между окамлевскими файлами (внутренние зависимости) осуществляются на уровне md5-сумм *.cmi интерфейсов. Я подсмотрел, как собирают окмль в федоре. В окамле есть утилита objinfo (ocamlobjinfo), которая по умолчанию не устанавливается, но это легко исправить. Это утилита показывает внутренние зависимости на *.cmi интерфейсы и их md5 суммы. $ ocamlobjinfo /usr/lib/ocaml/weak.cmi File /usr/lib/ocaml/weak.cmi Module name: Weak Interfaces imported: 6d509339939dea165d9dfd44d8a6a035 Weak 8ba3d1faa24d659525c9025f41fd0c57 Pervasives 083f2c94b44ff4e0b3220aaea6a783b4 Hashtbl $ Любой *.cmi интерфейс условно загружает сам себя, откуда лего узнать md5 сумму его самого; а такжа реально загружает другие интерфейсы, откуда легко узнать md5 суммы зависимостей. Я предлагаю отображать внутренние окамлевские md5-зависимости в виртуальные зависимости пакетов. (Похожим образом, но всё-таки немного по-другому, сделано в федоре.) А именно, формат зависимостей на интерфейсы может иметь вид: ocaml(cmi) = V-rel где cmi -- имя модуля, V -- $MAJOR.$MINOR окамля, rel -- первые 8 символов md5 суммы (uppercased). Пример (preview): $ pwd /home/at/git.alt/rpm-build-ocaml $ ./scripts/ocaml.prov /usr/lib/ocaml/weak.cmi ocaml(Weak) = 3.10-6D509339 $ (Виртуальные зависимости тоже могут иметь релиз, чем иногда удобно воспользоваться.)