alicelinux

A lightweight musl + clang/llvm + libressl + busybox distro
git clone https://codeberg.org/emmett1/alicelinux
Log | Files | Refs | README | LICENSE

dedup-firmware.sh (1098B)


      1 #!/bin/sh
      2 # SPDX-License-Identifier: GPL-2.0
      3 #
      4 # Deduplicate files in a given destdir
      5 #
      6 
      7 err() {
      8     echo "ERROR: $*"
      9     exit 1
     10 }
     11 
     12 verbose=:
     13 destdir=
     14 while test $# -gt 0; do
     15     case $1 in
     16         -v | --verbose)
     17             # shellcheck disable=SC2209
     18             verbose=echo
     19             shift
     20             ;;
     21         *)
     22             if test -n "$destdir"; then
     23                 err "unknown command-line options: $*"
     24             fi
     25 
     26             destdir="$1"
     27             shift
     28             ;;
     29     esac
     30 done
     31 
     32 if test -z "$destdir"; then
     33     err "destination directory was not specified."
     34 fi
     35 
     36 if ! test -d "$destdir"; then
     37     err "provided directory does not exit."
     38 fi
     39 
     40 if ! command -v rdfind >/dev/null; then
     41     err "rdfind is not installed."
     42 fi
     43 
     44 $verbose "Finding duplicate files"
     45 rdfind -makesymlinks true -makeresultsfile true "$destdir" >/dev/null
     46 
     47 grep DUPTYPE_WITHIN_SAME_TREE results.txt | grep -o "$destdir.*" | while read -r l; do
     48     target="$(realpath "$l")"
     49 	target="/lib/firmware/${target#$destdir}"
     50     $verbose "Correcting path for $l"
     51     ln -sf "$target" "$l"
     52 done
     53 
     54 rm results.txt