From 68922e3f7407c5aecd8cc9cc3d22d753269b3f31 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 8 Aug 2016 09:45:45 -0500 Subject: [PATCH] nixos/stage-1: use `readlink -e` in builder The builder has this convoluted `while` loop which just replicates `readlink -e`. I'm sure there was a reason at one point, because the loop has been there since time immemorial. It kept getting copied around, I suspect because nobody bothered to understand what it actually did. Incidentally, this fixes #17513, but I have no idea why. --- nixos/modules/system/boot/stage-1.nix | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index a74cfafdd37f..70429e9c0a22 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -87,15 +87,11 @@ let LDD="$(ldd $BIN)" || continue LIBS="$(echo "$LDD" | awk '{print $3}' | sed '/^$/d')" for LIB in $LIBS; do - [ ! -f "$out/lib/$(basename $LIB)" ] && cp -pdv $LIB $out/lib - while [ "$(readlink $LIB)" != "" ]; do - LINK="$(readlink $LIB)" - if [ "''${LINK:0:1}" != "/" ]; then - LINK="$(dirname $LIB)/$LINK" - fi - LIB="$LINK" - [ ! -f "$out/lib/$(basename $LIB)" ] && cp -pdv $LIB $out/lib - done + TGT="$out/lib/$(basename $LIB)" + if [ ! -f "$TGT" ]; then + SRC="$(readlink -e $LIB)" + cp -pdv "$SRC" "$TGT" + fi done done