[RFC,1/1] cleanup lockfile in downloads dir after build

Message ID 20250925095155.1095671-1-felix.moessbauer@siemens.com
State RFC
Headers show
Series [RFC,1/1] cleanup lockfile in downloads dir after build | expand

Commit Message

MOESSBAUER, Felix Sept. 25, 2025, 9:51 a.m. UTC
We currently leave a lockfile in the downloads dir behind which is even
owned by root. This is unfortunate, as the downloads dir cannot easily
be cached (uploaded / downloaded) with that lockfile in place.

As the lockfile is created by independent tasks, we add a handler to
remove it after the build.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
Note, that the removal is only safe if the downloads dir is not shared
across multiple parallel bitbake executions. I don't know if that is
allowed at all, so I'm sending this patch as a RFC.

Best regards,
Felix Moessbauer
Siemens AG

 meta/classes/isar-events.bbclass | 7 +++++++
 1 file changed, 7 insertions(+)

Patch

diff --git a/meta/classes/isar-events.bbclass b/meta/classes/isar-events.bbclass
index 76b713c7..4101e756 100644
--- a/meta/classes/isar-events.bbclass
+++ b/meta/classes/isar-events.bbclass
@@ -47,6 +47,7 @@  addhandler build_completed
 
 python build_completed() {
     import subprocess
+    import os
 
     tmpdir = d.getVar('TMPDIR')
     if not tmpdir:
@@ -84,6 +85,12 @@  python build_completed() {
             except subprocess.CalledProcessError as e:
                 bb.error(str(e))
 
+    # cleanup downloads lock
+    dl_lock = "{}/deb/{}-{}.lock".format(d.getVar('DL_DIR'), d.getVar('BASE_DISTRO'), d.getVar('BASE_DISTRO_CODENAME'))
+    if os.path.exists(dl_lock):
+        bb.debug('cleaning up downloads lock: ', dl_lock)
+        subprocess.run(f"sudo rm {dl_lock}", shell=True, check=True)
+
     # Cleanup build UUID, the next bitbake run will generate new one
     bb.persist_data.persist('BB_ISAR_UUID_DATA', d).clear()
 }