bitbake: fetch2: Ensure a valid symlink in PREMIRRORS case when using shallow cloning

- Since `ud.path` contains in that case the `PREMIRRORS` prefix path,
  this change ensures that a correct symlink is set up.

(Bitbake rev: 37ed18e45aa17406162efc5ee3ddb2d6b33d07b9)

Signed-off-by: Stefan Koch <stefan-koch@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Stefan Koch 2025-05-27 11:59:02 +02:00 committed by Richard Purdie
parent 0e9ce41a1c
commit f5ae37fbd8
2 changed files with 16 additions and 1 deletions

View File

@ -1117,7 +1117,10 @@ def try_mirror_url(fetch, origud, ud, ld, check = False):
origud.method.build_mirror_data(origud, ld)
return origud.localpath
# Otherwise the result is a local file:// and we symlink to it
ensure_symlink(ud.localpath, origud.localpath)
# This may also be a link to a shallow archive
# When using shallow mode, add a symlink to the original fullshallow
# path to ensure a valid symlink even in the `PREMIRRORS` case
origud.method.update_mirror_links(ud, origud)
update_stamp(origud, ld)
return ud.localpath
@ -1653,6 +1656,11 @@ class FetchMethod(object):
except FileExistsError:
pass
def update_mirror_links(self, ud, origud):
# For local file:// results, create a symlink to them
# This may also be a link to a shallow archive
self.ensure_symlink(ud.localpath, origud.localpath)
def try_premirror(self, urldata, d):
"""
Should premirrors be used?

View File

@ -348,6 +348,13 @@ class Git(FetchMethod):
def tarball_need_update(self, ud):
return ud.write_tarballs and not os.path.exists(ud.fullmirror)
def update_mirror_links(self, ud, origud):
super().update_mirror_links(ud, origud)
# When using shallow mode, add a symlink to the original fullshallow
# path to ensure a valid symlink even in the `PREMIRRORS` case
if ud.shallow and not os.path.exists(origud.fullshallow):
self.ensure_symlink(ud.localpath, origud.fullshallow)
def try_premirror(self, ud, d):
# If we don't do this, updating an existing checkout with only premirrors
# is not possible