diff options
author | Mardegan, Alberto <AMardegan@luxoft.com> | 2017-09-21 14:33:52 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-09-22 17:43:42 +0100 |
commit | 14c17480827ced2e03c1b62dc839696421fc4de8 (patch) | |
tree | 04f0c55780263fe24f5e53597aad863d318a0061 /lib/bb/utils.py | |
parent | 131d4b8a5834781a93ed41e2967d8dcd4d80f29a (diff) | |
download | bitbake-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>
Diffstat (limited to 'lib/bb/utils.py')
-rw-r--r-- | lib/bb/utils.py | 19 |
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 |