From b247392b4ced57cfe694656032f6a6723740a9e8 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 25 Jul 2018 16:45:23 +0100 Subject: [PATCH] Revert "relocate_sdk.py: remove hardcoded SDK path" This reverts commit 6671a4d980c8bef8f402780a308f6c43a25044aa. This breaks uninative tarball since the call of relocate_sdk.py from uninative.bbclass wasn't updated to account for this change. It isn't clear what value that code could pass in and this isn't simple to fix so revert until a better fix can be found that doesn't break uninative. Signed-off-by: Richard Purdie --- meta/classes/populate_sdk_base.bbclass | 5 +++++ meta/files/toolchain-shar-relocate.sh | 2 +- scripts/relocate_sdk.py | 17 ++++++++--------- 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] -- 2.40.1