diff options
-rw-r--r-- | meta/files/toolchain-shar-template.sh | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/meta/files/toolchain-shar-template.sh b/meta/files/toolchain-shar-template.sh index 02035d4539..592795c5e8 100644 --- a/meta/files/toolchain-shar-template.sh +++ b/meta/files/toolchain-shar-template.sh @@ -94,24 +94,33 @@ if [ "$answer" != "Y" -a "$answer" != "y" ]; then exit 1 fi -# Try to create the directory (this will not succeed if user doesn't have rights) +# Create directory under current user/group +USERID=`id -u` +GROUPID=`id -g` mkdir -p $target_sdk_dir >/dev/null 2>&1 - -# if don't have the right to access dir, gain by sudo -if [ ! -x $target_sdk_dir -o ! -w $target_sdk_dir -o ! -r $target_sdk_dir ]; then +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!" + echo "Error: Creating $target_sdk_dir needs sudo privilege, please install sudo or change your installation location. Abort!" exit 1 fi - - # test sudo could gain root right + # make sure sudo could gain root privilege $SUDO_EXEC pwd >/dev/null 2>&1 - [ $? -ne 0 ] && echo "Sorry, you are not allowed to execute as root." && exit 1 - - # now that we have sudo rights, create the directory - $SUDO_EXEC mkdir -p $target_sdk_dir >/dev/null 2>&1 + [ $? -ne 0 ] && echo "Error: Creating $target_sdk_dir failed. Please make sure you have sudo privilege." && exit 1 + # create directory and change its owner and group + $SUDO_EXEC mkdir -p $target_sdk_dir + $SUDO_EXEC chown ${USERID}:${GROUPID} $target_sdk_dir fi +# Make sure the created directory has the same UID/GID as the current user +FUID=`stat -c '%u' $target_sdk_dir` +FGID=`stat -c '%g' $target_sdk_dir` +if [ $USERID != $FUID -o $GROUPID != $FGID ]; then + echo "Error: $target_sdk_dir doesn't have the corret UID/GID. Abort!" + exit 1 +fi + +# From now on, we don't need to use sudo anymore +SUDO_EXEC="" payload_offset=$(($(grep -na -m1 "^MARKER:$" $0|cut -d':' -f1) + 1)) |