Explorar o código

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 <richard.purdie@linuxfoundation.org>
Richard Purdie %!s(int64=5) %!d(string=hai) anos
pai
achega
b247392b4c

+ 5 - 0
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() {

+ 1 - 1
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

+ 8 - 9
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]