summaryrefslogtreecommitdiffstats
path: root/meta/classes/chrpath.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* chrpath: Cleanup and fix previous patchRoss Burton2019-12-291-11/+9
| | | | | | | | | Ensure self.data isn't accessed without assignment. Also clean up old style popen use and replace with modern/simpler subprocess. (From OE-Core rev: 39825cba4761a6b4b2473825705975f9f421ec8b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: do less workRoss Burton2019-12-281-5/+11
| | | | | | | | | | | | | | | Instead of trying to change the RPATH in every file under the binary directories, check that the file is an ELF first. This means that we don't attempt to change the RPATH on the entire Python standard library, for example. Also return early if the directory to iterate doesn't exist. (From OE-Core rev: 977f4baacf7c8d06d9cfe5c5e39bb8bc19f27028) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath.bbclass: Add break_hardlinks kwarg to allow breaking hardlinksNathan Rossi2019-09-111-6/+13
| | | | | | | | | | | Add the break_hardlinks kwarg to break hardlinks when modifying files. This uses the bb.utils.break_hardlinks function to break hardlinks. The default is to maintain existing behaviour and leave hardlinks in place. (From OE-Core rev: 7628f6bdb5704c018d83e284364994b72557eaa5) Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: remove True option to getVar callsJoshua Lock2016-12-161-2/+2
| | | | | | | | | | | | | getVar() now defaults to expanding by default, thus remove the True option from getVar() calls with a regex search and replace. Search made with the following regex: getVar ?\(( ?[^,()]*), True\) (From OE-Core rev: 7c552996597faaee2fbee185b250c0ee30ea3b5f) Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: Remove standard search paths from RPATHSRichard Purdie2016-11-151-4/+9
| | | | | | (From OE-Core rev: 6b94569d5d8e8bdd575d12e260abf10d3ac11cfd) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath.bbclass: Use bb.fatal() instead of raising FuncFailedUlf Magnusson2016-10-041-2/+1
| | | | | | | | | | | | | | | | | | | | | | | This sets a good example and avoids unnecessarily contributing to perceived complexity and cargo culting. Motivating quote below: < kergoth> the *original* intent was for the function/task to error via whatever appropriate means, bb.fatal, whatever, and funcfailed was what you'd catch if you were calling exec_func/exec_task. that is, it's what those functions raise, not what metadata functions should be raising < kergoth> it didn't end up being used that way < kergoth> but there's really never a reason to raise it yourself FuncFailed.__init__ takes a 'name' argument rather than a 'msg' argument, which also shows that the original purpose got lost. (From OE-Core rev: 20e669f56489b2c8a9bc6a0e6f3eac81ef35445a) Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: correct subprocess.Popen.communicate() return valuesVladimir Zapolskiy2016-08-101-9/+9
| | | | | | | | | | | | | | | | | | This is a non-functional change, which intends to correct element names of a tuple returned by Popen.communicate(). Both in python2 and python3 subprocess.Popen.communicate() method returns a tuple (stdoutdata, stderrdata), thus old assignments and collateral comments are incorrect from human's point of view, however formally there is no error in the code. The change is desired to have to avoid copy-paste errors in future. (From OE-Core rev: f8c21df86bae5a85e221b69b91b347aeba6be4c3) Signed-off-by: Vladimir Zapolskiy <vz@mleia.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/lib: Update to use python3 command pipeline decodingRichard Purdie2016-06-021-0/+2
| | | | | | | | | | | In python3, strings are unicode by default. We need to encode/decode from command pipelines and other places where we interface with the real world using the correct locales. This patch updates various call sites to use the correct encoding/decodings. (From OE-Core rev: bb4685af1bffe17b3aa92a6d21398f38a44ea874) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bbclass: fix spelling mistakesMaxin B. John2015-11-241-2/+2
| | | | | | | | | | Fix some spelling mistakes in bbclass files (From OE-Core rev: ed484c06f436eea62c5d0b1a2964f219f3e5cb61) Signed-off-by: Maxin B. John <maxin.john@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: Add explict getVar param for (non) expansionRichard Purdie2015-06-231-1/+1
| | | | | | | | | | | | | | Rather than just use d.getVar(X), use the more explict d.getVar(X, False) since at some point in the future, having the default of expansion would be nice. This is the first step towards that. This patch was mostly made using the command: sed -e 's:\(getVar([^,()]*\)\s*):\1, False):g' -i `grep -ril getVar *` (From OE-Core rev: ab7c1d239b122c8e549e8112c88fd46c9e2b061b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath.bbclass: handle RUNPATH as well as RPATHAndre McCurdy2015-03-161-0/+2
| | | | | | | | | | | Binaries linked with gold may contain a RUNPATH instead of an RPATH. Update chrpath.bbclass process_file_linux() to handle both cases. (From OE-Core rev: 46ceb4d035e4f49e6b4a3a83bf604944d2b991c1) Signed-off-by: Andre McCurdy <armccurdy@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: Drop warning from darwn buildsRichard Purdie2014-08-171-1/+0
| | | | | | | | This was old debug which can safely be removed for less noisy builds. (From OE-Core rev: d0be4b37743492fc9c178fd6f9ef73a5eb2fd9c3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: properly handle rootdir with '..' in pathMatt Cowell2014-05-111-0/+1
| | | | | | | | | | | When there is a '..' in the rootdir path, rootdir will not be a substring of fpath. This causes an incorrect rpath of the difference between the workdir and the sysroot to be computed, which is incorrect. Normalizing basedir fixes this issue. (From OE-Core rev: 753cfcadd8cc683e69b6707b823dc49dfb34ab0b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: Improve crazy codeRichard Purdie2013-11-291-37/+17
| | | | | | | | | | | | | | | | | | | | | | | | | The current code is a little bit overcomplicated, deficient and also possibly broken. Issues include: a) Not maximally optisming rpaths (e.g. a lib in usr/lib might get an rpath of $ORIGIN/../../usr/lib) b) The return in the middle of the for loop look suspiciously like it might break on some binaries c) The depth function, loops of "../" prepending and so on can be replaced with a call to os.path.relpath This patch cleans up the above issues. Running binaries should result in less "../" resolutions which can't hurt performance either. [YOCTO #3989] (From OE-Core rev: feea54df6768036649ca6c57524e2a1f480ad249) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: Add support for relocating darwin binariesRichard Purdie2013-08-231-50/+88
| | | | | | | | | | On darwin, install_name_tool can be used to relocate binaries/libraries. This adds support for adjusting them with relative paths rather than hardcoded ones. The Linux code is factored out into a function but is otherwise unchanged. (From OE-Core rev: ed5ace3437eb0f751172e6b93399639c94b89e59) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath.bbclass: Normalize rpath only of it doesn't contain ORIGIN variableAndrei Gherzan2012-12-141-1/+1
| | | | | | | | | | | If we normalize a rpath which contains ORIGIN variable, the binary will end up without those rpaths at all. So check first if rpath contains ORIGIN variable and if not, move on and normalize it. (From OE-Core rev: 46dc514ff5a3d2693546cf95c5481e0539c43580) Signed-off-by: Andrei Gherzan <andrei.gherzan@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: normalize the pathsSaul Wold2012-12-131-2/+3
| | | | | | | | | | | | By normalizing the paths the path comparing code works correct to generate the right RPATH even when there is a A/../A in TMPDIR [YOCTO #3408] (From OE-Core rev: 50327f2bba9f479dd209cdc54646b9d551e84c59) Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath.bbclass: Account for case when ORIGIN is in RPATHKhem Raj2012-08-171-1/+2
| | | | | | | | | | | | | | | | | | | | | This fixes a case when RPATH embedded in program have one of its path already relative to ORIGIN. We were losing that path if such a path existed. This patch appends it to the new edited rpath being created when we see it. so RPATH like below (RPATH) Library rpath: [$ORIGIN/../lib/amd64/jli:$ORIGIN/../jre/lib/amd64/jli] would end up being empty but after this patch its kept intact (From OE-Core rev: 43600df0d4efc976a9451163dd334b4763937932) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath.bbclass: Ensure we only process tmpdir in paths which actually ↵Richard Purdie2012-08-171-2/+4
| | | | | | | | | | | contain that path Without this change, a path to "/lib/xxx" or "/usr/lib/xxx" would also attempt to be remapped to be relative to $ORIGIN which makes no sense. (From OE-Core rev: 73e2c12534856f14c1a94fb51874e9ba1655f07b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/chrpath: improve chrpath failure handlingPaul Eggleton2012-08-171-3/+5
| | | | | | | | | | | When chrpath fails, prefix the error message with the name of the recipe that is being processed, and include the the output from chrpath, as well as making the calling task actually fail. (From OE-Core rev: 99815eddd4e1eb5d939831704231537dd5a995ad) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/chrpath: trigger an error if chrpath failsPaul Eggleton2012-08-151-1/+3
| | | | | | | | | If chrpath failed here we were just silently ignoring it. (From OE-Core rev: 24babf9316da50c8a4d2f328c4336cb8cd6cf667) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* relocatable.bbclass: split it up, to reuse codeLaurentiu Palcu2012-08-021-0/+89
Most of the code in relocatable.bbclass will be used for relocating the SDK binaries. So, create another class chrpath.bbclass that will contain the core of the relocatable.bbclass, so we can reuse it. (From OE-Core rev: b50677b1641b201fd69942fd82a360907338234d) Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>