Ports/arm/Experience

Материал из ALT Linux Wiki
< Ports‎ | arm

kas@

Bootstrap лучше делать на каком-нибудь готовом порту. Очень облегчает жизнь. Я использовал неофициальный порт Debian ARM EABI. Кстати, на MIPS что-нибудь типа EABI есть?

Собирал я так:

  1. в Debian пересобрал руками пропатченый на тему ARM альтовский rpm, поставил и снова пересобрал rpm уже rpm'ом. Дальнейшая сборка идет только rpm'мом. На этапе Bootstrap'а допустимо подсовывания некоторого количества костылей. Первоначально базу rpm'ок собирал по принципу "лишь бы собралось".
  2. пересобрал toolchain (binutils, gcc, glibc), устанавливая в систему по мере сборки. Тулчейну и опциям gcc в rpm следует уделить особое внимания, чтобы с одной стороны полученный дистрибутив запускался на как можно большем количестве железа, с другой - не терял много производительности из-за поддержки устаревшего железа. Я для этого покопался в Debian'овских рассылках (это ж opensource -- у кого хочу, у того и тырю:). Ещё нужно проследить, что бы использовались современные технологии. Поясню: в случае ARM есть два ABI: EABI (Embedded ABI) и OABI (Old/Obsoleted ABI). Собирать под OABI сейчас нецелесообразно, ибо со временем он отомрёт. Портов полноразмерных дистрибутивов под EABI не так много (официального порта Debian, к примеру, ещё нету), следовательно придёться ходить по минам, но это того стоит ;)
  3. Пересобрал все не-noarch пакеты, требуемые для работы hasher'а. У меня получилось примерно 130-150 исходных пакетов. Естественно на этом этапе я безжалостно резал BuildRequires, чтобы не пересобирать половину xorg и gnome'а ;). Хотя в случае ALT это не так сложно -- много где есть %if_enabled/%if_with. С Федорой мучались больше.
  4. Дальше пересобираются всё те же 130-150 пакетов, но теперь в hasher'е с разворачиванием всех BuildRequires и фиксированием изменений (вот где git здорово помогает). Итого у меня получилось около 350 исходных пакетов. Местами хорошо помучился: например с большими кольцами в BuildRequires. Типа "tetex хотят все, tetex хочет всех" ;)
  5. После этого уже можно работать с community для включения изменений в пакеты и включения порта в Sisyphus.