commit:     ee2d946961fb7174ffee8f5de8c75eacd982779e
Author:     Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 18 17:38:40 2025 +0000
Commit:     Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Tue Feb 18 17:40:10 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ee2d9469

sys-boot/gnu-efi: another fix for OBJCOPY

Try to simplify wrong objcopy handling.

Bug: https://bugs.gentoo.org/947826
Signed-off-by: Viorel Munteanu <ceamac <AT> gentoo.org>

 sys-boot/gnu-efi/gnu-efi-4.0.0.ebuild | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/sys-boot/gnu-efi/gnu-efi-4.0.0.ebuild 
b/sys-boot/gnu-efi/gnu-efi-4.0.0.ebuild
index e491f3efcf05..746849679dbb 100644
--- a/sys-boot/gnu-efi/gnu-efi-4.0.0.ebuild
+++ b/sys-boot/gnu-efi/gnu-efi-4.0.0.ebuild
@@ -39,26 +39,32 @@ DOCS="README* SECURITY* docs/*"
 
 check_and_set_objcopy() {
        if [[ ${MERGE_TYPE} != "binary" ]]; then
+
+               if use arm || use riscv; then
+                       # bug #939338
+                       # objcopy does not understand PE/COFF on these arches: 
arm32, riscv64 and mips64le
+                       # gnu-efi containes a workaround
+                       return 0
+               fi
+
                # bug #931792
                # llvm-objcopy does not support EFI target, try to use binutils 
objcopy or fail
                tc-export OBJCOPY
-               OBJCOPY="${OBJCOPY/llvm-/}"
                # Test OBJCOPY to see if it supports EFI targets, and return if 
it does
                LC_ALL=C "${OBJCOPY}" --help | grep -q '\<pei-' && return 0
+
                # If OBJCOPY does not support EFI targets, it is possible that 
the 'objcopy' on our path is
                # still LLVM if the 'binutils-plugin' USE flag is set. In this 
case, we check to see if the
                # '(prefix)/usr/bin/objcopy' binary is available (it should be, 
it's a dependency), and if
                # so, we use the absolute path explicitly.
-               local binutils_objcopy="${EPREFIX}"/usr/bin/"${OBJCOPY}"
+               local binutils_objcopy="${EPREFIX}"/usr/bin/objcopy
                if [[ -e "${binutils_objcopy}" ]]; then
                        OBJCOPY="${binutils_objcopy}"
+                       einfo "Forcing OBJCOPY=${OBJCOPY}"
                fi
-               if ! use arm && ! use riscv; then
-                       # bug #939338
-                       # objcopy does not understand PE/COFF on these arches: 
arm32, riscv64 and mips64le
-                       # gnu-efi containes a workaround
-                       LC_ALL=C "${OBJCOPY}" --help | grep -q '\<pei-' || die 
"${OBJCOPY} (objcopy) does not support EFI target"
-               fi
+
+               # Test OBJCOPY again to see if it supports EFI targets, and 
fail if it doesn't
+               LC_ALL=C "${OBJCOPY}" --help | grep -q '\<pei-' || die 
"${OBJCOPY} (objcopy) does not support EFI target"
        fi
 }
 

Reply via email to