> -----Original Message----- > From: openembedded-core@lists.openembedded.org <openembedded- > c...@lists.openembedded.org> On Behalf Of Michael Ho > Sent: den 24 juni 2021 12:40 > To: openembedded-core@lists.openembedded.org > Cc: Michael Ho <michael...@bmw.de> > Subject: [OE-core] [PATCH] sstate.bbclass: fix errors about read-only sstate > mirrors > > From: Michael Ho <michael...@bmw.de> > > 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: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-