tinyramfs: fix copying libraries if system is multilib
tested on ubuntu
This commit is contained in:
parent
e2b3cc1e1a
commit
7bfc7fe315
25
tinyramfs
25
tinyramfs
@ -18,6 +18,7 @@ panic()
|
|||||||
exit 1
|
exit 1
|
||||||
} >&2
|
} >&2
|
||||||
|
|
||||||
|
# TODO add version
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
cat << EOF
|
cat << EOF
|
||||||
@ -109,6 +110,8 @@ prepare_initramfs()
|
|||||||
"${tmpdir}/mnt/root" \
|
"${tmpdir}/mnt/root" \
|
||||||
"${tmpdir}/etc/tinyramfs"
|
"${tmpdir}/etc/tinyramfs"
|
||||||
|
|
||||||
|
ln -s usr/lib "${tmpdir}/usr/lib64"
|
||||||
|
ln -s usr/lib "${tmpdir}/lib64"
|
||||||
ln -s usr/lib "${tmpdir}/lib"
|
ln -s usr/lib "${tmpdir}/lib"
|
||||||
ln -s usr/bin "${tmpdir}/bin"
|
ln -s usr/bin "${tmpdir}/bin"
|
||||||
ln -s usr/bin "${tmpdir}/sbin"
|
ln -s usr/bin "${tmpdir}/sbin"
|
||||||
@ -133,31 +136,35 @@ copy_file()
|
|||||||
(
|
(
|
||||||
file="$1"; dest="$2"; mode="$3"; strip="$4"
|
file="$1"; dest="$2"; mode="$3"; strip="$4"
|
||||||
|
|
||||||
[ -e "${tmpdir}${dest}" ] && return 0
|
[ -e "${tmpdir}/${dest}" ] && return 0
|
||||||
|
|
||||||
mkdir -p "${tmpdir}${dest%/*}" || panic
|
mkdir -p "${tmpdir}/${dest%/*}" || panic
|
||||||
|
|
||||||
# Iterate throught symlinks and copy them
|
# Iterate throught symlinks and copy them
|
||||||
while [ -h "$file" ]; do
|
while [ -h "$file" ]; do
|
||||||
cp -P "$file" "${tmpdir}${dest%/*}/${file##*/}"
|
cp -P "$file" "${tmpdir}/${dest%/*}/${file##*/}"
|
||||||
cd -P "${file%/*}"
|
cd -P "${file%/*}"
|
||||||
|
|
||||||
symlink=$(ls -ld "$file")
|
symlink=$(ls -ld "$file")
|
||||||
symlink="${symlink##* -> }"
|
symlink="${symlink##* -> }"
|
||||||
file="${PWD}/${symlink##*/}"
|
|
||||||
|
# TODO handle ../../..
|
||||||
|
case "$symlink" in
|
||||||
|
/*) file="$symlink" ;;
|
||||||
|
*) file="${PWD}/${symlink##*/}" ;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
# Handle case when file and dest have same basenames
|
[ -h "${tmpdir}/${dest}" ] && dest="$file"
|
||||||
[ -h "${tmpdir}${dest}" ] && dest="${dest%/*}/${file##*/}"
|
|
||||||
|
|
||||||
{
|
{
|
||||||
cp "$file" "${tmpdir}${dest}"
|
cp "$file" "${tmpdir}/${dest}"
|
||||||
chmod "$mode" "${tmpdir}${dest}"
|
chmod "$mode" "${tmpdir}/${dest}"
|
||||||
} || panic
|
} || panic
|
||||||
|
|
||||||
# https://www.shellcheck.net/wiki/SC2015
|
# https://www.shellcheck.net/wiki/SC2015
|
||||||
# shellcheck disable=2015
|
# shellcheck disable=2015
|
||||||
[ "$strip" = 1 ] && strip "${tmpdir}${dest}" > /dev/null 2>&1 || :
|
[ "$strip" = 1 ] && strip "${tmpdir}/${dest}" > /dev/null 2>&1 || :
|
||||||
)
|
)
|
||||||
|
|
||||||
copy_binary()
|
copy_binary()
|
||||||
|
Loading…
Reference in New Issue
Block a user