[devel] I: girar-nmu util girar-nmu-helper-sort-transaction

Igor Vlasenko vlasenko на imath.kiev.ua
Пн Сен 13 17:49:58 UTC 2010


Уважаемые коллеги!

Коллекция утилит girar-nmu пополнилась утилитой
girar-nmu-helper-sort-transaction.

girar-nmu предназначен для автоматизации всякого
рода пересборок, например, пересборки пакетов,
зависящих от некоторой библиотеки.

пакет можно взять у меня в git:
i=girar-nmu;j=viy; git clone git://git.altlinux.org/people/$j/packages/$i.git $i.git
в Сизиф не выкладываю, так как ни состав, ни функции,
ни названия утилит еще не устоялись.

Сейчас вызов
girar-nmu-prepare --changelog '- rebuild with new haskell' /var/ftp/pub/Linux/ALT/Sisyphus/files/SRPMS/ghc-[a-z]*
подготовит для заливки в сизиф nmu релизы этих пакетов
в виде набора src.rpm + git: 
src.rpm -- для тех, которые заливались как src.rpm,
и клонов git репозиториев с добавленным коммитом нового релиза.
для тех пакетов, которые заливались из git.
другими утилитами это хозяйство можно добавить в task, как
описанно в README.

Это годилось для пересборки пакетов, зависящих от некоторой 
библиотеки, но для пересборки модулей ghc этого мало,
поскольку там важно, в каком порядке добавлять пакеты.

Теперь этому поможет утилита для сортировки пакетов в транзакции 
по зависимостям girar-nmu-helper-sort-transaction.
Это обвязка на perl. Собственно сортировку вынес в сишную утилиту 
girar-nmu-helper-pos-sort. там производится сортировка 
частично упорядоченного множества по транизитивному замыканию 
отношения "больше". отношение "больше" может порождаться 
либо смесью BuildRequires и requires:.
либо чистыми BuildRequires: (опция --no-use-requires).

Есть детекция циклических зависимостей.
вот пример для ghc-*:

girar-nmu-helper-sort-transaction --use-requires /var/ftp/pub/Linux/ALT/Sisyphus/files/SRPMS/ghc-* /var/ftp/pub/Linux/ALT/Sisyphus/files/noarch/RPMS/ghc-* /var/ftp/pub/Linux/ALT/Sisyphus/files/x86_64/RPMS/ghc-* > ghc-dep
cyclic dependencies detected:
ghc

Видим, что кроме ghc, циклических зависимостей нет, 
и это хорошо, иначе обновление ghc было бы без хирургии 
невозможно. Полученный порядок заливки приведен внизу.
--- ghc-dep ---
ghc
ghc-alex
ghc-binary
ghc-bzlib
ghc-deepseq
ghc-extensible-exceptions
ghc-hinotify
ghc-html
ghc-hunit
ghc-mmap
ghc-mtl
ghc-opengl
ghc-parsec
ghc-quickcheck
ghc-regex-base
ghc-utf8-string
ghc-x11
ghc-xattr
ghc-zlib
ghc-happy
ghc-network
ghc-parallel
ghc-regex-posix
ghc-cabal
ghc-ghc-paths
ghc-regex-compat
ghc-x11-xft
ghc-agi
ghc-cabalrpmdeps
ghc-cryptohash
ghc-curl
ghc-glib
ghc-haskeline
ghc-haskelldb
ghc-hscolour
ghc-http
ghc-statevar
ghc-tensor
ghc-testpack
ghc-xhtml
ghc-cairo
ghc-fgl
ghc-hashed-storage
ghc-sha
ghc-gconf
ghc-ghc-events
ghc-gio
ghc-gstreamer
ghc-monadcatchio-mtl
ghc-stm
ghc-cgi-utils
ghc-dataenc
ghc-pango
ghc-svgcairo
ghc-hslogger
ghc-gtk
ghc-gtksourceview2
ghc-soegtk
ghc-cgi
ghc-glade
ghc-gtkglext
ghc-vte
ghc-webkit
ghc-missingh
ghc-threadscope

-- 

Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine



Подробная информация о списке рассылки Devel