Re: [gentoo-dev] [PATCH 2/2] sys-apps/systemd-utils: add workaround for no-multilib

2024-03-26 Thread Mike Gilbert
On Tue, Mar 26, 2024 at 12:51 PM Michał Górny  wrote:
>
> On Tue, 2024-03-26 at 11:01 -0400, Mike Gilbert wrote:
> > 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.
> >
>
> That's not a correct use of nonfatal.  It is supposed to be used to
> provide customized error handling (e.g. cleanup step before dying), not
> a cheap way to ignore errors.

I disagree; the error will not go unhandled, it's just being deferred
until later.



Re: [gentoo-dev] [PATCH 2/2] sys-apps/systemd-utils: add workaround for no-multilib

2024-03-26 Thread Michał Górny
On Tue, 2024-03-26 at 11:01 -0400, Mike Gilbert wrote:
> 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.
> 

That's not a correct use of nonfatal.  It is supposed to be used to
provide customized error handling (e.g. cleanup step before dying), not
a cheap way to ignore errors.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] [PATCH 2/2] sys-apps/systemd-utils: add workaround for no-multilib

2024-03-26 Thread Mike Gilbert
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 
---
 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