summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Limonciello <mario.limonciello@amd.com>2023-11-08 17:02:06 -0600
committerMario Limonciello <mario.limonciello@amd.com>2023-11-08 17:03:14 -0600
commit4c55675d7adaf2aadb39aceeecc65cc86ace6917 (patch)
treedad48d20433e9d54e920f184493dedcdd0f306b2
parent16b92b8d68efbb596ec64bc426c71844807a6874 (diff)
Fix symlink creation for some files
rdfind was trying to duplicate symlinks created by WHENCE causing problems. Move the call before WHENCE creates symlinks. Reported-by: Timur Tabi <ttabi@nvidia.com> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
-rwxr-xr-xcopy-firmware.sh18
1 files changed, 8 insertions, 10 deletions
diff --git a/copy-firmware.sh b/copy-firmware.sh
index 59ff976e..3026c216 100755
--- a/copy-firmware.sh
+++ b/copy-firmware.sh
@@ -9,16 +9,12 @@ prune=no
# shellcheck disable=SC2209
compress=cat
compext=
-quiet=">/dev/null"
-rdfind_results=/dev/null
while test $# -gt 0; do
case $1 in
-v | --verbose)
# shellcheck disable=SC2209
verbose=echo
- quiet=
- rdfind_results=results.txt
shift
;;
@@ -81,6 +77,14 @@ grep -E '^(RawFile|File):' WHENCE | sed -E -e 's/^(RawFile|File): */\1 /;s/"//g'
fi
done
+$verbose "Finding duplicate files"
+rdfind -makesymlinks true -makeresultsfile false "$destdir" >/dev/null
+find "$destdir" -type l | while read -r l; do
+ target="$(realpath "$l")"
+ $verbose "Correcting path for $l"
+ ln -fs "$(realpath --relative-to="$(dirname "$(realpath -s "$l")")" "$target")" "$l"
+done
+
# shellcheck disable=SC2162 # file/folder name can include escaped symbols
grep -E '^Link:' WHENCE | sed -e 's/^Link: *//g;s/-> //g' | while read f d; do
if test -L "$f$compext"; then
@@ -119,12 +123,6 @@ grep -E '^Link:' WHENCE | sed -e 's/^Link: *//g;s/-> //g' | while read f d; do
fi
done
-$verbose rdfind -makesymlinks true "$destdir" -outputname $rdfind_results "$quiet"
-find "$destdir" -type l | while read -r l; do
- target="$(realpath "$l")"
- ln -fs "$(realpath --relative-to="$(dirname "$(realpath -s "$l")")" "$target")" "$l"
-done
-
exit 0
# vim: et sw=4 sts=4 ts=4