populate_sdk_base:tarball installer:add sudo prompt
1.Adds a sudo passwd prompt during installation if the user couldn't install on the dir. 2.Adds option -d <dir> to enter dir without prompt. 3.Adds option -y for automatic yes to all prompts, a non- interactive method. [YOCTO# 3153] [YOCTO# 3309] (From OE-Core rev: e85e1aace604626914a06dab4663094d6dd9b035) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
d55945c469
commit
1b98ab72e7
|
@ -128,12 +128,33 @@ fi
|
||||||
|
|
||||||
DEFAULT_INSTALL_DIR="${SDKPATH}"
|
DEFAULT_INSTALL_DIR="${SDKPATH}"
|
||||||
COMPONENTS_LEN=$(echo ".${SDKPATH}" | sed "s/\// /g" | wc -w)
|
COMPONENTS_LEN=$(echo ".${SDKPATH}" | sed "s/\// /g" | wc -w)
|
||||||
|
SUDO_EXEC=""
|
||||||
|
target_sdk_dir=""
|
||||||
|
answer=""
|
||||||
|
while getopts ":yd:" OPT; do
|
||||||
|
case $OPT in
|
||||||
|
y)
|
||||||
|
answer="Y"
|
||||||
|
[ "$target_sdk_dir" = "" ] && target_sdk_dir=$DEFAULT_INSTALL_DIR
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
target_sdk_dir=$OPTARG
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $(basename $0) [-y] [-d <dir>]"
|
||||||
|
echo " -y Automatic yes to all prompts"
|
||||||
|
echo " -d <dir> Install the SDK to <dir>"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
printf "Enter target directory for SDK (default: $DEFAULT_INSTALL_DIR): "
|
printf "Enter target directory for SDK (default: $DEFAULT_INSTALL_DIR): "
|
||||||
read target_sdk_dir
|
|
||||||
|
|
||||||
if [ "$target_sdk_dir" = "" ]; then
|
if [ "$target_sdk_dir" = "" ]; then
|
||||||
target_sdk_dir=$DEFAULT_INSTALL_DIR
|
read target_sdk_dir
|
||||||
|
[ "$target_sdk_dir" = "" ] && target_sdk_dir=$DEFAULT_INSTALL_DIR
|
||||||
|
else
|
||||||
|
echo "$target_sdk_dir"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
eval target_sdk_dir=$target_sdk_dir
|
eval target_sdk_dir=$target_sdk_dir
|
||||||
|
@ -153,10 +174,12 @@ else
|
||||||
|
|
||||||
default_answer="y"
|
default_answer="y"
|
||||||
fi
|
fi
|
||||||
read answer
|
|
||||||
|
|
||||||
if [ "$answer" = "" ]; then
|
if [ "$answer" = "" ]; then
|
||||||
answer="$default_answer"
|
read answer
|
||||||
|
[ "$answer" = "" ] && answer="$default_answer"
|
||||||
|
else
|
||||||
|
echo $answer
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$answer" != "Y" -a "$answer" != "y" ]; then
|
if [ "$answer" != "Y" -a "$answer" != "y" ]; then
|
||||||
|
@ -164,47 +187,57 @@ if [ "$answer" != "Y" -a "$answer" != "y" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# create dir and don't care about the result.
|
||||||
mkdir -p $target_sdk_dir >/dev/null 2>&1
|
mkdir -p $target_sdk_dir >/dev/null 2>&1
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Error: Unable to create target directory. Do you have permissions?"
|
# if don't have the right to access dir, gain by sudo
|
||||||
exit 1
|
if [ ! -x $target_sdk_dir -o ! -w $target_sdk_dir -o ! -r $target_sdk_dir ]; then
|
||||||
|
SUDO_EXEC=$(which "sudo")
|
||||||
|
if [ -z $SUDO_EXEC ]; then
|
||||||
|
echo "No command 'sudo' found, please install sudo first. Abort!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# test sudo could gain root right
|
||||||
|
$SUDO_EXEC pwd >/dev/null 2>&1
|
||||||
|
[ $? -ne 0 ] && echo "Sorry, you are not allowed to execute as root." && exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
payload_offset=$(($(grep -na -m1 "^MARKER:$" $0|cut -d':' -f1) + 1))
|
payload_offset=$(($(grep -na -m1 "^MARKER:$" $0|cut -d':' -f1) + 1))
|
||||||
|
|
||||||
printf "Extracting SDK..."
|
printf "Extracting SDK..."
|
||||||
tail -n +$payload_offset $0| tar xj --strip-components=$COMPONENTS_LEN -C $target_sdk_dir
|
tail -n +$payload_offset $0| $SUDO_EXEC tar xj --strip-components=$COMPONENTS_LEN -C $target_sdk_dir
|
||||||
echo "done"
|
echo "done"
|
||||||
|
|
||||||
printf "Setting it up..."
|
printf "Setting it up..."
|
||||||
# fix environment paths
|
# fix environment paths
|
||||||
for env_setup_script in `ls $target_sdk_dir/environment-setup-*`; do
|
for env_setup_script in `ls $target_sdk_dir/environment-setup-*`; do
|
||||||
sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" -i $env_setup_script
|
$SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" -i $env_setup_script
|
||||||
done
|
done
|
||||||
|
|
||||||
# fix dynamic loader paths in all ELF SDK binaries
|
# fix dynamic loader paths in all ELF SDK binaries
|
||||||
native_sysroot=$(cat $env_setup_script |grep OECORE_NATIVE_SYSROOT|cut -d'=' -f2|tr -d '"')
|
native_sysroot=$($SUDO_EXEC cat $env_setup_script |grep OECORE_NATIVE_SYSROOT|cut -d'=' -f2|tr -d '"')
|
||||||
dl_path=$(find $native_sysroot/lib -name "ld-linux*")
|
dl_path=$($SUDO_EXEC find $native_sysroot/lib -name "ld-linux*")
|
||||||
executable_files=$(find $native_sysroot -type f -perm +111)
|
executable_files=$($SUDO_EXEC find $native_sysroot -type f -perm +111)
|
||||||
${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files
|
$SUDO_EXEC ${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "SDK could not be set up. Relocate script failed. Abort!"
|
echo "SDK could not be set up. Relocate script failed. Abort!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# replace ${SDKPATH} with the new prefix in all text files: configs/scripts/etc
|
# replace ${SDKPATH} with the new prefix in all text files: configs/scripts/etc
|
||||||
find $native_sysroot -type f -exec file '{}' \;|grep ":.*ASCII.*text"|cut -d':' -f1|xargs sed -i -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g"
|
$SUDO_EXEC find $native_sysroot -type f -exec file '{}' \;|$SUDO_EXEC grep ":.*ASCII.*text"|cut -d':' -f1|$SUDO_EXEC xargs sed -i -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g"
|
||||||
|
|
||||||
# change all symlinks pointing to ${SDKPATH}
|
# change all symlinks pointing to ${SDKPATH}
|
||||||
for l in $(find $native_sysroot -type l); do
|
for l in $($SUDO_EXEC find $native_sysroot -type l); do
|
||||||
ln -sfn $(readlink $l|sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
|
$SUDO_EXEC ln -sfn $(readlink $l|$SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
|
||||||
done
|
done
|
||||||
|
|
||||||
echo done
|
echo done
|
||||||
|
|
||||||
# delete the relocating script, so that user is forced to re-run the installer
|
# delete the relocating script, so that user is forced to re-run the installer
|
||||||
# if he/she wants another location for the sdk
|
# if he/she wants another location for the sdk
|
||||||
rm ${env_setup_script%/*}/relocate_sdk.py
|
$SUDO_EXEC rm ${env_setup_script%/*}/relocate_sdk.py
|
||||||
|
|
||||||
echo "SDK has been successfully set up and is ready to be used."
|
echo "SDK has been successfully set up and is ready to be used."
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue