Commit Graph

15 Commits

Author SHA1 Message Date
Richard Purdie c8dee9b92d Convert to use direct access to the data store (instead of bb.data.*Var*())
This is the result of running the following over the metadata:

sed \
-e 's:bb.data.\(setVar([^,()]*,[^,()]*\), *\([^ )]*\) *):\2.\1):g' \
-e 's:bb.data.\(setVarFlag([^,()]*,[^,()]*,[^,()]*\), *\([^) ]*\) *):\2.\1):g' \
-e 's:bb.data.\(getVar([^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \
-e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \
-e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^() ]*\) *):\2.\1):g' \
-e 's:bb.data.\(getVar([^,()]*\), *\([^) ]*\) *):\2.\1):g' \
-i `grep -ril bb.data *`

(From OE-Core rev: b22831fd63164c4db9c0b72934d7d734a6585251)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-10 11:51:19 +00:00
Richard Purdie a525b27d00 relocatable.bbclass: Cover libexecdir
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-08-12 14:41:30 +01:00
Joshua Lock cd62d697e1 relocatable.bbclass: reduce the amount of output
Disable the last bb.note call, it's a bit spurious. Only really useful for
debug.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-05-24 17:25:28 +01:00
Joshua Lock 23ff2e0819 relocatable.bbclass: Normalise the generated path
The generated path we create for the binaries RPATH can have a lot of directory
separators in. Use os.path.normpath() to tidy it up and only include the
required directory separators.

This patch is purely to appease my personal sense of niceness...

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-04-27 16:58:42 +01:00
Joshua Lock d3fbb56c2f relocatable.bbclass: Actually skip symlinks
The previous patch to do so was badly merged and didn't actually skip all
symlinks, only ones which where not an absolute path...

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-04-12 15:56:45 +01:00
Joshua Lock 1ac0a1aebe relocatable.bbclass: ignore symlinks
If this links to a file created by the package install we already handle it
when we process the sysroot. By ignoring symlinks here we don't cause a build
to fail when the symlink is to somewhere in the host OS.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-04-08 16:41:24 +01:00
Joshua Lock 10b6d14062 relocatable.bbclass: Handle files which don't have read/write permissions
It's possible to have files in our sysroot which don't have the write (or in
some cases even the read) bit set. Test for these and if they are not set
temporarily set them so that we can chrpath the binaries.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-04-08 16:41:24 +01:00
Joshua Lock b43b80c760 relocatable: Handle directories having subdirectories of binaries
Make the processing of directories less naive so that it can handle a directory
with children that are directories. We now scan for and process binaries in all
directories below the scanned paths rather than only the top-level directory.

This patch moves the meat of the post-processing into a separate function which
is fed paths, process_dir (). Then when the function finds a subdirectory of
the passed path which is itself a directory it recursively calls itself.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-04-01 11:53:29 +01:00
Joshua Lock 93f357d657 relocatable.bbclass: we need to process library files too
The .so files we ship also have a RPATH encoded so should be post-processed for
a relocatable RPATH too.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-03-26 14:24:58 +00:00
Richard Purdie 7a60d379e8 relocatable.bbclass: Clean up indentation
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-02-22 14:23:26 +00:00
Richard Purdie df76efbdee relocatable.bbclass: Handle symlinks correctly
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-02-22 14:20:26 +00:00
Joshua Lock ef246b44b9 relocatable.bbclass: Enhancements to rpath replacement algorithm
This patch removes the hard coded number of parent directory operators ( /..)
placed into the rpath and instead fully dynamically generates the rpath entries
based on the current rpath.

Theoretically this patch means we can now make cross packages relocatable but
this is *not* enabled as chrpath can only set a new rpath of the same length
or shorter than the existing rpath. Due to the amount of parent directory
jumps we need to encode in the rpath this can easily fail when TMPDIR is in a
short namespace (e.g. /usr/poky).

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-02-18 10:38:29 +00:00
Joshua Lock 7b4e80b98e relocatable.bbclass: Tidy up class
There was a hard coded path and a spurious variable left in before the last
commit. Whoops ...

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-02-12 17:39:08 +00:00
Joshua Lock f1a87fadc7 relocatable.bbclass: Improve logic and style
The initial pass at this class was pretty lame and broke on a lot of native
packages. This rewrite makes the code a lot more dynamic, removing use of hard
coded paths and improving the logic.

The class now runs a chrpath -l over the binary to determine what rpaths are
currently set. It then munges the output and determines relative versions of
each component of the rpath and uses chrpath -r to set them.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-02-12 15:00:44 +00:00
Joshua Lock 6e1cc7ca10 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 <josh@linux.intel.com>
2010-02-11 16:21:09 +00:00