Ports/arm/Experience: различия между версиями
(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. | |||
Версия от 19: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.