diff options
author | Laurentiu Palcu <laurentiu.palcu@intel.com> | 2013-09-25 15:40:28 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-09-26 16:37:56 +0100 |
commit | 1ffa203dd5cfc8c1b717ff3c7222eb3f0c21f5d5 (patch) | |
tree | 2ca0cb5aaaff5b8806a1d90817a5290e667e62f5 | |
parent | 2f8ce2c784ddf3f74e8ae68e594f750a47ccc3a9 (diff) | |
download | poky-1ffa203dd5cfc8c1b717ff3c7222eb3f0c21f5d5.tar.gz |
adt-installer: check if sudo is needed when installing target sysroot
Currently, if SDK is installed in a directory that needs sudo
preivileges, the target sysroot is also installed with sudo, even though
the location is in users's home directory.
This patch reuses the ownership checking code and uses it to check if
sudo is needed for target sysroot too.
[YOCTO #5259]
(From OE-Core rev: 5acfced041477d8c272485196e87ad601a0ce5b4)
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-x | meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal b/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal index abed90d241..ebfdf2a69b 100755 --- a/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal +++ b/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal | |||
@@ -42,6 +42,28 @@ parse_config() | |||
42 | esac | 42 | esac |
43 | } | 43 | } |
44 | 44 | ||
45 | get_sudo_app() | ||
46 | { | ||
47 | username=$(id -nu) | ||
48 | |||
49 | # find the owner of the parent | ||
50 | dir=$1 | ||
51 | while [ 1 ]; do | ||
52 | if [ -d $dir ]; then | ||
53 | owner=$(stat -c %U $dir) | ||
54 | break | ||
55 | else | ||
56 | dir=$(dirname $dir) | ||
57 | fi | ||
58 | done | ||
59 | |||
60 | if [ "$owner" = "$username" ]; then | ||
61 | true | ||
62 | else | ||
63 | echo sudo | ||
64 | fi | ||
65 | } | ||
66 | |||
45 | 67 | ||
46 | #let us install a qemu-native firstly | 68 | #let us install a qemu-native firstly |
47 | #installation step 2 | 69 | #installation step 2 |
@@ -60,26 +82,11 @@ fi | |||
60 | 82 | ||
61 | #Now begin to install native sdk and extract qemu rootfs which needs privilege rights | 83 | #Now begin to install native sdk and extract qemu rootfs which needs privilege rights |
62 | #depending on the install location | 84 | #depending on the install location |
63 | username=$(id -nu) | 85 | SUDO=$(get_sudo_app $NATIVE_INSTALL_DIR) |
64 | 86 | if [ -n "$SUDO" ]; then | |
65 | # find the owner of the parent | 87 | echo_info "#######################################################################" |
66 | dir=$NATIVE_INSTALL_DIR | 88 | echo_info "Please note from this point on installation requires sudo password ..." |
67 | while [ 1 ]; do | 89 | echo_info "#######################################################################" |
68 | if [ -d $dir ]; then | ||
69 | owner=$(stat -c %U $dir) | ||
70 | break | ||
71 | else | ||
72 | dir=$(dirname $dir) | ||
73 | fi | ||
74 | done | ||
75 | |||
76 | if [ "$owner" = "$username" ]; then | ||
77 | SUDO="" | ||
78 | else | ||
79 | echo_info "#######################################################################" | ||
80 | echo_info "Please note from this point on installation requires sudo password ..." | ||
81 | echo_info "#######################################################################" | ||
82 | SUDO=sudo | ||
83 | fi | 90 | fi |
84 | 91 | ||
85 | #we need to make this directory firstly since opkg need to use it. | 92 | #we need to make this directory firstly since opkg need to use it. |
@@ -249,6 +256,9 @@ target_machine=`eval echo $target_machine_var` | |||
249 | sysroot_image_name="core-image-$target_sysroot_image-$target_machine.tar.bz2" | 256 | sysroot_image_name="core-image-$target_sysroot_image-$target_machine.tar.bz2" |
250 | #echo_info "Extracting rootfs: $sysroot_image_name, using pseudo..." | 257 | #echo_info "Extracting rootfs: $sysroot_image_name, using pseudo..." |
251 | 258 | ||
259 | # sudo password might be needed to install the target sysroot | ||
260 | SUDO=$(get_sudo_app $target_sysroot) | ||
261 | |||
252 | $SUDO scripts/extract_rootfs $sysroot_image_name $target_sysroot $OECORE_NATIVE_SYSROOT $user_inst_type | 262 | $SUDO scripts/extract_rootfs $sysroot_image_name $target_sysroot $OECORE_NATIVE_SYSROOT $user_inst_type |
253 | check_result | 263 | check_result |
254 | 264 | ||
@@ -260,6 +270,7 @@ else | |||
260 | fi | 270 | fi |
261 | 271 | ||
262 | if [ ! -z "$env_filename" ]; then | 272 | if [ ! -z "$env_filename" ]; then |
273 | SUDO=$(get_sudo_app $INSTALL_FOLDER) | ||
263 | $SUDO sed -i -e "s%##SDKTARGETSYSROOT##%$target_sysroot%g" $env_filename | 274 | $SUDO sed -i -e "s%##SDKTARGETSYSROOT##%$target_sysroot%g" $env_filename |
264 | else | 275 | else |
265 | echo_info "[ADT_INST] Error: Failed to find environment script for arch: $1" | 276 | echo_info "[ADT_INST] Error: Failed to find environment script for arch: $1" |