Bootstrap

Материал из ALT Linux Wiki
Версия от 00:19, 8 февраля 2016; MichaelShigorin (обсуждение | вклад) (написано по мотивам Ports/arm/Experience и e2k)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

«Раскрутка» ALT Linux с нуля

...на новой архитектуре либо при необходимости обеспечить пересборку «с нуля» по иному поводу.

Типичная процедура

Начинаем с какой-либо существующей бинарной среды, пригодной для сборки содержимого базовой сборочной системы сизифа (rpm-build и его зависимости); см., например, опыт портирования на ARM.

Поскольку на первых порах собираемое будет устанавливаться в неё же, есть смысл работать в чруте, представляющем из себя копию корневой файловой системы, со смонтированным /proc.

  1. сперва собираем rpm
    • для новой архитектуры потребуется дополнить installplatform, rpmrc.in
    • может потребоваться подпирание по месту, отрыв статической сборки и т.п.
    • после успешной сборки устанавливаем полученное и собираем rpm.rpm
  2. затем собираем toolchain (binutils, gcc, glibc)
    • устанавливаем в сборочное окружение по мере сборки
  3. собираем все архитектурнозависимые пакеты, необходимые для сборки hasher
    • rpm --rebuild --nodeps
    • см. далее про ручки помимо --with bootstrap
    • основное отрываемое: static, doc, apidocs, selinux, ssl, python, java
  4. запустив hasher, пересобираем его сборочные зависимости в нём самом (порядка 150 пакетов)
    • разворачиваем BuildRequires по мере возможности, продолжая на этой стадии отключать избыточное
    • по возможности дополняем в спеках набор ручек для отключения лишнего (тоже см. ниже)
  5. не откладывая в долгий ящик, стараемся пропихнуть полученные патчи в сизиф
  6. продолжаем работу над пополнением порта

Применяем ручки

Для начальной сборки при помощи rpm могут быть полезны следующие уже распространённые в сизифе ключи сборки пакетов:

  • --disable check --disable static --without doc --without apidocs --without profile --disable selinux --without selinux --disable java --without java --without python3 --disable ldap --disable udev

и подобное (возможно, в т.ч. cxx/cpp, nls, included_gettext).

Для конкретных пакетов могут быть реализованы иные, например:

  • vim: --disable gui_gnome2 --disable gui_gtk2 --disable gui_neXtaw --disable perlinterp --disable rubyinterp --disable tclinterp --disable luainterp --disable gui_any
  • python: --without valgrind --without tk

при этом:

  1. вполне возможно дополнить и другими ручками, но сперва лобовой --nodeps на имеющемся сборочном окружении
  2. хорошо бы по возможности приводить их к единой системе и фиксировать здесь
  3. тесты полезны в нормальном режиме, но занимают существенное время, а нередко требуют дополнительных BR или обламываются по мелочам (один перловый тест из ~6000, ага)

Ссылки