diff options
| author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-02-01 15:03:41 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-02-06 13:12:59 +0000 |
| commit | b34fd60d8fd6750663748c74fed82dd16a823ad4 (patch) | |
| tree | b05d73f4dfe874d3f24419c104df8c85ded49d8f /meta/lib | |
| parent | e45db24bbeacfe4754638eafa9682258b994307c (diff) | |
| download | poky-b34fd60d8fd6750663748c74fed82dd16a823ad4.tar.gz | |
package: Process package stripping in parallel
(From OE-Core rev: 981fed49ee80560fb067b3f47aeada1fdee792ca)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
| -rw-r--r-- | meta/lib/oe/package.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py index 6b1c1f48ce..9a0ddb8536 100644 --- a/meta/lib/oe/package.py +++ b/meta/lib/oe/package.py | |||
| @@ -1,3 +1,48 @@ | |||
| 1 | def runstrip(arg): | ||
| 2 | # Function to strip a single file, called from split_and_strip_files below | ||
| 3 | # A working 'file' (one which works on the target architecture) | ||
| 4 | # | ||
| 5 | # The elftype is a bit pattern (explained in split_and_strip_files) to tell | ||
| 6 | # us what type of file we're processing... | ||
| 7 | # 4 - executable | ||
| 8 | # 8 - shared library | ||
| 9 | # 16 - kernel module | ||
| 10 | |||
| 11 | import commands, stat, subprocess | ||
| 12 | |||
| 13 | (file, elftype, strip) = arg | ||
| 14 | |||
| 15 | newmode = None | ||
| 16 | if not os.access(file, os.W_OK) or os.access(file, os.R_OK): | ||
| 17 | origmode = os.stat(file)[stat.ST_MODE] | ||
| 18 | newmode = origmode | stat.S_IWRITE | stat.S_IREAD | ||
| 19 | os.chmod(file, newmode) | ||
| 20 | |||
| 21 | extraflags = "" | ||
| 22 | |||
| 23 | # kernel module | ||
| 24 | if elftype & 16: | ||
| 25 | extraflags = "--strip-debug --remove-section=.comment --remove-section=.note --preserve-dates" | ||
| 26 | # .so and shared library | ||
| 27 | elif ".so" in file and elftype & 8: | ||
| 28 | extraflags = "--remove-section=.comment --remove-section=.note --strip-unneeded" | ||
| 29 | # shared or executable: | ||
| 30 | elif elftype & 8 or elftype & 4: | ||
| 31 | extraflags = "--remove-section=.comment --remove-section=.note" | ||
| 32 | |||
| 33 | stripcmd = "'%s' %s '%s'" % (strip, extraflags, file) | ||
| 34 | bb.debug(1, "runstrip: %s" % stripcmd) | ||
| 35 | |||
| 36 | ret = subprocess.call(stripcmd, shell=True) | ||
| 37 | |||
| 38 | if newmode: | ||
| 39 | os.chmod(file, origmode) | ||
| 40 | |||
| 41 | if ret: | ||
| 42 | bb.error("runstrip: '%s' strip command failed" % stripcmd) | ||
| 43 | |||
| 44 | return | ||
| 45 | |||
| 1 | 46 | ||
| 2 | def file_translate(file): | 47 | def file_translate(file): |
| 3 | ft = file.replace("@", "@at@") | 48 | ft = file.replace("@", "@at@") |
