From d43c458e029269c9be66385959018e6c9751272a Mon Sep 17 00:00:00 2001 From: Konstantin Demin Date: Fri, 17 Apr 2026 23:47:11 +0300 Subject: [PATCH] package: binutils: deduplicate ld ld.bfd is the default/only implementation for now but things may change in future. Signed-off-by: Konstantin Demin Link: https://github.com/openwrt/openwrt/pull/21997 Signed-off-by: Nick Hainke --- package/devel/binutils/Makefile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/package/devel/binutils/Makefile b/package/devel/binutils/Makefile index 54b2ae8c8c1..8bd62d0f9b1 100644 --- a/package/devel/binutils/Makefile +++ b/package/devel/binutils/Makefile @@ -169,6 +169,23 @@ define Package/binutils/install mv $(1)/usr/bin/strings $(1)/usr/bin/binutils-strings rm -f $(1)/usr/bin/objdump rm -f $(1)/usr/bin/ar + + : # deduplicate "/usr/bin/ld.*": + : # "ld.bfd" is the implementation, "ld" is the variant selector, + : # so the link should be "ld" -> "ld.bfd" + _ld='$(1)/usr/bin/ld'; \ + [ -f "$$$${_ld}" ] || exit 0; \ + find "$$$${_ld%/*}/" -follow -name "$$$${_ld##*/}*" -type f \ + | grep -Fxv -e "$$$${_ld}" | sort -V \ + | while read -r _ld_variant; do \ + cmp -s "$$$${_ld}" "$$$${_ld_variant}" || continue; \ + cp -L "$$$${_ld_variant}" "$$$${_ld_variant}.new"; \ + rm -f "$$$${_ld_variant}"; \ + mv "$$$${_ld_variant}.new" "$$$${_ld_variant}"; \ + rm -f "$$$${_ld}"; \ + ln -s "$$$${_ld_variant##*/}" "$$$${_ld}"; \ + break; \ + done endef $(eval $(call BuildPackage,libbfd)) -- 2.47.3