[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