rpm:
./build_packages.py --rpm
-install:
- install -d $(DESTDIR)$(FIRMWAREDIR)
- ./copy-firmware.sh $(COPYOPTS) $(DESTDIR)$(FIRMWAREDIR)
+install: install-nodedup
+ ./dedup-firmware.sh $(DESTDIR)$(FIRMWAREDIR)
install-nodedup:
install -d $(DESTDIR)$(FIRMWAREDIR)
- ./copy-firmware.sh --ignore-duplicates $(DESTDIR)$(FIRMWAREDIR)
+ ./copy-firmware.sh $(DESTDIR)$(FIRMWAREDIR)
install-xz:
install -d $(DESTDIR)$(FIRMWAREDIR)
./copy-firmware.sh --xz $(DESTDIR)$(FIRMWAREDIR)
+ ./dedup-firmware.sh $(DESTDIR)$(FIRMWAREDIR)
install-zst:
install -d $(DESTDIR)$(FIRMWAREDIR)
./copy-firmware.sh --zstd $(DESTDIR)$(FIRMWAREDIR)
+ ./dedup-firmware.sh $(DESTDIR)$(FIRMWAREDIR)
clean:
rm -rf release dist
"contrib/templates/debian.copyright",
"contrib/templates/rpm.spec",
"copy-firmware.sh",
+ "dedup-firmware.sh",
]
)
known_prefixes = set(name for name in whence_list if name.endswith("/"))
# shellcheck disable=SC2209
compress=cat
compext=
-skip_dedup=0
while test $# -gt 0; do
case $1 in
shift
;;
- --ignore-duplicates)
- skip_dedup=1
- shift
- ;;
-
-*)
if test "$compress" = "cat"; then
echo "ERROR: unknown command-line option: $1"
exit 1
fi
-if ! command -v rdfind >/dev/null; then
- 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
grep -E '^(RawFile|File):' WHENCE | sed -E -e 's/^(RawFile|File): */\1 /;s/"//g' | while read k f; do
test -f "$f" || continue
fi
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
if test -L "$f$compext"; then
--- /dev/null
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+#
+# Deduplicate files in a given destdir
+#
+
+err() {
+ echo "ERROR: $*"
+ exit 1
+}
+
+verbose=:
+destdir=
+while test $# -gt 0; do
+ case $1 in
+ -v | --verbose)
+ # shellcheck disable=SC2209
+ verbose=echo
+ ;;
+ *)
+ if test -n "$destdir"; then
+ err "unknown command-line options: $*"
+ fi
+
+ destdir="$1"
+ shift
+ ;;
+ esac
+done
+
+if test -z "$destdir"; then
+ err "destination directory was not specified."
+fi
+
+if ! test -d "$destdir"; then
+ err "provided directory does not exit."
+fi
+
+if ! command -v rdfind >/dev/null; then
+ err "rdfind is not installed."
+fi
+
+$verbose "Finding duplicate files"
+rdfind -makesymlinks true -makeresultsfile true "$destdir" >/dev/null
+
+grep DUPTYPE_WITHIN_SAME_TREE results.txt | grep -o "$destdir.*" | while read -r l; do
+ target="$(realpath "$l")"
+ $verbose "Correcting path for $l"
+ ln --force --symbolic --relative "$target" "$l"
+done
+
+rm results.txt