aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario Limonciello <superm1@gmail.com>2023-11-09 00:54:17 +0000
committerMario Limonciello <superm1@gmail.com>2023-11-09 00:54:17 +0000
commitb79f31cf75a22437502c373d025cd8421de9fb0b (patch)
tree915c93f9cdcc895baee8a08c31c5c7c7d782143f
parent16b92b8d68efbb596ec64bc426c71844807a6874 (diff)
parentcf8315ded9b422d2e8b620ffe8bb661221639c8f (diff)
downloadlinux-firmware-b79f31cf75a22437502c373d025cd8421de9fb0b.tar.gz
Merge branch 'mlimonci/fix-symlinks' into 'main'
Fix symlink creation for some files See merge request kernel-firmware/linux-firmware!54
-rwxr-xr-xcopy-firmware.sh28
1 files changed, 18 insertions, 10 deletions
diff --git a/copy-firmware.sh b/copy-firmware.sh
index 59ff976e..f9b1f0ff 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
;;
@@ -68,6 +64,16 @@ while test $# -gt 0; do
esac
done
+if [ -z "$destdir" ]; then
+ echo "ERROR: destination directory was not specified"
+ exit 1
+fi
+
+if ! which rdfind 2>/dev/null >/dev/null; then
+ echo "ERROR: rdfind is not installed"
+ exit 1
+fi
+
# shellcheck disable=SC2162 # file/folder name can include escaped symbols
grep -E '^(RawFile|File):' WHENCE | sed -E -e 's/^(RawFile|File): */\1 /;s/"//g' | while read k f; do
test -f "$f" || continue
@@ -81,6 +87,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 +133,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