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