]> code.ossystems Code Review - openembedded-core.git/commitdiff
extensible sdk: Error when trying to install as root.
authorRandy Witt <randy.e.witt@linux.intel.com>
Thu, 16 Jul 2015 20:34:21 +0000 (13:34 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 20 Jul 2015 09:39:00 +0000 (10:39 +0100)
Since the extensible sdk uses bitbake, which can't run as root, the sdk
shouldn't be installed as root.

Previously it would error out late into setup when bitbake errored
saying not to run bitbake as root.

Now the script errors with a message saying the extensible sdk can't be
installed as root.

[Yocto #7545]

Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/populate_sdk_base.bbclass
meta/classes/populate_sdk_ext.bbclass
meta/files/toolchain-shar-extract.sh

index 398e943a4608454fa2d03a3fcb72d4f218cd75f4..a9e9bd71d21d527d1945196212ebaee5423b95f9 100644 (file)
@@ -51,6 +51,7 @@ PID = "${@os.getpid()}"
 EXCLUDE_FROM_WORLD = "1"
 
 SDK_PACKAGING_FUNC ?= "create_shar"
+SDK_PRE_INSTALL_COMMAND ?= ""
 SDK_POST_INSTALL_COMMAND ?= ""
 SDK_RELOCATE_AFTER_INSTALL ?= "1"
 
@@ -134,15 +135,21 @@ fakeroot create_shar() {
        # copy in the template shar extractor script
        cp ${COREBASE}/meta/files/toolchain-shar-extract.sh ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
 
-       rm -f ${T}/post_install_command
+       rm -f ${T}/pre_install_command ${T}/post_install_command
 
        if [ ${SDK_RELOCATE_AFTER_INSTALL} -eq 1 ] ; then
                cp ${COREBASE}/meta/files/toolchain-shar-relocate.sh ${T}/post_install_command
        fi
+       cat << "EOF" >> ${T}/pre_install_command
+${SDK_PRE_INSTALL_COMMAND}
+EOF
+
        cat << "EOF" >> ${T}/post_install_command
 ${SDK_POST_INSTALL_COMMAND}
 EOF
-       sed -i -e '/@SDK_POST_INSTALL_COMMAND@/r ${T}/post_install_command' ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
+       sed -i -e '/@SDK_PRE_INSTALL_COMMAND@/r ${T}/pre_install_command' \
+               -e '/@SDK_POST_INSTALL_COMMAND@/r ${T}/post_install_command' \
+               ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
 
        # substitute variables
        sed -i -e 's#@SDK_ARCH@#${SDK_ARCH}#g' \
@@ -151,6 +158,7 @@ EOF
                -e 's#@REAL_MULTIMACH_TARGET_SYS@#${REAL_MULTIMACH_TARGET_SYS}#g' \
                -e 's#@SDK_TITLE@#${SDK_TITLE}#g' \
                -e 's#@SDK_VERSION@#${SDK_VERSION}#g' \
+               -e '/@SDK_PRE_INSTALL_COMMAND@/d' \
                -e '/@SDK_POST_INSTALL_COMMAND@/d' \
                ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
 
index 8a80a563f0d239345485c8cfa7fea66835a2e91d..b28413b8f51cfa31c2e5f8c26607cb50902c6a0c 100644 (file)
@@ -173,6 +173,17 @@ install_tools() {
        install ${SDK_DEPLOY}/${BUILD_ARCH}-nativesdk-libc.tar.bz2 ${SDK_OUTPUT}/${SDKPATH}
 }
 
+# Since bitbake won't run as root it doesn't make sense to try and install
+# the extensible sdk as root.
+sdk_ext_preinst() {
+       if [ "`id -u`" = "0" ]; then
+               echo "ERROR: The extensible sdk cannot be installed as root."
+               exit 1
+       fi
+       SDK_EXTENSIBLE="1"
+}
+SDK_PRE_INSTALL_COMMAND_task-populate-sdk-ext = "${sdk_ext_preinst}"
+
 # FIXME this preparation should be done as part of the SDK construction
 sdk_ext_postinst() {
        printf "\nExtracting buildtools...\n"
index 8cb8783f97336ec4d3fdcaf5beda8a7723229d32..0a33ee8f5df79842db130b3314a64d19f456580a 100644 (file)
@@ -71,6 +71,8 @@ if [ $verbose = 1 ] ; then
        set -x
 fi
 
+@SDK_PRE_INSTALL_COMMAND@
+
 if [ "$target_sdk_dir" = "" ]; then
        read -e -p "Enter target directory for SDK (default: $DEFAULT_INSTALL_DIR): " target_sdk_dir
        [ "$target_sdk_dir" = "" ] && target_sdk_dir=$DEFAULT_INSTALL_DIR
@@ -116,6 +118,11 @@ 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 [ "$SDK_EXTENSIBLE" = "1" ]; then
+               echo "Unable to access \"$target_sdk_dir\"."
+               exit 1
+       fi
+
        SUDO_EXEC=$(which "sudo")
        if [ -z $SUDO_EXEC ]; then
                echo "No command 'sudo' found, please install sudo first. Abort!"