link_tree: only remove matching files when unmerging
This commit is contained in:
parent
b9e8402104
commit
94c0740a88
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
import filecmp
|
||||||
|
|
||||||
from llnl.util.filesystem import traverse_tree, mkdirp, touch
|
from llnl.util.filesystem import traverse_tree, mkdirp, touch
|
||||||
|
|
||||||
@ -113,4 +114,8 @@ def unmerge(self, dest_root, **kwargs):
|
|||||||
elif os.path.exists(dest):
|
elif os.path.exists(dest):
|
||||||
if not os.path.islink(dest):
|
if not os.path.islink(dest):
|
||||||
raise ValueError("%s is not a link tree!" % dest)
|
raise ValueError("%s is not a link tree!" % dest)
|
||||||
|
# remove if dest is a hardlink/symlink to src; this will only
|
||||||
|
# be false if two packages are merged into a prefix and have a
|
||||||
|
# conflicting file
|
||||||
|
if filecmp.cmp(src, dest, shallow=True):
|
||||||
os.remove(dest)
|
os.remove(dest)
|
||||||
|
Loading…
Reference in New Issue
Block a user