diff options
| -rw-r--r-- | meta/classes/populate_sdk_base.bbclass | 86 |
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 | ||
| 60 | fakeroot populate_sdk_image() { | 62 | fakeroot 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 | ||
| 99 | fakeroot tar_sdk() { | 108 | fakeroot 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 | ||
| 115 | fakeroot create_shar() { | ||
| 116 | cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh | ||
| 117 | #!/bin/bash | ||
| 118 | |||
| 119 | DEFAULT_INSTALL_DIR="${SDKPATH}" | ||
| 120 | |||
| 121 | echo -n "Enter target directory for Poky SDK (default: $DEFAULT_INSTALL_DIR): " | ||
| 122 | read target_sdk_dir | ||
| 123 | |||
| 124 | if [ "$target_sdk_dir" = "" ]; then | ||
| 125 | target_sdk_dir=$DEFAULT_INSTALL_DIR | ||
| 126 | fi | ||
| 127 | |||
| 128 | eval target_sdk_dir=$target_sdk_dir | ||
| 129 | target_sdk_dir=$(readlink -m $target_sdk_dir) | ||
| 130 | |||
| 131 | echo -n "You are about to install Poky SDK to \"$target_sdk_dir\". Proceed[Y/n]?" | ||
| 132 | read answer | ||
| 133 | |||
| 134 | if [ "$answer" = "" ]; then | ||
| 135 | answer="y" | ||
| 136 | fi | ||
| 137 | |||
| 138 | if [ "$answer" != "Y" -a "$answer" != "y" ]; then | ||
| 139 | echo "Installation aborted!" | ||
| 140 | exit 1 | ||
| 141 | fi | ||
| 142 | |||
| 143 | mkdir -p $target_sdk_dir >/dev/null 2>&1 | ||
| 144 | if [ $? -ne 0 ]; then | ||
| 145 | echo "Error: Unable to create target directory. Do you have permissions?" | ||
| 146 | exit 1 | ||
| 147 | fi | ||
| 148 | |||
| 149 | payload_offset=$(($(grep -na -m1 "^MARKER:$" $(basename $0)|cut -d':' -f1) + 1)) | ||
| 150 | |||
| 151 | echo -n "Extracting SDK..." | ||
| 152 | tail -n +$payload_offset $(basename $0) | tar xj --strip-components=4 -C $target_sdk_dir | ||
| 153 | echo "done" | ||
| 154 | |||
| 155 | echo -n "Setting it up..." | ||
| 156 | # fix environment paths | ||
| 157 | env_setup_script=$(find $target_sdk_dir -name "environment-setup*") | ||
| 158 | sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" -i $env_setup_script | ||
| 159 | |||
| 160 | # fix dynamic loader paths in all ELF SDK binaries | ||
| 161 | native_sysroot=$(cat $env_setup_script |grep OECORE_NATIVE_SYSROOT|cut -d'=' -f2|tr -d '"') | ||
| 162 | dl_path=$(find $native_sysroot/lib -name "ld-linux*") | ||
| 163 | executable_files=$(find $native_sysroot -type f -perm +111) | ||
| 164 | ${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files | ||
| 165 | if [ $? -ne 0 ]; then | ||
| 166 | echo "SDK could not be set up. Relocate script failed. Abort!" | ||
| 167 | exit 1 | ||
| 168 | fi | ||
| 169 | |||
| 170 | # replace ${SDKPATH} with the new prefix in all text files: configs/scripts/etc | ||
| 171 | find $native_sysroot -type f -exec file '{}' \;|grep text|cut -d':' -f1|xargs sed -i -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" | ||
| 172 | |||
| 173 | echo 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 | ||
| 177 | rm ${env_setup_script%/*}/relocate_sdk.py | ||
| 178 | |||
| 179 | echo "SDK has been successfully set up and is ready to be used." | ||
| 180 | |||
| 181 | exit 0 | ||
| 182 | |||
| 183 | MARKER: | ||
| 184 | EOF | ||
| 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 | |||
| 106 | populate_sdk_log_check() { | 192 | populate_sdk_log_check() { |
| 107 | for target in $* | 193 | for target in $* |
| 108 | do | 194 | do |
