что-то вроде лабораторного журнала
поток сознания ;)
программа-максимум: собрать под uclibc sisyphus.base.
почему uclibc? легких путей не ищем :).
простой «linux с uclibc» – скачать uclibc-buildroot, make world – все это конечно весело, теперь хочу именно альт =>
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)