summaryrefslogtreecommitdiffstats
path: root/scripts/relocate_sdk.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-28 14:23:37 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-31 10:32:37 +0100
commitdab511c36dc455d3ada0c058e20ac42c71e3c8b7 (patch)
tree0bd73809bebdaab8fa42c8024bfd594de3bb8b9f /scripts/relocate_sdk.py
parent3b7c38458856805588d552508de10944ed38d9f2 (diff)
downloadpoky-dab511c36dc455d3ada0c058e20ac42c71e3c8b7.tar.gz
gcc: Add support for nativesdk-gcc
Being able to build a nativesdk gcc is useful, particularly in cases where the host compiler may be of an incompatible version (or a 32 bit compiler is needed). Sadly, building nativesdk-gcc is not straight forward. We install nativesdk-gcc into a relocatable location and this means that its library locations can change. "Normal" sysroot support doesn't help in this case since the values of paths like "libdir" change, not just base root directory of the system. In order to handle this we do two things: a) Add %r into spec file markup which can be used for injected paths such as SYSTEMLIBS_DIR (see gcc_multilib_setup()). b) Add other paths which need relocation into a .gccrelocprefix section which the relocation code will notice and adjust automatically. This patch adds tweaks to the relocation script to handle the new section too. (From OE-Core rev: cd3d874fced2ee4c950d9964d30c0588fd8772e7) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/relocate_sdk.py')
-rwxr-xr-xscripts/relocate_sdk.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/scripts/relocate_sdk.py b/scripts/relocate_sdk.py
index b2dd258c34..992db5c47d 100755
--- a/scripts/relocate_sdk.py
+++ b/scripts/relocate_sdk.py
@@ -161,7 +161,18 @@ def change_dl_sysdirs():
161 # write it back 161 # write it back
162 f.seek(sh_offset) 162 f.seek(sh_offset)
163 f.write(new_ldsocache_path) 163 f.write(new_ldsocache_path)
164 164 elif name == b(".gccrelocprefix"):
165 offset = 0
166 while (offset + 4096) <= sh_size:
167 path = f.read(4096)
168 new_path = old_prefix.sub(new_prefix, path)
169 # pad with zeros
170 new_path += b("\0") * (4096 - len(new_path))
171 #print "Changing %s to %s at %s" % (str(path), str(new_path), str(offset))
172 # write it back
173 f.seek(sh_offset + offset)
174 f.write(new_path)
175 offset = offset + 4096
165 if sysdirs != "" and sysdirslen != "": 176 if sysdirs != "" and sysdirslen != "":
166 paths = sysdirs.split(b("\0")) 177 paths = sysdirs.split(b("\0"))
167 sysdirs = b("") 178 sysdirs = b("")