]> granicus.if.org Git - python/commitdiff
bpo-24564: shutil.copystat(): ignore EINVAL on os.setxattr() (GH-13369)
authorYing Wang <me@yingw787.com>
Thu, 30 May 2019 03:25:31 +0000 (23:25 -0400)
committerGiampaolo Rodola <g.rodola@gmail.com>
Thu, 30 May 2019 03:25:31 +0000 (11:25 +0800)
Lib/shutil.py
Misc/NEWS.d/next/Library/2019-05-16-23-40-36.bpo-24564.lIwV_7.rst [new file with mode: 0644]

index b2e8f5fd759bc6e6adef2160534a80302aa2a431..2dfae87c9ce9640dd5da2af400e78d703568e973 100644 (file)
@@ -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 (file)
index 0000000..27cb617
--- /dev/null
@@ -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.\r
+\r
+Original patch by Giampaolo Rodola, updated by Ying Wang.\r