summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/installer/adt-installer/adt_installer
diff options
context:
space:
mode:
authorLiping Ke <liping.ke@intel.com>2011-01-03 23:21:40 -0800
committerSaul Wold <sgw@linux.intel.com>2011-01-12 00:55:49 -0800
commit514e59c780ac24439ae0839fab311d843841bf68 (patch)
tree3130a2992cc9428db0440427dc9df74fd06662c9 /meta/recipes-devtools/installer/adt-installer/adt_installer
parent03072100f112b9690c1a99d1c406c098a9005a84 (diff)
downloadpoky-514e59c780ac24439ae0839fab311d843841bf68.tar.gz
adt-intaller feature implementation, including the bitbake recipe file for creating the intaller tar file under /tmp/deploy/sdk, and the adt-installer script files and config files, set the reference to adt repo entry empty before it's setup
Signed-off-by: Jessica Zhang <jessica.zhang@intel.com>
Diffstat (limited to 'meta/recipes-devtools/installer/adt-installer/adt_installer')
-rwxr-xr-xmeta/recipes-devtools/installer/adt-installer/adt_installer367
1 files changed, 367 insertions, 0 deletions
diff --git a/meta/recipes-devtools/installer/adt-installer/adt_installer b/meta/recipes-devtools/installer/adt-installer/adt_installer
new file mode 100755
index 0000000000..d47be4123b
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/adt_installer
@@ -0,0 +1,367 @@
1#/bin/bash
2# Yocto ADT Installer
3#
4# Copyright 2010-2011 by Intel Corp.
5#
6# Permission is hereby granted, free of charge, to any person obtaining a copy
7# of this software and associated documentation files (the "Software"), to deal
8# in the Software without restriction, including without limitation the rights
9# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10# copies of the Software, and to permit persons to whom the Software is
11# furnished to do so, subject to the following conditions:
12
13# The above copyright notice and this permission notice shall be included in
14# all copies or substantial portions of the Software.
15
16# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22# THE SOFTWARE.
23
24
25usage ()
26{
27
28 INST_ARCH=`uname -m`
29 INST_OS=`uname -o| tr '[A-Z]' '[a-z]'`
30 INST_KR=`uname -r| tr '[A-Z]' '[a-z]'`
31
32 echo_info "#########################################################################"
33 echo_info "# Welcome to Yocto Application Developement Tools (ADT) Installer"
34 echo_info "# "
35 echo_info "# Host Machine:\t\t\t\t"$INST_ARCH
36 echo_info "# OS info:\t\t\t\t$INST_KR"
37 echo_info "# Yocto ADT version to be installed:\t$YOCTOADT_VERSION"
38 echo_info "# supported target architectures:\t$YOCTOADT_SUPPORTED_TARGETS"
39 echo_info "# supported target root_fs images:\t$YOCTOADT_SUPPORTED_ROOTFS"
40 echo_info "#########################################################################\n"
41
42 echo_info "Systemwide installation. Installation will occur under $INSTALL_FOLDER\n"
43 echo_info "############################################################################"
44 echo_info "# Your system installation configurations from adt_installer.conf"
45 echo_info "############################################################################"
46
47 echo_info "# Cross toolchains:\t\t$YOCTOADT_TARGETS"
48 echo_info "# Install Qemu:\t\t\t$YOCTOADT_QEMU"
49 echo_info "# Install NFS utilities:\t$YOCTOADT_NFS_UTIL"
50 #echo_info "# Install bitbake + UI:\t\t$YOCTOADT_BITBAKE"
51 #echo_info "# Install poky metadata:\t$YOCTOADT_METADATA"
52 #echo_info "############################################################################\n"
53
54 echo_info "\n##############################################################################"
55 echo_info "# Your rootfs image(s) and target sysroot selections from adt_installer.conf"
56 echo_info "##############################################################################"
57prompt=1
58for arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
59 download_images $arch_type $prompt
60done
61 echo_info "############################################################################\n"
62 select_install_type
63}
64
65validate_config()
66{
67
68 for selected_arch_type in $YOCTOADT_TARGETS; do
69 found=0
70 for supported_arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
71 if [ "$selected_arch_type" == "$supported_arch_type" ]; then
72 found=1
73 break
74 fi
75 done
76 if [ $found == 0 ]; then
77 echo_info "[ADT_INST] Error: YOCTADT_TARGETS in adt_installer.conf contains invalid entries: $YOCTOADT_TARGETS. Valid values are: $YOCTOADT_SUPPORTED_TARGETS"
78 echo -e "\n#############################################################################"
79 echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
80 echo -e "#############################################################################\n"
81 exit -1
82 fi
83 done
84
85 for arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
86 #select_target_var="\$YOCTOADT_TARGET_$arch_type"
87 #select_target=`eval echo $select_target_var`
88
89 #if [ "$select_target" != "Y" ] || [ "$selected_target" != "y" ]; then
90 # continue;
91 #fi
92
93 target_sysroot_image_var="\$YOCTOADT_TARGET_SYSROOT_IMAGE_$arch_type"
94 target_sysroot_image=`eval echo $target_sysroot_image_var`
95
96
97 select_rootfs_var="\$YOCTOADT_ROOTFS_$arch_type"
98 select_rootfs=`eval echo $select_rootfs_var`
99
100 if [ "$select_rootfs" == "" ] && [ "$target_sysroot_image" == "" ]; then
101 continue;
102 fi
103
104 for image_type in $select_rootfs; do
105#validate rootfs type defined in YOCTOADT_ROOTFS_{ARCH} is valid and in YOCTOADT_SUPPORTED_ROOTFS
106 found=0
107 for supported_rootfs_type in $YOCTOADT_SUPPORTED_ROOTFS; do
108 if [ "$image_type" == "$supported_rootfs_type" ]; then
109 found=1
110 break
111 fi
112 done
113 if [ $found == 0 ]; then
114#the rootfs type listed for downloading is not valid
115 echo_info "[ADT_INST] Error: Selected YOCTOADT_ROOTFS_$arch_type value: $image_type, is not valid! Valid values are: $YOCTOADT_SUPPORTED_ROOTFS "
116 echo -e "\n#############################################################################"
117 echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
118 echo -e "#############################################################################\n"
119 exit -1
120 fi
121 done
122
123 found=0
124 for image_type in $select_rootfs; do
125#validate that rootfs to be extracted must be in the item: YOCTOADT_ROOTFS_${ARCH}
126 if [ "$target_sysroot_image" == "$image_type" ]; then
127 found=1
128 break
129 fi
130 done
131# the rootfs image to be extracted is not selected
132 if [ $found == 0 ]; then
133 echo_info "[ADT_INST] Error: YOCTOADT_TARGET_SYSROOT_IMAGE_$arch_type selection: $target_sysroot_image is not included in YOCTOADT_ROOTFS_$arch_type selections: $select_rootfs"
134 echo -e "\n#############################################################################"
135 echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
136 echo -e "#############################################################################\n"
137 exit -1
138 fi
139 done
140}
141
142
143#detect opkg installed or not, for installing sdk, we will use
144#this installed local opkg
145install_opkg()
146{
147if [ ! -x "$LOCAL_OPKG_LOC/bin/opkg-cl" ]; then
148 echo_info "OPKG is not setup, setting up opkg in local, which is required for installing yocto ADT...\n"
149
150 if [ -d $LOCAL_OPKG_LOC ]; then
151 echo_info "Deleting old OPKG folder, which doesn't contain executables... "
152 rm -rf $LOCAL_OPKG_LOC
153 fi
154
155 parent_folder=`eval echo $PWD`
156 cd $LOCAL_OPKG_FOLDER
157 check_result
158
159 opkg_source_dir=`ls -d opkg-*`
160
161 if [ $opkg_source_dir == "" ]; then
162 echo_info "[ADT_INST] Error: OPKG source directory is not found!"
163 echo -e "\n#############################################################################"
164 echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
165 echo -e "#############################################################################\n"
166 exit -1
167 fi
168
169 cd $opkg_source_dir
170 check_result
171
172 echo_info "Configure opkg ...\n"
173 ./configure --prefix=$parent_folder/$LOCAL_OPKG_LOC --with-opkglibdir=$OPKG_LIBDIR --disable-curl --disable-ssl-curl --disable-gpg --disable-shave >> $parent_folder/$YOCTOADT_INSTALL_LOG_FILE
174 check_result
175
176 echo_info "Make opkg ...\n"
177 make &>> $parent_folder/$YOCTOADT_INSTALL_LOG_FILE
178 check_result
179
180 echo_info "Make Install opkg ...\n"
181 make install &>> $parent_folder/$YOCTOADT_INSTALL_LOG_FILE
182 #if meet error when installing opkg, cancel the installation
183 check_result
184
185 cd $parent_folder
186 echo_info "Successfully installed OPKG.\n"
187fi
188}
189
190confirm_download()
191{
192#avoid repeated reminding
193if [ "$override_oldfile" == 1 ]; then
194 return $pre_result
195else
196 override_oldfile=1
197fi
198
199while true; do
200 #echo_info "[ADT_INST] Files [$1] already exists. If you continue downloading, old files will be overrided."
201 #echo_info "[ADT_INST] Further prompts will not be given if there're more existing files to be downloaded."
202 #echo_info "[ADT_INST] Do you want to continue downloading? Please enter Y/N:"
203 echo_info "\nFile [$1] already exists, which means you've downloaded the qemu kernel and rootfs file(s) before. If you choose continue downloading, old files will be overridden."
204 echo_info "[ADT_INST] Do you want to continue downloading? Please enter Y/N:"
205 read YOCTOADT_INSTALL
206 YOCTOADT_INSTALL=`tr '[a-z]' '[A-Z]'<<<"$YOCTOADT_INSTALL"`
207 if [ "$YOCTOADT_INSTALL" == "Y" ]; then
208 pre_result=0
209 return 0
210 elif [ "$YOCTOADT_INSTALL" == "N" ]; then
211 pre_result=1
212 return 1
213 fi
214done
215}
216
217download_file()
218{
219if [ -f "$LOCAL_DOWNLOAD/$1" ]; then
220 confirm_download $1
221 result="$?"
222 if [ ! "$result" == "0" ]; then
223 return
224 else
225 echo "Removing old file [$1]"
226 rm -rf "$LOCAL_DOWNLOAD/$1"
227 fi
228fi
229echo_info "Downloading file: $1..."
230wget "$YOCTOADT_IPKG_REPO/$1" -P $LOCAL_DOWNLOAD --progress=bar:force 2>&1 | tee -a "$YOCTOADT_INSTALL_LOG_FILE"
231}
232
233
234
235#Need two input params, $1 -- arch_type(arm powerpc x86 mips) $2 rootfs_image_type (a list of sdk sato minimal lsb)
236get_qemu_image()
237{
238 if [ "$1" == "x86" ]; then
239 qemu_kernel="bzImage-qemu$1.bin"
240 elif [ "$1" == "arm" ]; then
241 qemu_kernel="zImage-qemu$1.bin"
242 else
243 qemu_kernel="zImage-qemu$1.bin"
244 fi
245
246 #echo_info "[ADT_INST] Downloading qemu kernel binary: $qemu_kernel"
247 download_file $qemu_kernel
248 check_result
249
250 for image_type in $select_rootfs; do
251 #echo_info "[ADT_INST] Downloading rootfs file: poky-image-$image_type-qemu$1.tar.bz2"
252 filename="poky-image-$image_type-qemu$1.tar.bz2"
253 download_file $filename
254 check_result
255 done
256}
257
258download_images()
259{
260 #select_target_var="\$YOCTOADT_TARGET_$1"
261 #select_target=`eval echo $select_target_var`
262
263 #if [ "$select_target" == "Y" ]; then
264 select_rootfs_var="\$YOCTOADT_ROOTFS_$1"
265 select_sysroot_image_var="\$YOCTOADT_TARGET_SYSROOT_IMAGE_$1"
266 select_sysroot_var="\$YOCTOADT_TARGET_SYSROOT_LOC_$1"
267 select_rootfs=`eval echo $select_rootfs_var`
268 select_sysroot_image=`eval echo $select_sysroot_image_var`
269 select_sysroot=`eval echo $select_sysroot_var`
270
271 if [ "$select_rootfs" != "" ]; then
272 if [ $2 ]; then
273 #echo_info "\n############################################################################"
274 #echo_info "# To be downloaded rootfs image details defined in adt_installer.conf"
275 #echo_info "############################################################################"
276 echo_info "# Target architecture:\t\t$1"
277 echo_info "# Root_fs images:\t\t$select_rootfs"
278 echo_info "# Target sysroot image:\t\t$select_sysroot_image"
279 echo_info "# Target sysroot loc:\t\t$select_sysroot"
280 echo_info "\n"
281 #echo_info "############################################################################\n"
282 else
283 get_qemu_image $1 $select_rootfs
284 fi
285 fi
286}
287
288
289
290
291#Main body of installer
292
293clear
294
295run_path=`dirname $0`
296cd $run_path
297
298if [ ! -f "scripts/util" ]; then
299 echo -e "[ADT_INST] Error: Script file: util, can't be found under: $run_path!"
300 echo -e "\n#############################################################################"
301 echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
302 echo -e "#############################################################################\n"
303 exit -1
304fi
305
306if [ ! -f "scripts/adt_installer_internal" ]; then
307 echo -e "[ADT_INST] Error: Script file: adt_installer_internal, can't be found under: $run_path!"
308 echo -e "\n#############################################################################"
309 echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
310 echo -e "#############################################################################\n"
311 exit -1
312fi
313
314config_file="adt_installer.conf"
315if [ ! -f "$config_file" ]; then
316 echo_info "[ADT_INST] Error: Installation configuration file: adt_installer.conf is not found!\n"
317 echo_info "\n##################################################################################"
318 echo_info "# Meet error(s) when installing Yocto ADT. Please check log file for details. "
319 echo_info "##################################################################################\n"
320 exit -1
321fi
322
323. scripts/data_define
324. scripts/util
325
326
327if [ -f "$YOCTOADT_INSTALL_LOG_FILE" ]; then
328 rm $YOCTOADT_INSTALL_LOG_FILE
329fi
330
331
332usage
333
334user_inst_type="$?"
335
336validate_config
337check_result
338#firstly we need to install opkg host
339install_opkg
340
341#Create folders for holding rootfs/qemu images
342if [ ! -d "$LOCAL_DOWNLOAD" ]; then
343 echo_info "Creating new images downloading folder: $LOCAL_DOWNLOAD ..."
344 mkdir -p $LOCAL_DOWNLOAD
345fi
346
347#downloading required qemu images/rootfs
348if [ "$user_inst_type" == "0" ]; then
349 override_oldfile=1
350else
351 override_oldfile=0
352fi
353
354for arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
355 download_images $arch_type
356done
357
358scripts/adt_installer_internal $user_inst_type
359
360result="$?"
361#echo_info "\n############################################################"
362if [ "$result" == "0" ]; then
363 echo_info "\n############################################################"
364 echo_info "# Yocto ADT has been successfully installed."
365 echo_info "############################################################\n"
366fi
367