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 }
