Потихоньку продвигаемся. Начал я его собирать вечером в четверг 19 октября. С одной стороны, сейчас прошло уже больше недели. С другой стороны, в эти 9 дней собирал я его всего 5 вечеров. Почему-то по вечерам меня на активность пробивает. То есть, если иметь некоторый опыт, за день вряд ли, но за два дня можно полностью собрать LFS.
читать дальше
В понедельник закончил пятую главу - сборку цепочки инструментов или как оно там. Вторник-среду думал, как прикрутить менеджер пакетов, читал тырнет, но всё, что нарыл, как-то меня не сподвигло. Четверг тоже думал, в конце концов решил, что:
1) манагер пакетов можно прикрутить в любой момент сборки. Не в том смысле, что я уже знаю, как это сделать, а в смысле, что LFS можно дальше собирать, и время не тратить. Конечно, чем раньше прикрутишь, тем лучше, НО! Это сведёт на нет всю идею LFS. Идея в том, чтобы самому собирать, смотреть опции и потихоньку вникать. А так ну чо - манагером ты поставишь, чо там происходит - хз.
2) я же знаю все пакеты и все версии, которые там у меня стоят. А значит, могу скормить их все манагеру пакетов, когда его прикручу, чтобы он тоже знал. Ну, если он их записывает в свою базу какую-нибудь
3) появились мысли о написании собственного пакетного менеджера. Вряд ли я это буду делать, но понять, как его можно сделать было бы неплохо. У нас есть набор файлов до и набор файлов после. Манагер пакетов должен всё это запоминать, суметь в случае чего откатить всё обратно и, если какие-то файлы могут быть затёрты, сообщить об этом.
Короче, ладно. Продолжаем собирать. В шестой главе всё, что собиралось в пятой ( + ещё немного) собирается заново, токо в другое место. До этого собиралось в /tools, теперь в /usr. Причём, собирается с помощью того, что собиралось в пятой. Это типа важно.
Пишут, мол, все пакеты суперкритичные, поэтому во время сборки каждого пакета обязательно делайте тесты. Тест делается командой make check или make -k check. Собираем glibc, делаем тест. Вылазит пять или семь ошибок. Читаем руководство.
You may see some test failures. The Glibc test suite is somewhat dependent on the host system. This is a list of the most common issues seen for some versions of LFS:
- posix/tst-getaddrinfo4 and posix/tst-getaddrinfo5 may fail on some architectures.
- The rt/tst-cputimer1 and rt/tst-cpuclock2 tests have been known to fail. The reason is not completely understood, but indications are that minor timing issues can trigger these failures.
- The math tests sometimes fail when running on systems where the CPU is not a relatively new Intel or AMD processor.
- The nptl/tst-thread-affinity-{pthread,pthread2,sched} tests may fail for reasons that have not been determined.
- Other tests known to fail on some architectures are malloc/tst-malloc-usable and nptl/tst-cleanupx4.
Типа, эти ошибки - это нормально, эта возникает хер знает из-за чего, в общем, всё заебись, продолжайте.
Но если у нас уже на этапе сборки происходят ошибки и никто не может объяснить, почему, то стоит ли удивляться, что потом и в готовых дистрах что-нибудь не встаёт или глючит - и никто не может объяснить, почему.
Маленько в ахуе продолжаю дальше. Несколько утилит собирается без вопросов, тесты проходят отлично, следующий бастион binutils. В пятой главе она собиралась первая и без вопросов, а щас на тестах выдаёт ошибки. Написано:
One test, debug_msg.sh, is known to fail.
Но там чо-то написано, что вообще пиздец, куча ошибок и всё такое. Часа два я на это убил. Лазил по тырнету - там были похожие случаи, но во-первых другие версии, во-вторых данные там советы в стиле "забей и продолжай" уверенности мне не внушал. Как вот понять - критичные это ошибки или херня? Обратился к ютуберам. Мне подходили только те, кто собирает версию 8.0 или 8.1. Дык они или вообще тестов не делают или делают, но продолжают вне зависимости от результата. Прям как обезьяны! Ладно, внимательно посмотрел весь вывод тестов (а я, блин, не знаю, каким должен быть вывод успешных тестов), короче, все тесты пройдены, кроме этого debug_msg.sh, и вот после того, как он зафейлился, начинают появляться ошибки вида make *** Error 1 или Error 2. Подумал, нельзя ли как-нибудь энтот msg.sh исключить оттудова, но это надо где-то там ковыряться, а я не знаю, где. Забил, и дальше в книжке нашёл сцылку на логи:
www.linuxfromscratch.org/lfs/build-logs/8.1/
Я её потом искал на сайте, но тщетно (( А вот если бы эти ссылка была у меня до книги или хотя бы в её начале, это сэкономило бы мне несколько часов.
Дальше собираем gcc. Сначала сказано отдельно собрать все эти mpfr, mpc & gmp, а потом во время gcc configure начинаются жалобы, что mpfr, mpc & gmp уже сконфигурены. То ли баг, то ли фича. На этом я пока остановился.Ту би континУед... Занимательного красноглазия будет очень, очень много!