in setup.py [0:0]
def copy_file(self, src, dst, preserve_mode=1, preserve_times=1,
link=None, level=1):
name, actor = self.actor(src, dst)
if actor:
if not os.path.isfile(src):
raise DistutilsFileError("can't copy '%s': doesn't exist or not a regular file" % src)
if os.path.isdir(dst):
dir = dst
dst = os.path.join(dst, os.path.basename(src))
else:
dir = os.path.dirname(dst)
if not self.force and not newer(src, dst):
return dst, 0
if os.path.basename(dst) == os.path.basename(src):
log.info("%s %s -> %s", name, src, dir)
else:
log.info("%s %s -> %s", name, src, dst)
if self.dry_run:
return (dst, 1)
else:
try:
fsrc = open(src, 'rb')
except os.error as e:
errno, errstr = e.args
raise DistutilsFileError("could not open '%s': %s" % (src, errstr))
if os.path.exists(dst):
try:
os.unlink(dst)
except os.error as e:
errno, errstr = e.args
raise DistutilsFileError("could not delete '%s': %s" % (dst, errstr))
try:
fdst = open(dst, 'wb')
except os.error as e:
errno, errstr = e.args
raise DistutilsFileError("could not create '%s': %s" % (dst, errstr))
try:
fdst.write(actor(fsrc.read()))
finally:
fsrc.close()
fdst.close()
if preserve_mode or preserve_times:
st = os.stat(src)
if preserve_times:
os.utime(dst, (st[ST_ATIME], st[ST_MTIME]))
if preserve_mode:
os.chmod(dst, S_IMODE(st[ST_MODE]))
return (dst, 1)
else:
return Command.copy_file(self, src, dst, preserve_mode, preserve_times,
link, level)