From 6e1cc7ca104b78ebb34a15eb4a41e33c7186d2fd Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Thu, 11 Feb 2010 16:11:01 +0000 Subject: relocatable.bbclass: remove hard-coded rpaths from native binaries The relocatable path will pre-process built binaries in SYSROOT_DESTDIR and replace any harcoded dynamic link rpaths with relative paths. Add an inherit of class in native.bbclass to make our native packages relocatable and tweak the chrpath recipe so that the native package can make itself relocatable with the just built chrpath binary. Signed-off-by: Joshua Lock --- meta/classes/relocatable.bbclass | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 meta/classes/relocatable.bbclass (limited to 'meta/classes/relocatable.bbclass') diff --git a/meta/classes/relocatable.bbclass b/meta/classes/relocatable.bbclass new file mode 100644 index 0000000000..81fe8c518d --- /dev/null +++ b/meta/classes/relocatable.bbclass @@ -0,0 +1,24 @@ +SYSROOT_PREPROCESS_FUNCS += "relocatable_binaries_preprocess" + +CHRPATH_BIN ?= "chrpath" + +def rpath_replace (paths, d): + chrpath = bb.data.expand('${CHRPATH_BIN}', d) + + for path in paths: + for root, dirs, files in os.walk(path): + for f in files: + if 'usr' in path: + os.system("%s -r $ORIGIN/../lib:$ORIGIN/../../lib %s/%s" % (chrpath, path,f)) + else: + os.system("%s -r $ORIGIN/../lib %s/%s" % (chrpath, path, f)) + +python relocatable_binaries_preprocess() { + paths = [] + target = bb.data.expand("${SYSROOT_DESTDIR}${TMPDIR}/sysroots/${TARGET_ARCH}-${TARGET_OS}", d) + + paths.append(target + "/bin") + paths.append(target + "/usr/bin") + + rpath_replace(paths, d) +} -- cgit v1.2.3-54-g00ecf