> -----Original Message-----
> From: [email protected] <openembedded-
> [email protected]> On Behalf Of Michael Ho
> Sent: den 24 juni 2021 12:40
> To: [email protected]
> Cc: Michael Ho <[email protected]>
> Subject: [OE-core] [PATCH] sstate.bbclass: fix errors about read-only sstate
> mirrors
>
> From: Michael Ho <[email protected]>
>
> If a read-only sstate mirror is used in conjunction with hash equiv,
> then OSError will be raised when an sstate-cache hit is achieved.
>
> This is because sstate_task_postfunc will try to "touch" the symlinks
> that point to the read-only sstate mirror when sstate_report_unihash
> has changed SSTATE_PKG.
>
> This commit adds an additional exception handler to silently mask read
> only rootfs errors thrown during the touch.
>
> The fix is also duplicated to sstate_eventhandler as the code is very
> similar but it may not be needed there.
>
> Example of the error:
>
> File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
> 0001:
> *** 0002:sstate_task_postfunc(d)
> 0003:
> File: '/poky/meta/classes/sstate.bbclass', lineno: 774, function:
> sstate_task_postfunc
> 0770:
> 0771: omask = os.umask(0o002)
> 0772: if omask != 0o002:
> 0773: bb.note("Using umask 0o002 (not %0o) for sstate packaging" %
> omask)
> *** 0774: sstate_package(shared_state, d)
> 0775: os.umask(omask)
> 0776:
> 0777: sstateinst = d.getVar("SSTATE_INSTDIR")
> 0778: d.setVar('SSTATE_FIXMEDIR', shared_state['fixmedir'])
> File: '/poky/meta/classes/sstate.bbclass', lineno: 703, function:
> sstate_package
> 0699: if not os.path.exists(siginfo):
> 0700: bb.siggen.dump_this_task(siginfo, d)
> 0701: else:
> 0702: try:
> *** 0703: os.utime(siginfo, None)
> 0704: except PermissionError:
> 0705: pass
> 0706:
> 0707: return
> Exception: OSError: [Errno 30] Read-only file system
> ---
> meta/classes/sstate.bbclass | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
> index 3a3f7cc24b..163f97495c 100644
> --- a/meta/classes/sstate.bbclass
> +++ b/meta/classes/sstate.bbclass
> @@ -703,6 +703,10 @@ def sstate_package(ss, d):
> os.utime(siginfo, None)
> except PermissionError:
> pass
> + except OSError as e:
> + # Handle read-only file systems gracefully
> + if not e.errno == 30:
Please change this to:
if e.errno != errno.EROFS:
> + raise e
>
> return
>
> @@ -1145,6 +1149,10 @@ python sstate_eventhandler() {
> os.utime(siginfo, None)
> except PermissionError:
> pass
> + except OSError as e:
> + # Handle read-only file systems gracefully
> + if not e.errno == 30:
> + raise e
Same as above.
>
> }
>
> --
> 2.25.1
//Peter
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#153267):
https://lists.openembedded.org/g/openembedded-core/message/153267
Mute This Topic: https://lists.openembedded.org/mt/83757817/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-