Now that libstd-rust-dev-bpf has landed, I would like to follow up on this
thread and add the UEFI target standard libraries (x86_64-unknown-uefi and
aarch64-unknown-uefi) to src:rustc, as a sibling of the existing -wasm32 and
-bpf packages.

My motivation is the same one that drove the bpf addition. There is currently
no way to build a Rust UEFI binary from packaged Debian alone, because the uefi
target std is not shipped, so building for it requires rustup or -Zbuild-std on
nightly. That keeps every Rust UEFI and firmware project out of the archive. I
have a concrete consumer in mind: I maintain LamBoot, a memory-safe Rust UEFI
bootloader, and it already builds on stable rustc for both x86_64-unknown-uefi
and aarch64-unknown-uefi. The only piece missing for an in-archive build is the
target std.

Because these are Tier-2 targets, the upstream bootstrap already produces core
and alloc for them, so neither nightly nor build-std is needed inside the
archive. Fedora ships exactly this as rust-std-static-x86_64-unknown-uefi and
rust-std-static-aarch64-unknown-uefi from its rust spec, which gives a working
precedent to point to.

The change would mirror the -bpf stanzas almost line for line. It needs a
UEFI_TARGETS variable plus build and install steps in debian/rules (guarded by
a pkg.rustc.nouefi build profile), a libstd-rust-dev-uefi binary package, and a
.install file listing the rustlib paths.

To keep this moving rather than wait on a round of questions, I will go ahead
and open a merge request that follows the precedents already in place, and I
will of course adjust it to whatever you prefer. I plan to build against two
assumptions:

1. The package name follows the rust standard-library convention of using the
   target token, which gives libstd-rust-dev-uefi. I am not reusing the
   existing -efi suffix, since that one is used arch:any as a sibling
   architecture, whereas these libraries are arch:all.

2. The package is arch:all with Multi-Arch: foreign, matching -bpf, so that
   uefi follows the same arch:all versus arch:any decision as the other rust
   target standard libraries rather than diverging from it.

If you would prefer a different suffix or a different architecture handling,
say so and I will amend the merge request. The diff is small.

Greg Lamberson

Reply via email to