mirror of
https://git.yoctoproject.org/poky
synced 2026-04-29 18:32:20 +02:00
If SDK will be extracted in the same folder as sdk shar script. The shar_relocate will substitute SDK.sh script SDKPATH with extract destination path. After that operation no one will be able use this sdk script as paths in it will be different. To fix this we need to filter out sdk script and relocate_sdk scripts from SDKPATH substitution (From OE-Core rev: 723434fb3bb78f18fdf281d31efa5b59138ca8a6) Signed-off-by: Krzysztof Zawadzki <krzysztof.zawadzki@nokia.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
62 lines
2.1 KiB
Bash
62 lines
2.1 KiB
Bash
# fix dynamic loader paths in all ELF SDK binaries
|
|
native_sysroot=$($SUDO_EXEC cat $env_setup_script |grep 'OECORE_NATIVE_SYSROOT='|cut -d'=' -f2|tr -d '"')
|
|
dl_path=$($SUDO_EXEC find $native_sysroot/lib -name "ld-linux*")
|
|
if [ "$dl_path" = "" ] ; then
|
|
echo "SDK could not be set up. Relocate script unable to find ld-linux.so. Abort!"
|
|
exit 1
|
|
fi
|
|
executable_files=$($SUDO_EXEC find $native_sysroot -type f \
|
|
\( -perm -0100 -o -perm -0010 -o -perm -0001 \) -printf "'%h/%f' ")
|
|
|
|
tdir=`mktemp -d`
|
|
if [ x$tdir = x ] ; then
|
|
echo "SDK relocate failed, could not create a temporary directory"
|
|
exit 1
|
|
fi
|
|
cat <<EOF >> $tdir/relocate_sdk.sh
|
|
#!/bin/bash
|
|
for py in python python2 python3
|
|
do
|
|
PYTHON=\`which \${py} 2>/dev/null\`
|
|
if [ \$? -eq 0 ]; then
|
|
break;
|
|
fi
|
|
done
|
|
|
|
if [ x\${PYTHON} = "x" ]; then
|
|
echo "SDK could not be relocated. No python found."
|
|
exit 1
|
|
fi
|
|
\${PYTHON} ${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files
|
|
EOF
|
|
|
|
$SUDO_EXEC mv $tdir/relocate_sdk.sh ${env_setup_script%/*}/relocate_sdk.sh
|
|
$SUDO_EXEC chmod 755 ${env_setup_script%/*}/relocate_sdk.sh
|
|
rm -rf $tdir
|
|
if [ $relocate = 1 ] ; then
|
|
$SUDO_EXEC ${env_setup_script%/*}/relocate_sdk.sh
|
|
if [ $? -ne 0 ]; then
|
|
echo "SDK could not be set up. Relocate script failed. Abort!"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# replace @SDKPATH@ with the new prefix in all text files: configs/scripts/etc.
|
|
# replace the host perl with SDK perl.
|
|
for replace in "$target_sdk_dir -maxdepth 1" "$native_sysroot"; do
|
|
$SUDO_EXEC find $replace -type f
|
|
done | xargs -n100 file | grep ":.*\(ASCII\|script\|source\).*text" | \
|
|
awk -F':' '{printf "\"%s\"\n", $1}' | \
|
|
grep -Ev "$target_sdk_dir/(environment-setup-*|relocate_sdk*|${0##*/})" | \
|
|
xargs -n100 $SUDO_EXEC sed -i \
|
|
-e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" \
|
|
-e "s:^#! */usr/bin/perl.*:#! /usr/bin/env perl:g" \
|
|
-e "s: /usr/bin/perl: /usr/bin/env perl:g"
|
|
|
|
# change all symlinks pointing to @SDKPATH@
|
|
for l in $($SUDO_EXEC find $native_sysroot -type l); do
|
|
$SUDO_EXEC ln -sfn $(readlink $l|$SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
|
|
done
|
|
|
|
echo done
|