remove_link_tree : moved to llnl.util.filesystem
This commit is contained in:
parent
901e4851b9
commit
4d63544fe9
@ -25,7 +25,7 @@
|
|||||||
__all__ = ['set_install_permissions', 'install', 'install_tree', 'traverse_tree',
|
__all__ = ['set_install_permissions', 'install', 'install_tree', 'traverse_tree',
|
||||||
'expand_user', 'working_dir', 'touch', 'touchp', 'mkdirp',
|
'expand_user', 'working_dir', 'touch', 'touchp', 'mkdirp',
|
||||||
'force_remove', 'join_path', 'ancestor', 'can_access', 'filter_file',
|
'force_remove', 'join_path', 'ancestor', 'can_access', 'filter_file',
|
||||||
'FileFilter', 'change_sed_delimiter', 'is_exe', 'force_symlink', 'remove_dead_links']
|
'FileFilter', 'change_sed_delimiter', 'is_exe', 'force_symlink', 'remove_dead_links', 'remove_linked_tree']
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
@ -353,4 +353,20 @@ def remove_dead_links(root):
|
|||||||
if os.path.islink(path):
|
if os.path.islink(path):
|
||||||
real_path = os.path.realpath(path)
|
real_path = os.path.realpath(path)
|
||||||
if not os.path.exists(real_path):
|
if not os.path.exists(real_path):
|
||||||
os.unlink(path)
|
os.unlink(path)
|
||||||
|
|
||||||
|
def remove_linked_tree(path):
|
||||||
|
"""
|
||||||
|
Removes a directory and its contents. If the directory is a symlink, follows the link and removes the real
|
||||||
|
directory before removing the link.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
path: directory to be removed
|
||||||
|
|
||||||
|
"""
|
||||||
|
if os.path.exists(path):
|
||||||
|
if os.path.islink(path):
|
||||||
|
shutil.rmtree(os.path.realpath(path), True)
|
||||||
|
os.unlink(path)
|
||||||
|
else:
|
||||||
|
shutil.rmtree(path, True)
|
||||||
|
@ -114,15 +114,13 @@ def __enter__(self):
|
|||||||
# Create the top-level stage directory
|
# Create the top-level stage directory
|
||||||
mkdirp(spack.stage_path)
|
mkdirp(spack.stage_path)
|
||||||
remove_dead_links(spack.stage_path)
|
remove_dead_links(spack.stage_path)
|
||||||
|
|
||||||
# If a tmp_root exists then create a directory there and then link it in the stage area,
|
# If a tmp_root exists then create a directory there and then link it in the stage area,
|
||||||
# otherwise create the stage directory in self.path
|
# otherwise create the stage directory in self.path
|
||||||
if self.tmp_root:
|
if self._need_to_create_path():
|
||||||
if self._need_to_create_path():
|
if self.tmp_root:
|
||||||
tmp_dir = tempfile.mkdtemp('', STAGE_PREFIX, self.tmp_root)
|
tmp_dir = tempfile.mkdtemp('', STAGE_PREFIX, self.tmp_root)
|
||||||
os.symlink(tmp_dir, self.path)
|
os.symlink(tmp_dir, self.path)
|
||||||
else:
|
else:
|
||||||
if self._need_to_create_path():
|
|
||||||
mkdirp(self.path)
|
mkdirp(self.path)
|
||||||
# Make sure we can actually do something with the stage we made.
|
# Make sure we can actually do something with the stage we made.
|
||||||
ensure_access(self.path)
|
ensure_access(self.path)
|
||||||
@ -436,19 +434,6 @@ def ensure_access(file=spack.stage_path):
|
|||||||
tty.die("Insufficient permissions for %s" % file)
|
tty.die("Insufficient permissions for %s" % file)
|
||||||
|
|
||||||
|
|
||||||
def remove_linked_tree(path):
|
|
||||||
"""Removes a directory and its contents. If the directory is a symlink,
|
|
||||||
follows the link and reamoves the real directory before removing the
|
|
||||||
link.
|
|
||||||
"""
|
|
||||||
if os.path.exists(path):
|
|
||||||
if os.path.islink(path):
|
|
||||||
shutil.rmtree(os.path.realpath(path), True)
|
|
||||||
os.unlink(path)
|
|
||||||
else:
|
|
||||||
shutil.rmtree(path, True)
|
|
||||||
|
|
||||||
|
|
||||||
def purge():
|
def purge():
|
||||||
"""Remove all build directories in the top-level stage path."""
|
"""Remove all build directories in the top-level stage path."""
|
||||||
if os.path.isdir(spack.stage_path):
|
if os.path.isdir(spack.stage_path):
|
||||||
|
Loading…
Reference in New Issue
Block a user