aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMardegan, Alberto <AMardegan@luxoft.com>2017-09-21 14:33:52 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-09-22 17:43:42 +0100
commit14c17480827ced2e03c1b62dc839696421fc4de8 (patch)
tree04f0c55780263fe24f5e53597aad863d318a0061
parent131d4b8a5834781a93ed41e2967d8dcd4d80f29a (diff)
downloadbitbake-contrib-14c17480827ced2e03c1b62dc839696421fc4de8.tar.gz
bitbake: lib/bb/utils: fix movefile() copy to dir fallback
When the destination is a directory, building the the destination file path is always needed. That's because even if the copy fallback is taken, it's always followed by a rename. Signed-off-by: Alberto Mardegan <amardegan@luxoft.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/utils.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index 8550af34a..c540b49cf 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -771,13 +771,14 @@ def movefile(src, dest, newmtime = None, sstat = None):
return None
renamefailed = 1
+ # os.rename needs to know the dest path ending with file name
+ # so append the file name to a path only if it's a dir specified
+ srcfname = os.path.basename(src)
+ destpath = os.path.join(dest, srcfname) if os.path.isdir(dest) \
+ else dest
+
if sstat[stat.ST_DEV] == dstat[stat.ST_DEV]:
try:
- # os.rename needs to know the dest path ending with file name
- # so append the file name to a path only if it's a dir specified
- srcfname = os.path.basename(src)
- destpath = os.path.join(dest, srcfname) if os.path.isdir(dest) \
- else dest
os.rename(src, destpath)
renamefailed = 0
except Exception as e:
@@ -791,8 +792,8 @@ def movefile(src, dest, newmtime = None, sstat = None):
didcopy = 0
if stat.S_ISREG(sstat[stat.ST_MODE]):
try: # For safety copy then move it over.
- shutil.copyfile(src, dest + "#new")
- os.rename(dest + "#new", dest)
+ shutil.copyfile(src, destpath + "#new")
+ os.rename(destpath + "#new", destpath)
didcopy = 1
except Exception as e:
print('movefile: copy', src, '->', dest, 'failed.', e)
@@ -813,9 +814,9 @@ def movefile(src, dest, newmtime = None, sstat = None):
return None
if newmtime:
- os.utime(dest, (newmtime, newmtime))
+ os.utime(destpath, (newmtime, newmtime))
else:
- os.utime(dest, (sstat[stat.ST_ATIME], sstat[stat.ST_MTIME]))
+ os.utime(destpath, (sstat[stat.ST_ATIME], sstat[stat.ST_MTIME]))
newmtime = sstat[stat.ST_MTIME]
return newmtime