meson.build has some logic to build ia32 EFI binaries on x86_64 if the toolchain is compatible. Rather than trying to reproduce this logic in the ebuild, just try to build it and ignore any failures.
If meson.build actually defines the targets but we have some other compile error, this will move the failure to the install phase instead. Signed-off-by: Mike Gilbert <flop...@gentoo.org> --- sys-apps/systemd-utils/systemd-utils-255.4.ebuild | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sys-apps/systemd-utils/systemd-utils-255.4.ebuild b/sys-apps/systemd-utils/systemd-utils-255.4.ebuild index b258f5748243..7f17b37aa3ea 100644 --- a/sys-apps/systemd-utils/systemd-utils-255.4.ebuild +++ b/sys-apps/systemd-utils/systemd-utils-255.4.ebuild @@ -253,7 +253,7 @@ multilib_src_configure() { } multilib_src_compile() { - local targets=() + local targets=() optional_targets=() if multilib_is_native_abi; then if use boot; then local efi_arch= efi_arch_alt= @@ -275,7 +275,10 @@ multilib_src_compile() { src/boot/efi/addon${efi_arch}.efi.stub ) if [[ -n ${efi_arch_alt} ]]; then - targets+=( + # If we have a multilib toolchain, meson.build will build the + # "alt" arch (ia32). There's no easy way to detect this, so try + # to build it and ignore failure. + optional_targets+=( src/boot/efi/systemd-boot${efi_arch_alt}.efi src/boot/efi/linux${efi_arch_alt}.efi.stub src/boot/efi/addon${efi_arch_alt}.efi.stub @@ -392,9 +395,12 @@ multilib_src_compile() { ) fi fi - if multilib_is_native_abi || use udev; then + if [[ ${#targets[@]} -ne 0 ]]; then meson_src_compile "${targets[@]}" fi + if [[ ${#optional_targets[@]} -ne 0 ]]; then + nonfatal meson_src_compile "${optional_targets[@]}" + fi } multilib_src_test() { -- 2.44.0