mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
synced 2024-12-13 10:48:48 +00:00
eaee2dacc2
mkdir -p creates paths that are bound to user's settings and therefore can lead to different file mode bits of the base paths accross different machines. Use install instead, as this tool is not prone to such behavior. Signed-off-by: Konrad Weihmann <kweihmann@outlook.com> Signed-off-by: Josh Boyer <jwboyer@kernel.org>
74 lines
1.7 KiB
Bash
Executable File
74 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copy firmware files based on WHENCE list
|
|
#
|
|
|
|
verbose=:
|
|
prune=no
|
|
|
|
while test $# -gt 0; do
|
|
case $1 in
|
|
-v | --verbose)
|
|
verbose=echo
|
|
shift
|
|
;;
|
|
|
|
-P | --prune)
|
|
prune=yes
|
|
shift
|
|
;;
|
|
|
|
*)
|
|
if test "x$destdir" != "x"; then
|
|
echo "ERROR: unknown command-line options: $@"
|
|
exit 1
|
|
fi
|
|
|
|
destdir="$1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
grep '^File:' WHENCE | sed -e's/^File: *//g' -e's/"//g' | while read f; do
|
|
test -f "$f" || continue
|
|
$verbose "copying file $f"
|
|
install -d $destdir/$(dirname "$f")
|
|
cp -d "$f" $destdir/"$f"
|
|
done
|
|
|
|
grep -E '^Link:' WHENCE | sed -e's/^Link: *//g' -e's/-> //g' | while read f d; do
|
|
if test -L "$f"; then
|
|
test -f "$destdir/$f" && continue
|
|
$verbose "copying link $f"
|
|
install -d $destdir/$(dirname "$f")
|
|
cp -d "$f" $destdir/"$f"
|
|
|
|
if test "x$d" != "x"; then
|
|
target=`readlink "$f"`
|
|
|
|
if test "x$target" != "x$d"; then
|
|
$verbose "WARNING: inconsistent symlink target: $target != $d"
|
|
else
|
|
if test "x$prune" != "xyes"; then
|
|
$verbose "WARNING: unneeded symlink detected: $f"
|
|
else
|
|
$verbose "WARNING: pruning unneeded symlink $f"
|
|
rm -f "$f"
|
|
fi
|
|
fi
|
|
else
|
|
$verbose "WARNING: missing target for symlink $f"
|
|
fi
|
|
else
|
|
$verbose "creating link $f -> $d"
|
|
install -d $destdir/$(dirname "$f")
|
|
ln -sf "$d" "$destdir/$f"
|
|
fi
|
|
done
|
|
|
|
exit 0
|
|
|
|
# vim: et sw=4 sts=4 ts=4
|