toolchain-shar-template.sh: fix installation of SDK
cover toolchain-shar-template.sh: fix installation of SDK
The following changes since commit 4143f3b0ce0d0c52f5b0babc1bb16ac0ac9610eb:
nativesdk-cmake: Adjust toolchain paths dynamically (2014-10-24 21:59:34 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib ChenQi/SDK-installation
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=ChenQi/SDK-installation
Chen Qi (1):
toolchain-shar-template.sh: fix installation of SDK
meta/files/toolchain-shar-template.sh | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-)
Signature · 1 line
1.9.1
PATCH 1/1 toolchain-shar-template.sh: fix installation of SDK
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.
--- meta/files/toolchain-shar-template.sh | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-)
meta/files/toolchain-shar-template.sh +20 -11
@@ -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))
Signature · 1 line
1.9.1