aboutsummaryrefslogtreecommitdiff
path: root/linux-firmware/dedup-firmware.sh
diff options
context:
space:
mode:
authorWoodpecker CI <emmett1.2miligrams@protonmail.com>2026-04-28 23:46:06 +0000
committerWoodpecker CI <emmett1.2miligrams@protonmail.com>2026-04-28 23:46:06 +0000
commit9d21647e5967ea92878cf18e435d9f0ea76dd514 (patch)
tree81171df5a3277a27440d74d71948fbe9dc5add8f /linux-firmware/dedup-firmware.sh
parent99cda6551ec3050c9061d87e8011b9f1bb57be1d (diff)
downloadalicelinux-9d21647e5967ea92878cf18e435d9f0ea76dd514.tar.gz
alicelinux-9d21647e5967ea92878cf18e435d9f0ea76dd514.zip
Woodpecker CI 4ce71d772da8a401958771eb19293b6ef2190126 [SKIP CI]
Diffstat (limited to 'linux-firmware/dedup-firmware.sh')
-rw-r--r--linux-firmware/dedup-firmware.sh53
1 files changed, 9 insertions, 44 deletions
diff --git a/linux-firmware/dedup-firmware.sh b/linux-firmware/dedup-firmware.sh
index 51dad3e0..64ce7169 100644
--- a/linux-firmware/dedup-firmware.sh
+++ b/linux-firmware/dedup-firmware.sh
@@ -11,10 +11,10 @@ err() {
verbose=:
destdir=
-
while test $# -gt 0; do
case $1 in
-v | --verbose)
+ # shellcheck disable=SC2209
verbose=echo
shift
;;
@@ -22,6 +22,7 @@ while test $# -gt 0; do
if test -n "$destdir"; then
err "unknown command-line options: $*"
fi
+
destdir="$1"
shift
;;
@@ -33,7 +34,7 @@ if test -z "$destdir"; then
fi
if ! test -d "$destdir"; then
- err "provided directory does not exist."
+ err "provided directory does not exit."
fi
if ! command -v rdfind >/dev/null; then
@@ -43,47 +44,11 @@ fi
$verbose "Finding duplicate files"
rdfind -makesymlinks true -makeresultsfile true "$destdir" >/dev/null
-# --relative is a GNU coreutils ln extension; not available in BusyBox.
-# Compute the relative path ourselves using a portable shell function.
-relpath() {
- # relpath <target_abs> <link_abs>
- # Prints the relative path from the directory of <link_abs> to <target_abs>.
- target="$1"
- link_dir=$(dirname "$2")
-
- # Strip common prefix component-by-component.
- t="$target"
- b="$link_dir"
-
- # Normalise: remove trailing slashes
- t=${t%/}
- b=${b%/}
-
- # Walk up from b until it is a prefix of t
- up=""
- while [ -n "$b" ] && [ "${t#$b/}" = "$t" ] && [ "$t" != "$b" ]; do
- b=$(dirname "$b")
- up="../$up"
- done
-
- if [ "$t" = "$b" ]; then
- # Same directory
- rel="."
- else
- rel="$up${t#$b/}"
- fi
-
- printf '%s\n' "$rel"
-}
-
-grep DUPTYPE_WITHIN_SAME_TREE results.txt \
- | grep -o "$destdir[^ ]*" \
- | while read -r l; do
- target=$(realpath "$l")
- $verbose "Correcting path for $l"
- rel=$(relpath "$target" "$l")
- # BusyBox ln uses short flags: -s (symbolic), -f (force)
- ln -sf "$rel" "$l"
- done
+grep DUPTYPE_WITHIN_SAME_TREE results.txt | grep -o "$destdir.*" | while read -r l; do
+ target="$(realpath "$l")"
+ target="/lib/firmware/${target#$destdir}"
+ $verbose "Correcting path for $l"
+ ln -sf "$target" "$l"
+done
rm results.txt