diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/native.bbclass | 3 | ||||
-rw-r--r-- | meta/classes/relocatable.bbclass | 24 | ||||
-rw-r--r-- | meta/packages/chrpath/chrpath_0.13.bb | 5 |
3 files changed, 32 insertions, 0 deletions
diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass index 01f886294e..9d678fd802 100644 --- a/meta/classes/native.bbclass +++ b/meta/classes/native.bbclass | |||
@@ -1,3 +1,6 @@ | |||
1 | # We want native packages to be relocatable | ||
2 | inherit relocatable | ||
3 | |||
1 | # Native packages are built indirectly via dependency, | 4 | # Native packages are built indirectly via dependency, |
2 | # no need for them to be a direct target of 'world' | 5 | # no need for them to be a direct target of 'world' |
3 | EXCLUDE_FROM_WORLD = "1" | 6 | EXCLUDE_FROM_WORLD = "1" |
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 @@ | |||
1 | SYSROOT_PREPROCESS_FUNCS += "relocatable_binaries_preprocess" | ||
2 | |||
3 | CHRPATH_BIN ?= "chrpath" | ||
4 | |||
5 | def rpath_replace (paths, d): | ||
6 | chrpath = bb.data.expand('${CHRPATH_BIN}', d) | ||
7 | |||
8 | for path in paths: | ||
9 | for root, dirs, files in os.walk(path): | ||
10 | for f in files: | ||
11 | if 'usr' in path: | ||
12 | os.system("%s -r $ORIGIN/../lib:$ORIGIN/../../lib %s/%s" % (chrpath, path,f)) | ||
13 | else: | ||
14 | os.system("%s -r $ORIGIN/../lib %s/%s" % (chrpath, path, f)) | ||
15 | |||
16 | python relocatable_binaries_preprocess() { | ||
17 | paths = [] | ||
18 | target = bb.data.expand("${SYSROOT_DESTDIR}${TMPDIR}/sysroots/${TARGET_ARCH}-${TARGET_OS}", d) | ||
19 | |||
20 | paths.append(target + "/bin") | ||
21 | paths.append(target + "/usr/bin") | ||
22 | |||
23 | rpath_replace(paths, d) | ||
24 | } | ||
diff --git a/meta/packages/chrpath/chrpath_0.13.bb b/meta/packages/chrpath/chrpath_0.13.bb index e843de6872..012897d575 100644 --- a/meta/packages/chrpath/chrpath_0.13.bb +++ b/meta/packages/chrpath/chrpath_0.13.bb | |||
@@ -2,6 +2,7 @@ DESCRIPTION = "chrpath allows you to change the rpath (where the application \ | |||
2 | looks for libraries) in an application. It does not (yet) allow you to add an \ | 2 | looks for libraries) in an application. It does not (yet) allow you to add an \ |
3 | rpath if there isn't one already." | 3 | rpath if there isn't one already." |
4 | LICENSE = "GPL" | 4 | LICENSE = "GPL" |
5 | PR = "r1" | ||
5 | 6 | ||
6 | SRC_URI = "${DEBIAN_MIRROR}/main/c/chrpath/chrpath_${PV}.orig.tar.gz" | 7 | SRC_URI = "${DEBIAN_MIRROR}/main/c/chrpath/chrpath_${PV}.orig.tar.gz" |
7 | 8 | ||
@@ -9,4 +10,8 @@ inherit autotools | |||
9 | 10 | ||
10 | S = "${WORKDIR}/chrpath-${PV}" | 11 | S = "${WORKDIR}/chrpath-${PV}" |
11 | 12 | ||
13 | # We don't have a staged chrpath-native for ensuring our binary is relocatable | ||
14 | # so must use the one we've just built | ||
15 | CHRPATH_BIN = "${S}/chrpath" | ||
16 | |||
12 | BBCLASSEXTEND = "native" | 17 | BBCLASSEXTEND = "native" |