aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/populate_sdk_base.bbclass5
-rw-r--r--meta/files/toolchain-shar-relocate.sh2
-rwxr-xr-xscripts/relocate_sdk.py17
3 files changed, 14 insertions, 10 deletions
diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
index e27ee036a2..7ffaf84a45 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -161,6 +161,11 @@ do_populate_sdk[stamp-extra-info] = "${MACHINE_ARCH}${SDKMACHINE}"
fakeroot create_sdk_files() {
cp ${COREBASE}/scripts/relocate_sdk.py ${SDK_OUTPUT}/${SDKPATH}/
+
+ # Replace the ##DEFAULT_INSTALL_DIR## with the correct pattern.
+ # Escape special characters like '+' and '.' in the SDKPATH
+ escaped_sdkpath=$(echo ${SDKPATH} |sed -e "s:[\+\.]:\\\\\\\\\0:g")
+ sed -i -e "s:##DEFAULT_INSTALL_DIR##:$escaped_sdkpath:" ${SDK_OUTPUT}/${SDKPATH}/relocate_sdk.py
}
python check_sdk_sysroots() {
diff --git a/meta/files/toolchain-shar-relocate.sh b/meta/files/toolchain-shar-relocate.sh
index f82ff2be48..e3c10018ef 100644
--- a/meta/files/toolchain-shar-relocate.sh
+++ b/meta/files/toolchain-shar-relocate.sh
@@ -36,7 +36,7 @@ if [ x\${PYTHON} = "x" ]; then
echo "SDK could not be relocated. No python found."
exit 1
fi
-\${PYTHON} ${env_setup_script%/*}/relocate_sdk.py $DEFAULT_INSTALL_DIR $target_sdk_dir $dl_path $executable_files
+\${PYTHON} ${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files
EOF
$SUDO_EXEC mv $tdir/relocate_sdk.sh ${env_setup_script%/*}/relocate_sdk.sh
diff --git a/scripts/relocate_sdk.py b/scripts/relocate_sdk.py
index 0d5a6f5161..c752fa2c61 100755
--- a/scripts/relocate_sdk.py
+++ b/scripts/relocate_sdk.py
@@ -38,6 +38,8 @@ else:
def b(x):
return x.encode(sys.getfilesystemencoding())
+old_prefix = re.compile(b("##DEFAULT_INSTALL_DIR##"))
+
def get_arch():
f.seek(0)
e_ident =f.read(16)
@@ -210,22 +212,19 @@ def change_dl_sysdirs(elf_file_name):
f.write(sysdirslen)
# MAIN
-if len(sys.argv) < 5:
+if len(sys.argv) < 4:
sys.exit(-1)
# In python > 3, strings may also contain Unicode characters. So, convert
# them to bytes
if sys.version_info < (3,):
- new_prefix = sys.argv[2]
- new_dl_path = sys.argv[3]
+ new_prefix = sys.argv[1]
+ new_dl_path = sys.argv[2]
else:
- new_prefix = sys.argv[2].encode()
- new_dl_path = sys.argv[3].encode()
-
-executables_list = sys.argv[4:]
+ new_prefix = sys.argv[1].encode()
+ new_dl_path = sys.argv[2].encode()
-old_prefix_ne = b(sys.argv[1])
-old_prefix = re.compile(re.escape(old_prefix_ne));
+executables_list = sys.argv[3:]
for e in executables_list:
perms = os.stat(e)[stat.ST_MODE]