aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/files/toolchain-shar-template.sh31
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))