diff mbox series

[kirkstone,2.0,10/14] fetch2: Ensure directory exists before creating symlink

Message ID 4f75814ee6580f61a27b71ed9169582e7ddd1559.1663078873.git.steve@sakoman.com
State Accepted, archived
Commit ff3afb1c1bb236c4a52c62a74f2917071e0af55b
Headers show
Series [kirkstone,2.0,01/14] runqueue: Fix unihash cache mismatch issues | expand

Commit Message

Steve Sakoman Sept. 13, 2022, 2:26 p.m. UTC
From: Richard Purdie <richard.purdie@linuxfoundation.org>

If the mirrors code is trying to create a symlink and the
parent directory doesn't exist, as might be the case for sstate
mirrors where the fetch is into a subdir, it can silently fail.

Ensure the directory exists in this case to avoid issues.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit eff16e474ee7dc49ae433420a4c8d15d3314a618)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
---
 lib/bb/fetch2/__init__.py | 2 ++
 1 file changed, 2 insertions(+)
diff mbox series

Patch

diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index ac557176..a3140626 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -1097,6 +1097,8 @@  def try_mirror_url(fetch, origud, ud, ld, check = False):
 
 def ensure_symlink(target, link_name):
     if not os.path.exists(link_name):
+        dirname = os.path.dirname(link_name)
+        bb.utils.mkdirhier(dirname)
         if os.path.islink(link_name):
             # Broken symbolic link
             os.unlink(link_name)