ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Igor Vlasenko <vlasenko@imath.kiev.ua>
To: devel@lists.altlinux.org
Subject: [devel] I: DistroDB. ч.1 - Введение.
Date: Wed, 15 May 2013 22:01:17 +0300
Message-ID: <20130515190117.GA24411@dad.imath.kiev.ua> (raw)

DistroDB и DistroDB utils.

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

хотел бы продолжить рассказ о стеке решений для автоматизации.

Напомню, прошлый раз я выделял
* библиотеки и утилиты для преобразования или создания отдельного пакета.
* библиотеки и утилиты для обработки пакетов по списку на уровне репозиториев.
* утилиты обслуживания автономных нод (наподобие autoports.altlinux.org или
autoimports.altlinux.org).

Сегодня хочу рассказать о ведущейся разработке DistroDB utils.

Что это такое?

Вкратце, это утилиты для генерации и поддержания списков задач
для автономных нод и баз данных distromap в актуальном состоянии.

== DistroDB. Введение.

Библиотеки и утилиты для преобразования или создания отдельного пакета -
вещь достаточно сложная. Со временем в них выделились в отдельные компоненты
такие подсистемы, как 

* SourceAnalyzer - библиотеки для генерации сборочных зависимостей
приложения по его исходным текстам (отдельно можно использовать 
через утилиту buildreq-src; собираюсь также встроить эту 
функциональность в утилиты общего назначения srpmnmu и srpmtool).

* DistroMap - базы данных и библиотеки для трансляции имен 
бинарных и исходных пакетов из одного дистрибутива в другой.
В частности, используется для трансляции сборочных и установочных
зависимостей в утилитах импорта.


Для работы SourceAnalyzer нужна база DistroDB.
Процесс создания баз DistroDB встроен в repocop, который ежедневно 
обновляет и выкладывает свежую базу DistroDB для скачивания.
Скачиваемый архив сейчас весит около 3мб.

Для упрощения скачиваения есть специальные утилиты

distrodb-update-repocop-db-altlinux-sisyphus -
скачивает базу DistroDB для Сизифа и распаковывает ее 
в ~/.cache/distrodb/altlinux/sisyphus

distrodb-update-repocop-db-altlinux-t6 - то же, но для t6.
~/.cache/distrodb/altlinux/t6

С появлением t7 будет и база DistroDB для t7.

база DistroDB содержит информацию в виде текстовых
таблиц, предназначенную для SourceAnalyzer.
Например, таблица devel-libs содержит информацию,
в каких пакетах содержится данная библиотека.
Записи там имеют вид
2geom   lib2geom-devel
3dkit   svgalib-devel
3ds     lib3ds-devel
...
означают, например, что -l3dkit, т.е. lib3dkit.so, 
содержится в пакете svgalib-devel.

Есть таблица path для имен executable приложений в default $PATH.
Есть таблица gir для .gir файлов, таблица headers для файлов в /usr/include,
таблица pkg-config для имен pkg-config файлов, таблицы perl, python2 и python3,
для поддержки этих скриптовых языков, таблица provides,
таблица sourcename для быстрого поиска имени исходного пакета по имени бинарного пакета,
таблица srcname2binnames со списком имен бинарных пакетов для данного имени исходного пакета,
и ряд других таблиц.

DistroDB находится в постоянной разработке, так же, как и SourceAnalyzer.
Например, сейчас в SourceAnalyzer еще нет поддержки ruby. Но когда она появится,
то она будет опираться на соответствующие таблицы для ruby в DistroDB.

repocop-report-distrodb является стандартным предпочтительным методом для генерации
DistroDB для репозитория пакетов. В настоящее время для генерации DistroDB
хватает той информации, которая содержится в rpm headers пакета, без заглядывания 
в собственно файлы пакета. 
Соответственно, в составе DistroDB utils существует и развивается другая утилита, 
которая создает большую часть таблиц базы DistroDB либо из индексов apt, 
либо из сырого набора бинарных пакетов.
Однако достаточно очевидно, что по мере развития SourceAnalyzer информации из 
rpm headers уже не будет хватать. 

Для примера, чтобы корректно отобразить модули питона, которые загружаются директивой
import, в имена пакетов, нужно еще заглядывать внутрь .so и .pth файлов.

Это же, кстати, хорошо было бы научить делать и python*.prov,
чтобы он находил там provides.

Поэтому repocop-report-distrodb в перспективе более удобен,
там легче заглядывать внутрь пакетов.



-- 

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


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



                 reply	other threads:[~2013-05-15 19:01 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130515190117.GA24411@dad.imath.kiev.ua \
    --to=vlasenko@imath.kiev.ua \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git