Go to file
Michael Shigorin b474bff468 iso.mk: low space hint on build failure
Just in case the build.log will be inobvious, and it's easy to diagnose
automatically.  Thanks Andrey Stroganov for this use case.

Thanks for improving the initial implementation go to raorn@ for kind
commit lynch and to Yuri Bushmelev for actually suggesting something
more concise.

BTW the "1024" magic number was taken out of thin air:
the "no free space" errors are most likely to happen while
forming/populating a chroot (apt/rpm errors out) and chroots are
roughly two orders of magnitude heftier than a megabyte.
2011-11-04 16:15:31 +02:00
bin iso.mk: low space hint on build failure 2011-11-04 16:15:31 +02:00
doc doc/: minor update 2011-11-04 16:15:30 +02:00
features.in syslinux: trivial cleanup 2011-11-04 16:15:31 +02:00
image.in ensure that distcfg.mk gets included once at most 2011-11-04 16:15:30 +02:00
pkg.in profile.mk: export PATH including bin/ 2011-11-04 16:15:30 +02:00
sub.in initial features.in/cleanup 2011-11-04 16:15:30 +02:00
.gitignore kernel and BUILDDIR fixes 2011-11-04 16:15:29 +02:00
clean.mk clean.mk and friends: introduced CLEAN control variable 2011-11-04 16:15:30 +02:00
COPYING actually released as free software 2011-11-04 16:15:30 +02:00
distro.mk server-ovz.iso: employ proper cleanup 2011-11-04 16:15:30 +02:00
functions.mk avoid setting GLOBAL_* altogether 2011-11-04 16:15:30 +02:00
iso.mk iso.mk: low space hint on build failure 2011-11-04 16:15:31 +02:00
libdistro.mk stage2 based live subprofiles, updated docs 2011-11-04 16:15:30 +02:00
log.mk clean.mk and friends: introduced CLEAN control variable 2011-11-04 16:15:30 +02:00
Makefile Makefile: make everything 2011-11-04 16:15:30 +02:00
profile.mk ensure that distcfg.mk gets included once at most 2011-11-04 16:15:30 +02:00
README COMMON_PACKAGES and SYSTEM_PACKAGES 2011-11-04 16:15:30 +02:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

see also http://www.altlinux.org/Mkimage/Profiles/next

quickstart: make server-base.iso
(NB: requires configured http://en.altlinux.org/Hasher)

configurables: ~/.mkimage/profiles.mk,
see doc/profiles.mk.sample and libdistro.mk

license: GPLv2+, see COPYING

Концепция:
- метапрофиль служит репозиторием для построения индивидуального
  профиля, по которому создаётся итоговый дистрибутив
- для одноразовых модификаций можно подправить сгенерированный
  профиль, для долгосрочной разработки стоит вливать правки
  в метапрофиль (что требует больше навыков и времени)

Особенности:
- метапрофиль может быть полностью read-only при сборке
- для сборки подыскивается предпочтительно tmpfs
- в профиль копируются только нужные объекты;
  он автономен относительно метапрофиля

Стадии работы:
- инициализация дистрибутивного профиля
- сборка конфигурации дистрибутива
- наполнение дистрибутивного профиля
- сборка дистрибутива

Объекты:
- дистрибутивы:
  + описываются в distro.mk
  + могут основываться один на другом
  + включают один или более субпрофилей по надобности
  + желательно избегать множественного наследования, см. тж. фичи
- субпрофили:
  + список собирается в $(SUBPROFILES)
  + базовые комплекты помещены в подкаталогах под sub.in/;
    их наборы скриптов могут расширяться фичами
    - stage1: propagator, ядро инсталятора и initrd в т.ч. с firmware
    - stage2: базовый live-образ (и модули ядра, соответствующие stage1);
      используется только с модификаторами (см. соответствующие фичи):
      + stage2/install2: инсталятор
      + stage2/live: LiveCD
      + stage2/rescue: спасательная система
    - main: пакетная база к инсталяции (обязательная и дополнительная)
- фичи:
  + список собирается в $(FEATURES)
  + законченные блоки функциональности (или наборы таковых)
  + описываются в индивидуальных features.in/*/config.mk
  + могут зависеть друг от друга и требовать субпрофили
  + при сборке $(BUILDDIR) содержимое указанных в $(FEATURES) фич
    (подкаталоги, соответствующие входящим в дистрибутив субпрофилям
    под их итоговыми названиями -- например, live, а не stage2/live) 
    добавляется в профиль; затем выполняются generate.sh, generate.mk
- списки пакетов (*_LISTS): просьба по возможности избегать дублирования
  NB: перечисленные в этих переменных файлы автоматически копируются
  в порождаемый профиль => не следует указывать пакаджлисты напрямую
- индивидуальные пакеты (*_PACKAGES): следует крайне осторожно пользоваться
  SYSTEM_PACKAGES -- эти пакеты попадут во все стадии, в том числе в образ
  чувствительной к объёму install2 (в stage1 -- только в инструментальный
  чрут); применяйте для того, что обязано быть и в инсталяторе, и в готовой
  системе -- и не путайте с COMMON_PACKAGES (main, live, rescue)

Результат:
- при успешном завершении сборки образ называется сообразно
  дистрибутиву и укладывается в $(IMAGEDIR):
  + указанный явно,
  + либо ~/out/ (если возможно),
  + или $(BUILDDIR)/out/ иначе