Date: Tue, 27 Jul 2010 19:50:03 GMT From: John Hein <jhein@symmetricom.com> To: freebsd-ports-bugs@FreeBSD.org Subject: Re: ports/149005: [patch] fix EOPNOTSUPP for copy2/copystat in python2.6 Message-ID: <201007271950.o6RJo3Ee041034@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/149005; it has been noted by GNATS. From: John Hein <jhein@symmetricom.com> To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-ports-bugs@FreeBSD.org Cc: Subject: Re: ports/149005: [patch] fix EOPNOTSUPP for copy2/copystat in python2.6 Date: Tue, 27 Jul 2010 13:44:38 -0600 --mZzHroiXY0 Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Updated patch fixes the filename paths so 'make patch' works... --mZzHroiXY0 Content-Type: text/plain; name="patch-copystat" Content-Description: patch-copystat Content-Disposition: inline; filename="patch-copystat" Content-Transfer-Encoding: 7bit # $FreeBSD$ Work around 'Operation not supported' issues when using copystat() (and copy2() which calls copystat()) to a filesystem destination that does not support chflags(2) (e.g., nfs, zfs). http://bugs.python.org/issue7512 This has already been applied upstream and 2.7 has it already. http://svn.python.org/view/python/branches/release26-maint/Lib/shutil.py?view=diff&pathrev=79300&r1=79299&r2=79300 Also affects mercurial... http://www.selenic.com/pipermail/mercurial/2010-March/030716.html --- Lib/shutil.py.orig 2009-01-29 13:30:51.000000000 -0700 +++ Lib/shutil.py 2010-07-27 11:17:45.000000000 -0600 @@ -9,6 +9,7 @@ import sys import stat from os.path import abspath import fnmatch +import errno __all__ = ["copyfileobj","copyfile","copymode","copystat","copy","copy2", "copytree","move","rmtree","Error"] @@ -74,8 +75,11 @@ def copystat(src, dst): if hasattr(os, 'chmod'): os.chmod(dst, mode) if hasattr(os, 'chflags') and hasattr(st, 'st_flags'): - os.chflags(dst, st.st_flags) - + try: + os.chflags(dst, st.st_flags) + except OSError, why: + if not hasattr(errno, 'EOPNOTSUPP') or why.errno != errno.EOPNOTSUPP: + raise def copy(src, dst): """Copy data and mode bits ("cp src dst"). --mZzHroiXY0--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007271950.o6RJo3Ee041034>