[devel] оптимизация сборочных зависимостей
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Авг 30 20:28:49 MSD 2006
On Wed, Aug 30, 2006 at 08:10:50PM +0400, Dmitry V. Levin wrote:
> > (Алгоритм оптимизации BuildRequires обсуждался вчера в частной
> > переписке. Правда, спросонья я потерял к нему интерес. Если это
> > интересно кому-то ещё, тогда можно перенести обсуждение сюда.)
>
> Думаю, что лучше перенести сюда - вдруг среди нас есть специалист/практик
> по теории графов?
Тогда повторю вопрос.
145 "$PACKAGEOF" -f "$WORKDIR/files" >"$WORKDIR/packages"
146 sort -u -o "$WORKDIR/packages" "$WORKDIR/packages"
147
148 cat "$WORKDIR/packages" |
149 xargs -r rpmquery --qf '[%{REQUIRENAME}\n]' -- |
150 sort -u >"$WORKDIR/reqs"
151
152 cat "$WORKDIR/packages" |
153 xargs -r rpmquery --qf '[%{PROVIDENAME}\t%{NAME}\n]' -- |
154 sort -k2,2 -k1,1 -u >"$WORKDIR/provs"
155
156 comm -23 "$WORKDIR/packages" "$WORKDIR/reqs" >"$WORKDIR/package-reqs"
157
158 join -1 1 -2 2 -o 1.1 "$WORKDIR/reqs" "$WORKDIR/provs" |
159 sort -u >"$WORKDIR/reqs_provs"
160 comm -23 "$WORKDIR/package-reqs" "$WORKDIR/reqs_provs" \
161 >"$WORKDIR/package-reqs-provs"
Вопрос про join в строке 158. Допустим, что мы оптимизирем список из
двух пакетов: sh и glibc-core (без списка ignore). Список reqs в
упрощенном виде выглядит так:
reqs <ВиртуальнаяЗависимость>
libc.so.6
Список provs в упрощенном виде выглядит так:
provs <ВиртуальнаяЗависимость, ИмяПакета>
libc.so.6 glibc-core
/bin/sh sh
Цель оптимизации предположительно состоит в том, чтобы исключить
glibc-core, потому что его "вытягивает" sh.
join в строке 158 делает нечто отличное: ты соединяешь
reqs<ВиртуальнаяЗависимость> на provs<ИмяПакета>, а на выходе хочешь
получить provs<ВиртуальнаяЗависимость>. Это выглядит подозрительно,
потому что происходит соединение по полям разных типов. Затем с помощью
comm в строке 160 ты вычитаешь из списка пакетов package-reqs список
полученных таким образом provs<ВиртуальнаяЗависимость>. Это опять же
выглядит подозрительно -- вычитание множеств с разным типом элементов.
Какой в этом смысл?
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20060830/be3dda27/attachment-0001.bin>
Подробная информация о списке рассылки Devel