+ raise err
+
+def link_or_copy(src, dest):
+ try:
+ os.link(src, dest)
+ except OSError:
+ shutil.copyfile(src, dest)
+
+def remove_tree_contents(dir):
+ for f in os.listdir(dir):
+ name = os.path.join(dir, f)
+ try:
+ os.unlink(name)
+ except OSError, err:
+ if err.errno == os.errno.EISDIR:
+ shutil.rmtree(os.path.join(dir, f))
+ else:
+ raise err