diff options
author | Josh Boyer <jwboyer@kernel.org> | 2023-11-27 10:13:42 -0500 |
---|---|---|
committer | Josh Boyer <jwboyer@kernel.org> | 2023-11-27 14:12:07 -0500 |
commit | 4124f8f928d51a1437e2fd2636b20d540edc2836 (patch) | |
tree | c131635e2aba126bbb8752f1f7fcf5d525d3db41 | |
parent | f8c611e72b3e327247eee3c892b407be3ad5ea12 (diff) | |
download | linux-firmware-4124f8f928d51a1437e2fd2636b20d540edc2836.tar.gz |
Make rdfind optional
A number of distributions don't include rdfind by default. This is an
optimization, so make it optional via a --ignore-duplicates option and a
new make target.
Distributions that include rdfind should add it as a dependency for
their linux-firmware package. Those that don't should use the new
target or option.
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
-rw-r--r-- | Makefile | 4 | ||||
-rwxr-xr-x | copy-firmware.sh | 28 |
2 files changed, 23 insertions, 9 deletions
@@ -30,6 +30,10 @@ install: install -d $(DESTDIR)$(FIRMWAREDIR) ./copy-firmware.sh $(DESTDIR)$(FIRMWAREDIR) +install-nodedup: + install -d $(DESTDIR)$(FIRMWAREDIR) + ./copy-firmware.sh --ignore-duplicates $(DESTDIR)$(FIRMWAREDIR) + install-xz: install -d $(DESTDIR)$(FIRMWAREDIR) ./copy-firmware.sh --xz $(DESTDIR)$(FIRMWAREDIR) diff --git a/copy-firmware.sh b/copy-firmware.sh index 6f2268b0..6757c6ce 100755 --- a/copy-firmware.sh +++ b/copy-firmware.sh @@ -9,6 +9,7 @@ prune=no # shellcheck disable=SC2209 compress=cat compext= +skip_dedup=0 while test $# -gt 0; do case $1 in @@ -44,6 +45,11 @@ while test $# -gt 0; do shift ;; + --ignore-duplicates) + skip_dedup=1 + shift + ;; + -*) if test "$compress" = "cat"; then echo "ERROR: unknown command-line option: $1" @@ -70,8 +76,10 @@ if [ -z "$destdir" ]; then fi if ! command -v rdfind >/dev/null; then - echo "ERROR: rdfind is not installed" - exit 1 + if [ "$skip_dedup" != 1 ]; then + echo "ERROR: rdfind is not installed. Pass --ignore-duplicates to skip deduplication" + exit 1 + fi fi # shellcheck disable=SC2162 # file/folder name can include escaped symbols @@ -87,13 +95,15 @@ 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 +if [ "$skip_dedup" != 1 ] ; then + $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 +fi # 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 |