summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/populate_sdk_base.bbclass86
1 files changed, 86 insertions, 0 deletions
diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
index 55ec684a41..0d1974141b 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -55,6 +55,8 @@ fakeroot python do_populate_sdk() {
55 bb.build.exec_func("create_sdk_files", localdata) 55 bb.build.exec_func("create_sdk_files", localdata)
56 56
57 bb.build.exec_func("tar_sdk", d) 57 bb.build.exec_func("tar_sdk", d)
58
59 bb.build.exec_func("create_shar", d)
58} 60}
59 61
60fakeroot populate_sdk_image() { 62fakeroot populate_sdk_image() {
@@ -94,6 +96,13 @@ fakeroot create_sdk_files() {
94 96
95 # Add version information 97 # Add version information
96 toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${REAL_MULTIMACH_TARGET_SYS} 98 toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${REAL_MULTIMACH_TARGET_SYS}
99
100 cp ${COREBASE}/scripts/relocate_sdk.py ${SDK_OUTPUT}/${SDKPATH}/
101
102 # Replace the ##DEFAULT_INSTALL_DIR## with the correct pattern.
103 # Escape special characters like '+' and '.' in the SDKPATH
104 escaped_sdkpath=$(echo ${SDKPATH} |sed -e "s:[\+\.]:\\\\\\\\\0:g")
105 sed -i -e "s:##DEFAULT_INSTALL_DIR##:$escaped_sdkpath:" ${SDK_OUTPUT}/${SDKPATH}/relocate_sdk.py
97} 106}
98 107
99fakeroot tar_sdk() { 108fakeroot tar_sdk() {
@@ -103,6 +112,83 @@ fakeroot tar_sdk() {
103 tar --owner=root --group=root -cj --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 . 112 tar --owner=root --group=root -cj --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
104} 113}
105 114
115fakeroot create_shar() {
116 cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
117#!/bin/bash
118
119DEFAULT_INSTALL_DIR="${SDKPATH}"
120
121echo -n "Enter target directory for Poky SDK (default: $DEFAULT_INSTALL_DIR): "
122read target_sdk_dir
123
124if [ "$target_sdk_dir" = "" ]; then
125 target_sdk_dir=$DEFAULT_INSTALL_DIR
126fi
127
128eval target_sdk_dir=$target_sdk_dir
129target_sdk_dir=$(readlink -m $target_sdk_dir)
130
131echo -n "You are about to install Poky SDK to \"$target_sdk_dir\". Proceed[Y/n]?"
132read answer
133
134if [ "$answer" = "" ]; then
135 answer="y"
136fi
137
138if [ "$answer" != "Y" -a "$answer" != "y" ]; then
139 echo "Installation aborted!"
140 exit 1
141fi
142
143mkdir -p $target_sdk_dir >/dev/null 2>&1
144if [ $? -ne 0 ]; then
145 echo "Error: Unable to create target directory. Do you have permissions?"
146 exit 1
147fi
148
149payload_offset=$(($(grep -na -m1 "^MARKER:$" $(basename $0)|cut -d':' -f1) + 1))
150
151echo -n "Extracting SDK..."
152tail -n +$payload_offset $(basename $0) | tar xj --strip-components=4 -C $target_sdk_dir
153echo "done"
154
155echo -n "Setting it up..."
156# fix environment paths
157env_setup_script=$(find $target_sdk_dir -name "environment-setup*")
158sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" -i $env_setup_script
159
160# fix dynamic loader paths in all ELF SDK binaries
161native_sysroot=$(cat $env_setup_script |grep OECORE_NATIVE_SYSROOT|cut -d'=' -f2|tr -d '"')
162dl_path=$(find $native_sysroot/lib -name "ld-linux*")
163executable_files=$(find $native_sysroot -type f -perm +111)
164${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files
165if [ $? -ne 0 ]; then
166 echo "SDK could not be set up. Relocate script failed. Abort!"
167 exit 1
168fi
169
170# replace ${SDKPATH} with the new prefix in all text files: configs/scripts/etc
171find $native_sysroot -type f -exec file '{}' \;|grep text|cut -d':' -f1|xargs sed -i -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g"
172
173echo done
174
175# delete the relocating script, so that user is forced to re-run the installer
176# if he/she wants another location for the sdk
177rm ${env_setup_script%/*}/relocate_sdk.py
178
179echo "SDK has been successfully set up and is ready to be used."
180
181exit 0
182
183MARKER:
184EOF
185 # append the SDK tarball
186 cat ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 >> ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
187
188 # delete the old tarball, we don't need it anymore
189 rm ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2
190}
191
106populate_sdk_log_check() { 192populate_sdk_log_check() {
107 for target in $* 193 for target in $*
108 do 194 do