LINUX.ORG.RU

быстрая инкрементальная сборка ядра FreeBSD

 , ,


0

2

Там есть опция KERNFAST=1 чтобы не пересобирать всё, но он всё равно лазит по исходникам всех модулей в поисках изменённых файлов, хоть ничего и не компилируя в них, но всё равно долго (целых 3 минуты вместо 15 секунд), при том что перекомпилировать надо только один файл в kern/. Можно ли это штатно и просто исправить? Аналогично в installkernel - он заново ставит все неизменившиеся модули.

★★★

Ответ на: комментарий от mord0d

Компилятор вызывается 2-3 раза - один раз чтобы пересобрать изменённый файл и ещё 1-2 раза линкует. Всё остальное время тратится не компилятором, а самим make, на бесполезный обход дерева исходников. А ещё на бесполезное копирование неизменившихся бинарников модулей при installkernel-е. Как CCACHE на это повлияет, если это кеш компилятора?

firkax ★★★ ()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от dsl

Хм, кажется DIRDEPS из ссылки похоже на то что надо. Но я надеялся что там есть какой-нить ключ «не трогать модули и считать их уже собранными/установленными» без доп. возни.

firkax ★★★ ()
Ответ на: комментарий от firkax

А как по твоему make должен узнать надо что-то пересобирать или нет не обходя исходники указанные в зависимостях?

cobold ★★★★ ()
Ответ на: комментарий от cobold

От ключа который я ему бы указал - «модули не менялись, верь мне и ничего не проверяй». Имеется ввиду именно этап когда он начинает сборку модулей, после того как скомпилировал основное ядро, об этом там надпись даже какая-то есть. При этом остальные исходники (их намного меньше) пусть обходит.

firkax ★★★ ()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Тогда только писать свои mk-обёртки вокруг основного Makefile.

mord0d ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.