diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2018-11-22 19:51:59 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-11-23 23:35:18 +0000 |
commit | 76276d90ce7fd0effe7c517206472b9dfe0c065c (patch) | |
tree | 4f39e1151b64e1cad5cccec4ef9fcbd4bb4951f5 /meta | |
parent | bdda030127f32040df18501ccd95aac631e2335a (diff) | |
download | poky-76276d90ce7fd0effe7c517206472b9dfe0c065c.tar.gz |
sstate.bbclass: set SSTATE_EXTRAPATHWILDCARD explicitly
The glob.glob("/sstate/*/*/") is very time consuming, set
SSTATE_EXTRAPATHWILDCARD explicity to avoid that. This can save a lot of time
when there are many sstate files.
For example, I have more than 600,000 sstate files:
* Before
- Without disk caches
$ time python3 -c 'import glob; glob.glob("/sstate-cache/*/*/sstate:quilt-native:x86_64-linux:0.65:r0:x86_64:3:*_populate_sysroot.tgz*")'
real 4m32.583s
user 0m5.768s
sys 0m12.892s
- With disk caches
$ time python3 -c 'import glob; glob.glob("/sstate-cache/*/*/sstate:quilt-native:x86_64-linux:0.65:r0:x86_64:3:*_populate_sysroot.tgz*")'
real 0m4.111s
user 0m2.348s
sys 0m1.756s
* After
$ time python3 -c 'import glob; glob.glob("/sstate-cache.bak/universal/*/sstate:quilt-native:x86_64-linux:0.65:r0:x86_64:3:*_populate_sysroot.tgz*")'
- Without disk caches:
real 0m7.928s
user 0m0.172s
sys 0m0.124s
- With disk caches:
real 0m0.131s
user 0m0.088s
sys 0m0.044s
We can see that it saves about 3.8s with disk caches, and saves about 264s
without disk caches.
(From OE-Core rev: 8b31c919814b8bdf25b3381053656523c001ae0d)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/sstate.bbclass | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index efb0096c70..94fde6d30b 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass | |||
@@ -101,7 +101,7 @@ python () { | |||
101 | if bb.data.inherits_class('native', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('cross', d): | 101 | if bb.data.inherits_class('native', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('cross', d): |
102 | d.setVar('SSTATE_EXTRAPATH', "${NATIVELSBSTRING}/") | 102 | d.setVar('SSTATE_EXTRAPATH', "${NATIVELSBSTRING}/") |
103 | d.setVar('BB_HASHFILENAME', "True ${SSTATE_PKGSPEC} ${SSTATE_SWSPEC}") | 103 | d.setVar('BB_HASHFILENAME', "True ${SSTATE_PKGSPEC} ${SSTATE_SWSPEC}") |
104 | d.setVar('SSTATE_EXTRAPATHWILDCARD', "*/") | 104 | d.setVar('SSTATE_EXTRAPATHWILDCARD', "${NATIVELSBSTRING}/") |
105 | 105 | ||
106 | unique_tasks = sorted(set((d.getVar('SSTATETASKS') or "").split())) | 106 | unique_tasks = sorted(set((d.getVar('SSTATETASKS') or "").split())) |
107 | d.setVar('SSTATETASKS', " ".join(unique_tasks)) | 107 | d.setVar('SSTATETASKS', " ".join(unique_tasks)) |