commit -m "better"
https://invisible-island.net/ncurses/announce.html #terminfo Вышла #ncurses 6.3, а, значит, самое время рассказать про Тома #Хуйкин а(Thomas E. Dickey). Его сайт, https://invisible-island.net/, я называю "кладбище OSS софта", или "мечта бутстрапера"(зависит…
Я как-то косвенно упомянул #heirloom https://heirloom.sourceforge.net/ , это аналог coreutils/busybox, но только родом из традиционных UNIX, типа Sun, Caldera.
Очень интересный проект, и он у меня участвовал в процедуре #bootstrap - это когда нужно иметь хоть какие-то версии утилит, для того, чтобы собрать более продвинутые версии утилит.
Ну, типа, configure скрипты gnu grep/awk/diff/patch/sed/etc требуют уже работающих awk/grep/sed/diff/etc.
Раньше, когда я только начинал пилить #ix, я использовал heirloom как "начало начал" - имея только libc, нужно получить хоть какие-то unix тулзы, чтобы дальше собирать что-то еще.
Вот у меня был самый отвратительный shell script ever - https://github.com/pg83/mix/blob/main/pkgs/bld/boot/2/heirloom/darwin/ix.sh#L70-L95
Тут literally описан порядок сборки всяких mkdir/cp/rm, чтобы дальше можно было собрать что-то еще, из поставки heirloom.
Я постепенно заменял этот скрипт на:
* sbase - для базовых утилит, из проекта suckless - https://core.suckless.org/sbase/ (там есть слабенький grep, и sed, который падает в корку)
* minised - https://github.com/bostikforever/minised
* bmake - https://www.crufty.net/help/sjg/bmake.html - реализация make, которую можно собрать через
* и, вот, появилась новая реализация awk, для проекта https://github.com/landley/toybox (https://t.iss.one/itpgchannel/145), которая зависит только от C - https://github.com/raygard/wak
Я, конечно, добавил ее в процесс бутстрапа, и отправил этот гадкий скрипт на заслуженный отдых, потому что heirloom больше не участвует в моей процедуре bootstrap!
Очень интересный проект, и он у меня участвовал в процедуре #bootstrap - это когда нужно иметь хоть какие-то версии утилит, для того, чтобы собрать более продвинутые версии утилит.
Ну, типа, configure скрипты gnu grep/awk/diff/patch/sed/etc требуют уже работающих awk/grep/sed/diff/etc.
Раньше, когда я только начинал пилить #ix, я использовал heirloom как "начало начал" - имея только libc, нужно получить хоть какие-то unix тулзы, чтобы дальше собирать что-то еще.
Вот у меня был самый отвратительный shell script ever - https://github.com/pg83/mix/blob/main/pkgs/bld/boot/2/heirloom/darwin/ix.sh#L70-L95
Тут literally описан порядок сборки всяких mkdir/cp/rm, чтобы дальше можно было собрать что-то еще, из поставки heirloom.
Я постепенно заменял этот скрипт на:
* sbase - для базовых утилит, из проекта suckless - https://core.suckless.org/sbase/ (там есть слабенький grep, и sed, который падает в корку)
* minised - https://github.com/bostikforever/minised
* bmake - https://www.crufty.net/help/sjg/bmake.html - реализация make, которую можно собрать через
cc *.c
https://t.iss.one/itpgchannel/82* и, вот, появилась новая реализация awk, для проекта https://github.com/landley/toybox (https://t.iss.one/itpgchannel/145), которая зависит только от C - https://github.com/raygard/wak
Я, конечно, добавил ее в процесс бутстрапа, и отправил этот гадкий скрипт на заслуженный отдых, потому что heirloom больше не участвует в моей процедуре bootstrap!
GitHub
mix/pkgs/bld/boot/2/heirloom/darwin/ix.sh at main · pg83/mix
statically build packages, for darwin/linux, with clang - pg83/mix
🔥12👍6🫡3
commit -m "better"
Для сборки ядра нужна тулза bc. Тулза bc от проекта GNU требует для сборки программу ed. Но если собирать bc от GNU с ed от GNU, то ed зависает на входе. При этом, замечательно срабатывает ed из проекта heirloom, но на получившемся bc виснет сборка самого ядра(я смотрел на выхлоп heirloom ed, и почти готов дать зуб, что он таки правильный). На этом замечательном результате я остановился, и взял bc из проекта busybox.
Будни #bootstrap
В итоге, проблему со сборкой gnu bc пришлось раздебажить, потому что надоело костылизировать сборку ed от #heirloom.
Все оказалось до смешного просто - ed от GNU хочет завести временный файл, и именно в /tmp, которого у меня нет (#TMPDIR https://t.iss.one/itpgchannel/2350), молча глотает ошибку, и дальше мы получаем мусор на вход в сборку gnu bc.
Вот однострочник, который фиксит проблему - https://github.com/pg83/ix/blob/main/pkgs/bin/ed/ix.sh#L10
В итоге, проблему со сборкой gnu bc пришлось раздебажить, потому что надоело костылизировать сборку ed от #heirloom.
Все оказалось до смешного просто - ed от GNU хочет завести временный файл, и именно в /tmp, которого у меня нет (#TMPDIR https://t.iss.one/itpgchannel/2350), молча глотает ошибку, и дальше мы получаем мусор на вход в сборку gnu bc.
Вот однострочник, который фиксит проблему - https://github.com/pg83/ix/blob/main/pkgs/bin/ed/ix.sh#L10
GitHub
ix/pkgs/bin/ed/ix.sh at main · pg83/ix
ix package manager. Contribute to pg83/ix development by creating an account on GitHub.
🔥12❤4🤩4🤮3🤡3❤🔥1👍1🥱1🐳1