Вход:  Пароль:  
FreeSource: Мусорка/AltLinux?/Sisyphus?/devel?/uclibc ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

что-то вроде лабораторного журнала
поток сознания ;)


программа-максимум: собрать под uclibc sisyphus.base.
почему uclibc? легких путей не ищем :).


простой «linux с uclibc» – скачать uclibc-buildroot, make world – все это конечно весело, теперь хочу именно альт =>

  1. сборка средствами дистрибутива
  2. все в rpm
  3. желательно обойтись без правки спеков (кажется, это возможно) – полученный репозитарий должен быть совместимым с sisyphus на уровне исходных пакетов.

todo:


это все теория. возможные проблемы:


буду копать дальше и потихоньку пробовать


30/06: ага. еще можно сачкануть и взять готовый тулчейн, им собрать stage1 репозитария (наверное вручную в chroot хэшера?). кстати есть http://linuxfromscratch.org/~scot/RPM.


01/07: http://billgatliff.com/~bgat/twiki/bin/view/Crossgcc/WebHome


01/07 02:17: http://lists.gnu.org/archive/html/bug-autoconf/2002-10/msg00058.html. для кросса указывать --host и --build без target. $arch/macros ?


подсмотрел скрипты из uclibc-buldroot, теперь grep компилируется и даже не пытается линковаться с libc.so.6 (замечательно!). дальше начинаются зависимости библиотек: warning: libc.so.6, needed by /usr/lib/libpcre.so not found. как их разгребать.


01/07 14:57: придумал. на buildrequires внимания не обращаем – сборка в хост системе, так что имеют значение только бинарные зависимости. строим дерево, начинаем собирать под новый target и устанавливать полученные rpm в $bootstrap. кросс-линкер туда и лезет, так что все будет нормально. фишка в том, что все нужное, в хост системе уже есть и его можно использовать :) а установкой в чрут займется rpm. пакет эффективно инкапсулирует ненужные детали.


в итоге получим некий репозитарий (как вычислить минимально замкнутое подмножество base?), который сможет собрать себя.


http://www.geocities.com/robm351/uclibc/ и в частности http://www.geocities.com/robm351/uclibc/index-3.html


http://www.uclibc.org/lists/uclibc/2001-December/002238.html


http://www.linuxfromscratch.org/hlfs/view/unstable/uclibc/chapter02/toolchaintechnotes.html


02/07 00:32: прищлось положить в /lib сборочного хоcта ld-uClibc и libc.so.0. похачил /usr/lib/rpm/i586-alt-linuxuclibc/macros. по какой-то причине там явно определяется --build=%_target_platform --host=%_target_platform. в моем понимании это предотвращает кросскомпиляцию.
теперь рпмки собираются при указании таргета, лишних зависимостей не цепляется. собрал binutils и bzip2. bzip сразу не собрался из-за Patch 7?-bzip2–1.0.3-alt-progname.patch : bzip2.c:1958: error: `program_invocation_short_name' undeclared (first use in this function). и пришлось временно оторвать тесты


почему-то ко все пакетам цепляется зависимость на libgcc_s.so.1, libgcc_s.so.1(GCC_3.0)


похоже, собрать кроссом не получится. продолжаю попытки, но надо подумать как в чужой сборочной среде (в данном случае uclibc buildroot) собирать альтовские рпм.


идея по сборке репозитария в чужой среде:
поскольку база рпм пустая, поиск зависимостей работать не будет. можно в каждый спек явно добавлять его «настоящие» полные зависимости, не только прямые. вычислять их с помощью с помощью скрипта?. на этом репозитарии можно будет собрать нормальный сизиф.


03/07 02:53: собран uclibc_buildroot с опциями generic devel system. тем не менее, собирать что-либо в нем невозможно, потому как: отсутствует perl (установлен в версии microperl, модулей нет), из-за этого не работают autoconf/automake (хотя они есть).
создаем рабочий каталог $home/alt-uclibc/ , полученный образ монтируем с -o loop куда-нибудь и копируем из него в рабочий каталог. затем делаем сhroot и действуем по LFS: устанавливаем gettext, perl, autoconf, automake, libtool, texinfo. все тупо по книге, сейчас любой ценой нужен rpm. теперь берем исходники альтовского rpm.


для rpm еще нужен popt, тот что из альта собирается с трудом.


04/07: возвращаемся на исходную позицию и начинаем все сначала :( я серьезно протупил не проверив конфигурацию uclibc – по умолчанию они не включили iconv. собираю заново buildroot.


06/07: массированная сборка репозитария: http://lists.altlinux.ru/pipermail/devel/2005-April/020678.html


 
Файлы [Скрыть файлы/форму]
Комментариев нет. [Показать комментарии/форму]