2011-01-04 07:21:40 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Yocto ADT Installer
|
|
|
|
#
|
|
|
|
# Copyright 2010-2011 by Intel Corp.
|
|
|
|
#
|
|
|
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
# of this software and associated documentation files (the "Software"), to deal
|
|
|
|
# in the Software without restriction, including without limitation the rights
|
|
|
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
# copies of the Software, and to permit persons to whom the Software is
|
|
|
|
# furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
# The above copyright notice and this permission notice shall be included in
|
|
|
|
# all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
|
# THE SOFTWARE.
|
|
|
|
|
|
|
|
parse_config()
|
|
|
|
{
|
|
|
|
INST_ARCH=`uname -m`
|
|
|
|
|
|
|
|
case $INST_ARCH in
|
|
|
|
i[3-6]86)
|
|
|
|
OPKG_CONFIG_FILE=$YOCTOADT_OPKG_CONF_FILE_32
|
2011-02-09 06:30:25 +00:00
|
|
|
#POKY_NATIVE_SYSROOT="$INSTALL_FOLDER/sysroots/i586-pokysdk-linux/"
|
|
|
|
POKY_NATIVE_SYSROOT="$INSTALL_FOLDER/sysroots/$INST_ARCH-pokysdk-linux/"
|
2011-01-04 07:21:40 +00:00
|
|
|
;;
|
|
|
|
x86_64)
|
|
|
|
OPKG_CONFIG_FILE=$YOCTOADT_OPKG_CONF_FILE_64
|
|
|
|
POKY_NATIVE_SYSROOT="$INSTALL_FOLDER/sysroots/x86_64-pokysdk-linux/"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo_info "[ADT_INST] Error: Installation Machine is not supported!"
|
|
|
|
exit -1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#let us install a qemu-native firstly
|
|
|
|
#installation step 2
|
|
|
|
install_native_sdk()
|
|
|
|
{
|
|
|
|
|
|
|
|
echo_info "\nStart installing selected native ADT for archs: $YOCTOADT_TARGETS..."
|
|
|
|
|
|
|
|
# where the packages are installed. Currently only / is supported
|
|
|
|
NATIVE_INSTALL_DIR="/"
|
|
|
|
|
|
|
|
if [ -d "$INSTALL_FOLDER" ]; then
|
|
|
|
echo_info "\nNative ADT installation directory \"$INSTALL_FOLDER\" already exists! Continue installation will override its contents!"
|
|
|
|
confirm_install $1
|
|
|
|
fi
|
|
|
|
|
|
|
|
#Now begin to install native sdk and extract qemu rootfs which needs privilege rights
|
|
|
|
echo_info "#######################################################################"
|
|
|
|
echo_info "Please note from this point on installation requires sudo password ..."
|
|
|
|
echo_info "#######################################################################"
|
|
|
|
username='id -nu'
|
|
|
|
#we need to make this directory firstly since opkg need to use it.
|
|
|
|
OPKG_LOCK_DIR="$NATIVE_INSTALL_DIR/$OPKG_LIBDIR/opkg"
|
|
|
|
if [ ! -d "$OPKG_LOCK_DIR" ]; then
|
|
|
|
sudo mkdir -p $OPKG_LOCK_DIR
|
|
|
|
echo_info "Successfully create directory $OPKG_LOCK_DIR. "
|
|
|
|
#if user delete /opt/poky, while dangling folders there, report error
|
|
|
|
elif [ ! -d "$INSTALL_FOLDER" ]; then
|
|
|
|
echo_info "\nDangling opkg cache folder $OPKG_LOCK_DIR detected. Continue installation will remove the folder!"
|
|
|
|
confirm_install $1
|
|
|
|
sudo rm -rf $OPKG_LOCK_DIR
|
|
|
|
sudo mkdir -p $OPKG_LOCK_DIR
|
|
|
|
#if user are updating installing, just let him/her go, give her/him prompt
|
|
|
|
else
|
|
|
|
echo_info "ADT has already been installed. Will update its contents..."
|
|
|
|
fi
|
|
|
|
|
|
|
|
#first update repository
|
2011-03-02 19:18:38 +00:00
|
|
|
OPKG_CMD="sudo -E $LOCAL_OPKG_LOC/bin/opkg-cl"
|
2011-01-04 07:21:40 +00:00
|
|
|
|
|
|
|
echo_info "Updating opkg..."
|
|
|
|
$OPKG_CMD -f $OPKG_CONFIG_FILE -o $NATIVE_INSTALL_DIR update &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
echo_info "opkg update process ended..."
|
|
|
|
check_result
|
|
|
|
|
|
|
|
#install below must sdk-host packages
|
2011-03-08 04:55:08 +00:00
|
|
|
OPKG_INSTALL_CMD="$OPKG_CMD "
|
2011-01-04 07:21:40 +00:00
|
|
|
OPKG_INSTALL_NATIVE_CMD="$OPKG_INSTALL_CMD -f $OPKG_CONFIG_FILE -o $NATIVE_INSTALL_DIR install"
|
|
|
|
|
|
|
|
echo_info "Installing pseudo nativesdk ...\n"
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD pseudo-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
echo_info "Installing opkg nativesdk ...\n"
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD opkg-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
echo_info "Installing pkgconfig nativesdk ...\n"
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD pkgconfig-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
2011-03-03 02:10:49 +00:00
|
|
|
echo_info "Installing libtool nativesdk ...\n"
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD libtool-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
2011-01-04 07:21:40 +00:00
|
|
|
|
|
|
|
for native_target_type in $YOCTOADT_TARGETS; do
|
|
|
|
native_target_type=`echo "$native_target_type" | sed -e 's/x86_64/x86-64/' -e 's/x86$/i586/'`
|
|
|
|
echo_info "Installing cross toolchain for $native_target_type ..."
|
|
|
|
echo_info "Installing binutils for $native_target_type ..."
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD binutils-cross-canadian-$native_target_type &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
echo_info "Installing gcc for $native_target_type ..."
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD gcc-cross-canadian-$native_target_type &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
echo_info "Installing gdb for $native_target_type ..."
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD gdb-cross-canadian-$native_target_type &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
|
|
|
|
echo_info "Installing envrionement file for $native_target_type ..."
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD meta-environment-$native_target_type &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
# Link the ld.so.cache file into the hosts filesystem
|
|
|
|
if [ ! -f "$POKY_NATIVE_SYSROOT/etc/ld.so.cache" ]; then
|
|
|
|
echo_info "Link the ld.so.cache file into the host filesystem"
|
|
|
|
sudo ln -s /etc/ld.so.cache $POKY_NATIVE_SYSROOT/etc/ld.so.cache
|
|
|
|
check_result
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$YOCTOADT_QEMU" == "Y" ] || [ "$YOCTOADT_QEMU" = "y" ]; then
|
|
|
|
echo_info "\nInstalling qemu native ..."
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD qemu-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD qemu-helper-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$YOCTOADT_NFS_UTIL" == "Y" ] || [ "$YOCTOADT_NFS_UTIL" == "y" ]; then
|
|
|
|
echo_info "\nInstalling unfs ..."
|
|
|
|
$OPKG_INSTALL_NATIVE_CMD unfs-server-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
|
|
|
|
check_result
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo_info "\nSuccessfully installed selected native ADT!"
|
|
|
|
}
|
|
|
|
|
|
|
|
#Need three input params, $1 -- arch_type(arm powerpc x86 mips) #2 -- user installation type
|
|
|
|
#customer or scilent
|
|
|
|
|
|
|
|
install_target()
|
|
|
|
{
|
|
|
|
|
|
|
|
# rootfs extraction directory
|
|
|
|
target_sysroot_var="\$YOCTOADT_TARGET_SYSROOT_LOC_$1"
|
|
|
|
target_sysroot=`eval echo $target_sysroot_var`
|
|
|
|
|
|
|
|
if [ "$target_sysroot" == "" ]; then
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
target_sysroot_image_var="\$YOCTOADT_TARGET_SYSROOT_IMAGE_$1"
|
|
|
|
target_sysroot_image=`eval echo $target_sysroot_image_var`
|
|
|
|
if [ "$target_sysroot_image" == "" ]; then
|
|
|
|
echo_info "[ADT_INST] Error: YOCTOADT_TARGET_SYSROOT_IMAGE_$1 selection is empty, failed to create target sysroot!"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo_info "Installing target sysroot for arch: $1, rootfs type: $target_sysroot_image, location: $target_sysroot"
|
|
|
|
|
|
|
|
sysroot_image_name="poky-image-$target_sysroot_image-qemu$1.tar.bz2"
|
|
|
|
#echo_info "Extracting rootfs: $sysroot_image_name, using pseudo..."
|
|
|
|
|
|
|
|
scripts/extract_rootfs $sysroot_image_name $target_sysroot $POKY_NATIVE_SYSROOT $user_inst_type
|
|
|
|
check_result
|
|
|
|
|
|
|
|
echo_info "Updating environment script with target sysroot location."
|
|
|
|
if [ "$1" == "x86" ]; then
|
|
|
|
env_filename=`ls $INSTALL_FOLDER/environment-setup-i586*`
|
|
|
|
else
|
|
|
|
env_filename=`ls $INSTALL_FOLDER/environment-setup-$1*`
|
|
|
|
fi
|
|
|
|
if [ ! -z "$env_filename" ]; then
|
|
|
|
sudo sed -i -e "s%##SDKTARGETSYSROOT##%$target_sysroot%g" $env_filename
|
|
|
|
else
|
|
|
|
echo_info "[ADT_INST] Error: Failed to find environment script for arch: $1"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#Main part
|
|
|
|
. scripts/data_define
|
|
|
|
. scripts/util
|
|
|
|
|
|
|
|
parse_config
|
|
|
|
|
|
|
|
#secondly we will start to install native tools
|
|
|
|
user_inst_type=$1
|
|
|
|
install_native_sdk $user_inst_type
|
|
|
|
check_result
|
|
|
|
|
|
|
|
for arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
|
|
|
|
install_target $arch_type
|
|
|
|
check_result
|
|
|
|
done
|
|
|
|
|
|
|
|
|