From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from esa13.hc324-48.eu.iphmx.com (esa13.hc324-48.eu.iphmx.com [207.54.72.35]) by mx.groups.io with SMTP id smtpd.web10.8731.1624871499231113347 for ; Mon, 28 Jun 2021 02:11:40 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="signature has expired" header.i=@bmw.de header.s=mailing1 header.b=WAc2bP0j; spf=pass (domain: bmw.de, ip: 207.54.72.35, mailfrom: prvs=80615ef6c=michael.ho@bmw.de) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bmw.de; i=@bmw.de; q=dns/txt; s=mailing1; t=1624871499; x=1656407499; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=9qMx7OItujdsfHaSgV3Uxlc1B4wp3RSiYO2jsvcy3dM=; b=WAc2bP0jIgvAcBG8PNSOKEombM2ReNvEZU94UZqGqnjW6P1MqFkOE6Ce SMpw8U6guiTx6avM4BEitfAKLhuXSZeWQGjC7avDPeCRdqN0Cvygn40Yi tJaINdVy0AgG9Xwn0bBt+nJB1LNXigHk9hemeXwWbqGl4KbVLEmYpwQ/5 o=; Received: from esagw4.bmwgroup.com (HELO esagw4.muc) ([160.46.252.39]) by esa13.hc324-48.eu.iphmx.com with ESMTP/TLS; 28 Jun 2021 11:11:36 +0200 Received: from esabb2.muc ([160.50.100.34]) by esagw4.muc with ESMTP/TLS; 28 Jun 2021 11:11:36 +0200 Received: from smucm09k.bmwgroup.net (HELO smucm09k.europe.bmw.corp) ([160.48.96.43]) by esabb2.muc with ESMTP/TLS; 28 Jun 2021 11:11:35 +0200 Received: from michael-pcx.bmw-carit.intra (192.168.221.35) by smucm09k.europe.bmw.corp (160.48.96.43) with Microsoft SMTP Server (TLS; Mon, 28 Jun 2021 11:11:34 +0200 From: "Michael Ho" To: CC: Michael Ho Subject: [PATCH v2] sstate.bbclass: fix errors about read-only sstate mirrors Date: Mon, 28 Jun 2021 11:11:21 +0200 Message-ID: <20210628091121.2287814-1-michael.ho@bmw.de> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Return-Path: michael.ho@bmw.de X-ClientProxiedBy: smucm10m.europe.bmw.corp (160.48.96.49) To smucm09k.europe.bmw.corp (160.48.96.43) Content-Transfer-Encoding: 8bit Content-Type: text/plain From: Michael Ho 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: 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 Signed-off-by: Michael Ho --- meta/classes/sstate.bbclass | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 3a3f7cc24b..72eebd70c9 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 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 e.errno != errno.EROFS: + raise e } -- 2.25.1