From a7970811473e4d351e82de8a523ecf46572c3e8c Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Mon, 3 Apr 2017 15:23:37 +0200 Subject: [PATCH] Make binutils optional when elfutils are available This is intended for minimum host OSes where 36 MB used by binutils are deemed too expensive. We only need "strip", which exists as eu-strip in elfutils, which in turn is < 1 MB in size. Note that the tests (TEST-04-FULL-SYSTEMD/test.sh) still depend on strip from binutils. It could use sstrip in the future. --- dracut.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dracut.sh b/dracut.sh index d25da8e3..f4794d1d 100755 --- a/dracut.sh +++ b/dracut.sh @@ -1624,7 +1624,11 @@ fi # strip binaries if [[ $do_strip = yes ]] ; then - for p in strip xargs find; do + # Prefer strip from elfutils for package size + declare strip_cmd=$(command -v eu-strip) + test -z "$strip_cmd" && strip_cmd="strip" + + for p in $strip_cmd xargs find; do if ! type -P $p >/dev/null; then dinfo "Could not find '$p'. Not stripping the initramfs." do_strip=no @@ -1636,14 +1640,14 @@ if [[ $do_strip = yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then dinfo "*** Stripping files ***" find "$initdir" -type f \ -executable -not -path '*/lib/modules/*.ko' -print0 \ - | xargs -r -0 strip -g 2>/dev/null + | xargs -r -0 $strip_cmd -g 2>/dev/null # strip kernel modules, but do not touch signed modules find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \ | while read -r -d $'\0' f || [ -n "$f" ]; do SIG=$(tail -c 28 "$f" | tr -d '\000') [[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; } - done | xargs -r -0 strip -g + done | xargs -r -0 $strip_cmd -g dinfo "*** Stripping files done ***" fi -- 2.12.0