As most Asahi users will be aware, m1n1 now requires Rust. More
specifically, it requires the aarch64-none-softfloat target. While
it is possible to build core and alloc by passing a flag to m1n1's
Makefile, core and alloc have versioned dependencies which change
with each minor Rust version. As such, it is logistically impossible
to do this within the confines of Gentoo's Rust packaging infrastructure,
which requires us to pin specific crate versions in the dependent
package's ebuild.
As a user, you have two options: 1. Set RUST_CROSS_TARGETS appropriately
As a user, you have two options: 1. Set RUST_CROSS_TARGETS appropriately
If you are using dev-lang/rust, you have the option of building
std for an arbitrary set of target triples. Create the file
/etc/portage/env/dev-lang/rust with the contents:
I_KNOW_WHAT_I_AM_DOING_CROSS=yes
RUST_CROSS_TARGETS=(
"AArch64:aarch64-unknown-none-softfloat:aarch64-unknown-linux-gnu"
)
and rebuild dev-lang/rust. You should now be able to build sys-boot/m1n1
just as before.
2. Use the new sys-boot/m1n1-bin package
If you do not wish to use dev-lang/rust, we now have sys-boot/m1n1-bin,
which is a drop-in replacement for sys-boot/m1n1. Unmerge sys-boot/m1n1
and then emerge sys-boot/m1n1-bin. The binary is built from each GitHub
tag on GitHub CI runners. You may inspect the build pipeline in the m1n1
repository.