Ignore the intermediate garbage and just let ldconfig do the right thing. Because we now depend on ldconfig, subject it to the standard error handlers. Fixes FS#39560 --- functions | 9 ++++++--- mkinitcpio | 5 ++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/functions b/functions index 2d38815..78ba4c8 100644 --- a/functions +++ b/functions @@ -587,9 +587,12 @@ add_binary() { if [[ ! -L $sodep ]]; then add_file "$sodep" "$sodep" "$(stat -c %a "$sodep")" else - resolved=$(readlink -e "$sodep") - add_symlink "$sodep" "$(readlink "$sodep")" - add_file "$resolved" "$resolved" 755 + if resolved=$(readlink -e "$sodep"); then + add_file "$resolved" + else + error 'Failed to resolve the symlink target of %s' "$sodep" + (( ++builderrors )) + fi fi fi done <<< "$lddout" diff --git a/mkinitcpio b/mkinitcpio index 42abde7..cec9ffb 100755 --- a/mkinitcpio +++ b/mkinitcpio @@ -496,14 +496,13 @@ set -o errtrace install_modules "${!_modpaths[@]}" +ldconfig -r "$BUILDROOT" + # unset errtrace and trap set +o functrace set +o errtrace trap -- ERR -# this is simply a nice-to-have -- it doesn't matter if it fails. -ldconfig -r "$BUILDROOT" &>/dev/null - if [[ $_optgenimg ]]; then build_image "$_optgenimg" "$_optcompress" elif [[ $_opttargetdir ]]; then -- 1.9.1