https://rustc-dev-guide.rust-lang.org/building/bootstrapping..."the only way to build a modern version of rustc is a slightly less modern version."
С этим, теоретическим, утверждением согласен.
Добавить можно изменения в stage3: компилятор, полученный на этапе stage2 еще раз себя компилит и сверяет хеш компилятора полученного на этапе stage2 с компилятором полученным на этапе stage3, если хеши совпали, компилятор считается успешно собранным.
https://svnweb.freebsd.org/ports/head/lang/rust/Makefile?rev...
Вижу во фряшных зависимостях rust тот же сишный, дырявый компилятор, что и в гентушных. Gentoo предоставляет право выбора компилятора: gcc или clang, а FreeBSD к билдтайм зависимостям rust тянет штатный clang.
Фрагталь, не уводи от темы, гентушники и фряшники через ж свои сборочные системы не делают. Сишка для сборки Раста использовалась еще много лет назад, смотрел и старые ебылды. Еще и python тянет в сборочные зависимости, кажись только для stage0 а зачем оно?
Все должно быть просто как в АК:
Если rustc в системе уже есть то компилим новый компилятор им если нет то к пакету rust идет ОДНА былдтайм зависимость rust-bin которой компилим новый компилятор - stage1.
Компилятором полученным на этапе stage1 собираем rust еще раз -stage2 и сверям хеши компиляторов stage1 и stage2. Если сошлись компилятор готов к работе.
Если хеши не сошлись, то компилятором полученым на этапе stage2 собираем rust еще раз - stage3 и сверяем хеши компиляторов stage2 и stage3 они точно должны совпасть. Если не совпали, то используем старую версию rust, новая непригодна для сборки.