]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake/utils.py: Only try and add read access to a file if we don't have it
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 25 Feb 2011 17:22:00 +0000 (17:22 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 6 May 2011 17:21:17 +0000 (18:21 +0100)
A file we're copying might be on a readonly filesystem so if we can already read
it, don't try and add read permission.

Fixes BUGID #771 in Yocto.

(From Poky rev: 9166b9e32fd6f618f9597b07d88cef09a88916a1)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/utils.py

index bc83e7c9a342e5a65fbcc95418b0a28a8e03a026..ccafda19e3980d07b1b673282bfc0411b970e339 100644 (file)
@@ -772,16 +772,23 @@ def copyfile(src, dest, newmtime = None, sstat = None):
             return False
 
     if stat.S_ISREG(sstat[stat.ST_MODE]):
-        os.chmod(src, stat.S_IRUSR) # Make sure we can read it
-        try: # For safety copy then move it over.
+        try:
+            srcchown = False
+            if not os.access(src, os.R_OK):
+                # Make sure we can read it
+                srcchown = True
+                os.chmod(src, sstat[stat.ST_MODE] | stat.S_IRUSR)
+
+            # For safety copy then move it over.
             shutil.copyfile(src, dest + "#new")
             os.rename(dest + "#new", dest)
         except Exception as e:
             print('copyfile: copy', src, '->', dest, 'failed.', e)
             return False
         finally:
-            os.chmod(src, sstat[stat.ST_MODE])
-            os.utime(src, (sstat[stat.ST_ATIME], sstat[stat.ST_MTIME]))
+            if srcchown:
+                os.chmod(src, sstat[stat.ST_MODE])
+                os.utime(src, (sstat[stat.ST_ATIME], sstat[stat.ST_MTIME]))
 
     else:
         #we don't yet handle special, so we need to fall back to /bin/mv