brainvisa / brainvisa.github.io

Source of BrainVISA developers site
2 stars 2 forks source link

shutil functions are not working some file systems #127

Open sapetnioc opened 1 year ago

sapetnioc commented 1 year ago

This is the case on several file systems used in Neurospin. The use of os.setxattrs raises a permission denied exception. But shutil functions that move files are calling it making BrainVISA being unusable.

sapetnioc commented 1 year ago

An urgent workaround is required here for a user using a shared development environment. For this, I will provide a modified image where shutil._setxattrs does nothing. It is a possibility for shutil if extended attributes are not supported by system. I will just change the test for this image. This will be in a casa-dev-5.3-17-neurospin.sif image. If it works and Neurospin users report the same kind of problems, we may have to do the same for user images.

ylep commented 1 year ago

I actually encountered and fixed a similar issue in https://github.com/brainvisa/brainvisa-spm/commit/d67cf36007504b57eff484e66e55fa22c8af6acd.

A less drastic way of fixing the issue is to replace shutil.move(src,dst) by shutil.move(src, dst, copy_function=shutil.copyfile) when we do not need to copy file metadata (mode, mtime, xattrs...).

Maybe we should add some functions to soma-base that reimplement shutil.move, shutil.copy, shutil.copy2, but ignore PermissionErrors that occur during the copy of file metadata?