]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
toolchain-shar-template.sh: fix installation of SDK ChenQi/SDK-installation
authorChen Qi <Qi.Chen@windriver.com>
Mon, 27 Oct 2014 11:57:51 +0000 (19:57 +0800)
committerChen Qi <Qi.Chen@windriver.com>
Mon, 27 Oct 2014 12:14:16 +0000 (20:14 +0800)
Previously, the installation of our SDK is not consistent.

For example, there's a user with user name 'test' and group name 'test', and
the user has sudo privilege. First, the user tries to install the SDK to his
own home directory /home/test, and the SDK files are installed with 'test' as
their owner. Then, the user tries to install the SDK to /opt/ directory which
is owned by root, and the SDK files are installed with 'root' as their owner.

We can see from the above example the same SDK would result in different
installation results only because the installation directories are different.

In fact, in the second use case above, the user has to use the `sudo' command
every time whenever he/she wants to perform some action with the SDK.

This patch fixes the above problems by installing the SDK with the current user
as the owner of the installed files.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
meta/files/toolchain-shar-template.sh

index 02035d4539af512a100638f39ff098661c4f3d15..592795c5e81d1e9a75d350fdc2a0e08c164836ed 100644 (file)
@@ -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))