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/oe/package.py | |
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/oe/package.py')
-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@") |