Ping. Thanks,
On 9/25/20 3:05 PM, hongxu wrote:
While archive mode is 'patched', there is a probably racing between do_ar_patched and do_kernel_configme [snip] |File: 'oe-core/meta/classes/archiver.bbclass', lineno: 313, function: create_tarball ... |Exception: FileNotFoundError: [Errno 2] No such file or directory: 'build/ tmp-glibc/work-shared/qemux86-64/kernel-source/.tmp.config.DCUH7mUNe3' [snip] Task do_kernel_configme will modify ${S}, and it broke create_tarball in do_ar_patched. Order do_kernel_configme and do_ar_patched to avoid racing. Also improve sstatesig.py to respect commit [fed0ed8 archiver.bbclass: do not cause kernel rebuilds] Signed-off-by: Hongxu Jia <[email protected]> --- meta/classes/archiver.bbclass | 8 ++++++-- meta/lib/oe/sstatesig.py | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass index aff1f9dbb0..efab438ebd 100644 --- a/meta/classes/archiver.bbclass +++ b/meta/classes/archiver.bbclass @@ -596,7 +596,11 @@ python () { # Add tasks in the correct order, specifically for linux-yocto to avoid race condition. # sstatesig.py:sstate_rundepfilter has special support that excludes this dependency # so that do_kernel_configme does not need to run again when do_unpack_and_patch - # gets added or removed (by adding or removing archiver.bbclass). + # or do_ar_patched gets added or removed (by adding or removing archiver.bbclass). if bb.data.inherits_class('kernel-yocto', d): - bb.build.addtask('do_kernel_configme', 'do_configure', 'do_unpack_and_patch', d) + ar_src = d.getVarFlag('ARCHIVER_MODE', 'src') + if ar_src == "patched": + bb.build.addtask('do_kernel_configme', 'do_configure', 'do_ar_patched', d) + else: + bb.build.addtask('do_kernel_configme', 'do_configure', 'do_unpack_and_patch', d) } diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py index 21ae0a7657..30afbcd617 100644 --- a/meta/lib/oe/sstatesig.py +++ b/meta/lib/oe/sstatesig.py @@ -32,7 +32,8 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCaches): # from a mcdepends). The exception is the special # do_kernel_configme->do_unpack_and_patch dependency from archiver.bbclass. if recipename == depname and depmc == mc: - if task == "do_kernel_configme" and deptaskname == "do_unpack_and_patch": + if task == "do_kernel_configme" and (dep.endswith(".do_unpack_and_patch") or \ + dep.endswith(".do_ar_patched")): return False return True
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#152860): https://lists.openembedded.org/g/openembedded-core/message/152860 Mute This Topic: https://lists.openembedded.org/mt/77074624/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
