Allow repeated invocations of 'mirror create'

When creating a cosmetic symlink for a resource in a mirror, remove
it if it already exists. The symlink is removed in case the logic to
create the symlink has changed.
This commit is contained in:
Peter Josef Scheibel 2019-11-26 18:42:21 -08:00 committed by Massimiliano Culpo
parent 03203a86b4
commit b64f458102

View file

@ -70,7 +70,13 @@ def symlink(self, mirror_ref):
relative_dst = os.path.relpath(
mirror_ref.storage_path,
start=os.path.dirname(cosmetic_path))
if not os.path.exists(cosmetic_path):
if os.path.lexists(cosmetic_path):
# In this case the link itself exists but it is broken: remove
# it and recreate it (in order to fix any symlinks broken prior
# to https://github.com/spack/spack/pull/13908)
os.unlink(cosmetic_path)
mkdirp(os.path.dirname(cosmetic_path))
os.symlink(relative_dst, cosmetic_path)