From: "Dmitry V. Levin" <ldv@altlinux.org> To: ALT Devel discussion list <devel@lists.altlinux.org> Subject: Re: [devel] оптимизация сборочных зависимостей Date: Wed, 30 Aug 2006 20:43:52 +0400 Message-ID: <20060830164352.GA32596@basalt.office.altlinux.org> (raw) In-Reply-To: <20060830162849.GD11420@localhost.localdomain> [-- Attachment #1: Type: text/plain, Size: 2753 bytes --] On Wed, Aug 30, 2006 at 08:28:49PM +0400, Alexey Tourbin wrote: > 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" packages - это список имён пакетов, которые использовались для сборки посредством files. > 148 cat "$WORKDIR/packages" | > 149 xargs -r rpmquery --qf '[%{REQUIRENAME}\n]' -- | > 150 sort -u >"$WORKDIR/reqs" reqs - это все requires пакетов packages. > 152 cat "$WORKDIR/packages" | > 153 xargs -r rpmquery --qf '[%{PROVIDENAME}\t%{NAME}\n]' -- | > 154 sort -k2,2 -k1,1 -u >"$WORKDIR/provs" provs - это всё provides пакетов packages в виде пар "ProvideName PackageName". > 156 comm -23 "$WORKDIR/packages" "$WORKDIR/reqs" >"$WORKDIR/package-reqs" package-reqs - это пакеты packages за вычетом тех, имена которых совпали с requires пакетов packages. В частности, эта операция выкидывает простые циклы целиком. > 158 join -1 1 -2 2 -o 1.1 "$WORKDIR/reqs" "$WORKDIR/provs" | > 159 sort -u >"$WORKDIR/reqs_provs" reqs_provs - это те requires пакетов packages, которые есть среди provides пакетов packages. > 160 comm -23 "$WORKDIR/package-reqs" "$WORKDIR/reqs_provs" \ > 161 >"$WORKDIR/package-reqs-provs" package-reqs-provs - это пакеты package-reqs за вычетом тех, имена которых совпали с requires, перечисленными в reqs_provs. В частности, эта операция выкидывает все циклы полностью. [...] > join в строке 158 делает нечто отличное: ты соединяешь > reqs<ВиртуальнаяЗависимость> на provs<ИмяПакета>, а на выходе хочешь > получить provs<ВиртуальнаяЗависимость>. Это выглядит подозрительно, > потому что происходит соединение по полям разных типов. Почему разных? Имя пакета - это частный случай виртуальной provides. [...] > Какой в этом смысл? Минимизация мощности множества зависимостей. Алгоритм нечестный в том смысле, что он выкидывает циклы. Поскольку исходное множество конечно, всегда есть алгоритм полного перебора всех подмножеств данного множества, из которых выбирается любое удовлетворяющее критерию отбора. Очевидно, что этот алгоритм непрактичен. Полагаю, что существует алгоритм приемлемой вычислительной сложности, но мне он не известен. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2006-08-30 16:43 UTC|newest] Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top 2006-08-30 14:58 [devel] libpixman Alexey Tourbin 2006-08-30 15:01 ` Dmitry V. Levin 2006-08-30 15:10 ` Alexey Tourbin 2006-08-30 15:20 ` Valery V. Inozemtsev 2006-08-30 15:29 ` Dmitry V. Levin 2006-08-30 15:36 ` Valery V. Inozemtsev 2006-08-30 15:41 ` Dmitry V. Levin 2006-08-30 16:00 ` Alexey Tourbin 2006-08-30 16:10 ` [devel] оптимизация сборочных зависимостей Dmitry V. Levin 2006-08-30 16:28 ` Alexey Tourbin 2006-08-30 16:43 ` Dmitry V. Levin [this message] 2006-08-30 18:30 ` Alexey Tourbin 2006-08-30 20:12 ` Sergey Vlasov 2006-08-30 21:01 ` Alexey Tourbin 2006-08-30 22:48 ` Alexey Tourbin 2006-08-30 23:19 ` Alexey Tourbin 2006-08-31 0:17 ` Денис Смирнов 2006-08-31 4:05 ` Alexey Tourbin 2006-09-05 13:10 ` [devel] оптимизация сборочных зависимостей (buildreq) Ildar Mulyukov 2006-09-05 13:48 ` Alexey Tourbin 2006-09-05 14:57 ` Ildar Mulyukov 2006-09-05 18:15 ` Michael Shigorin 2006-09-05 19:08 ` Alexey Tourbin 2006-09-05 19:15 ` Michael Shigorin 2006-09-06 4:06 ` Ildar Mulyukov 2006-08-30 23:45 ` [devel] оптимизация сборочных зависимостей Dmitry V. Levin 2006-08-31 0:27 ` Alexey Tourbin 2006-08-31 0:59 ` Alexey Tourbin 2006-09-02 16:34 ` Michael Shigorin 2006-09-03 2:12 ` Alexey Tourbin 2006-08-30 19:07 ` Alexey Tourbin 2006-08-30 20:29 ` Alexey Tourbin 2006-08-30 20:57 ` Damir Shayhutdinov 2006-08-30 21:17 ` Dmitry V. Levin 2006-08-31 12:29 ` Sergey Vlasov 2006-09-05 14:28 ` Alexey Tourbin 2006-09-03 4:36 ` Alexey Tourbin 2006-09-03 6:34 ` Alexey Tourbin 2006-09-03 6:52 ` Alexey Tourbin 2006-09-03 6:56 ` Alexey Tourbin 2006-09-03 13:38 ` [devel] readlink Dmitry V. Levin 2006-09-04 7:30 ` Alexey Tourbin 2006-09-03 17:08 ` [devel] оптимизация сборочных зависимостей Michael Shigorin 2006-09-03 17:39 ` Damir Shayhutdinov 2006-09-04 7:26 ` Alexey Tourbin 2006-09-04 11:30 ` Денис Смирнов 2006-09-04 9:42 ` [devel] xargs usage (Was: Re: оптимизация сборочных зависимостей) Andrei Bulava 2006-09-04 9:50 ` Alexey Tourbin 2006-09-03 10:57 ` [devel] оптимизация сборочных зависимостей Alexey Tourbin 2006-09-03 17:07 ` Michael Shigorin 2006-09-04 11:14 ` [devel] esound (was: Re: оптимизация сборочных зависимостей ) Igor Zubkov 2006-09-02 16:24 ` [devel] buildreq2 (was: libpixman) Michael Shigorin 2006-09-03 1:29 ` Alexey Tourbin 2006-09-03 17:11 ` Michael Shigorin 2006-09-03 2:00 ` [devel] buildreq FRs Alexey Tourbin 2006-09-03 17:16 ` Michael Shigorin 2006-08-30 19:28 ` [devel] libpixman Kirill Maslinsky 2006-08-30 19:38 ` Andrey Rahmatullin 2006-08-30 19:52 ` Alexey Tourbin 2006-08-30 20:20 ` Sergey Vlasov 2006-08-30 20:31 ` Alexey Tourbin 2006-08-31 20:06 ` [devel] buildreq ignore.d/fonts-cache Alexey Tourbin 2006-09-02 16:42 ` Michael Shigorin 2006-09-02 17:17 ` Dmitry V. Levin 2006-08-31 5:36 ` [devel] libpixman Andrey Rahmatullin 2006-08-31 6:11 ` Alexey I. Froloff 2006-09-02 16:40 ` Michael Shigorin 2006-08-30 19:57 ` [devel] buildreq при каждой сборке? Kirill Maslinsky 2006-08-30 19:39 ` [devel] libpixman Alexey Tourbin 2006-08-30 19:45 ` Konstantin A. Lepikhov 2006-08-30 19:53 ` Alexey Tourbin 2006-08-30 20:19 ` Kirill Maslinsky
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=20060830164352.GA32596@basalt.office.altlinux.org \ --to=ldv@altlinux.org \ --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