From a16387ab2d85f19665920bb6ff91a7e57f59dd2a Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Wed, 29 May 2019 23:25:31 -0400 Subject: bpo-24564: shutil.copystat(): ignore EINVAL on os.setxattr() (GH-13369) --- Lib/shutil.py | 5 +++-- Misc/NEWS.d/next/Library/2019-05-16-23-40-36.bpo-24564.lIwV_7.rst | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-05-16-23-40-36.bpo-24564.lIwV_7.rst diff --git a/Lib/shutil.py b/Lib/shutil.py index b2e8f5f..2dfae87 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -309,7 +309,7 @@ if hasattr(os, 'listxattr'): try: names = os.listxattr(src, follow_symlinks=follow_symlinks) except OSError as e: - if e.errno not in (errno.ENOTSUP, errno.ENODATA): + if e.errno not in (errno.ENOTSUP, errno.ENODATA, errno.EINVAL): raise return for name in names: @@ -317,7 +317,8 @@ if hasattr(os, 'listxattr'): value = os.getxattr(src, name, follow_symlinks=follow_symlinks) os.setxattr(dst, name, value, follow_symlinks=follow_symlinks) except OSError as e: - if e.errno not in (errno.EPERM, errno.ENOTSUP, errno.ENODATA): + if e.errno not in (errno.EPERM, errno.ENOTSUP, errno.ENODATA, + errno.EINVAL): raise else: def _copyxattr(*args, **kwargs): diff --git a/Misc/NEWS.d/next/Library/2019-05-16-23-40-36.bpo-24564.lIwV_7.rst b/Misc/NEWS.d/next/Library/2019-05-16-23-40-36.bpo-24564.lIwV_7.rst new file mode 100644 index 0000000..27cb617 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-05-16-23-40-36.bpo-24564.lIwV_7.rst @@ -0,0 +1,3 @@ +:func:`shutil.copystat` now ignores :const:`errno.EINVAL` on :func:`os.setxattr` which may occur when copying files on filesystems without extended attributes support. + +Original patch by Giampaolo Rodola, updated by Ying Wang. -- cgit v0.12