Ports/arm/Experience
Материал из ALT Linux Wiki
(Различия между версиями)
(Import from freesource.info) |
м (some wikification; +cat) |
||
Строка 1: | Строка 1: | ||
[[Category:Sisyphus]] | [[Category:Sisyphus]] | ||
- | + | [[Категория:ARM]] | |
- | === kas@ === | + | === [http://lists.altlinux.org/pipermail/devel-ports/2007-August/000233.html kas@] === |
- | + | Bootstrap лучше делать на каком-нибудь готовом порту. Очень облегчает жизнь. Я использовал неофициальный порт Debian ARM EABI. Кстати, на MIPS что-нибудь типа EABI есть? | |
- | жизнь. Я использовал неофициальный порт 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. | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + |
Версия 16:15, 22 декабря 2011
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.