]> code.ossystems Code Review - openembedded-core.git/commitdiff
classes/license_image.bbclass: Fix rootfs license file permissions
authorJoshua Watt <jpewhacker@gmail.com>
Wed, 13 Feb 2019 16:58:36 +0000 (10:58 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 15 Feb 2019 08:17:38 +0000 (08:17 +0000)
Fixes up the permissions on the license files when they are put on the
target file system so that they are readable by everyone. Previously,
they would have inherited whatever permissions the file had in the
recipe, which may not have been appropriate.

[YOCTO #13175]

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/license_image.bbclass

index 6ac63e019280fc36a8fe76e5cc3a4fe5af4d183e..67500386bf8b07bd90291aec8af255d68b965172 100644 (file)
@@ -37,6 +37,7 @@ python license_create_manifest() {
 
 def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
     import re
+    import stat
 
     bad_licenses = (d.getVar("INCOMPATIBLE_LICENSE") or "").split()
     bad_licenses = map(lambda l: canonical_license(d, l), bad_licenses)
@@ -146,12 +147,17 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
                             continue
 
                         os.link(pkg_license, pkg_rootfs_license)
-            # Fixup file ownership
+            # Fixup file ownership and permissions
             for walkroot, dirs, files in os.walk(rootfs_license_dir):
                 for f in files:
-                    os.lchown(os.path.join(walkroot, f), 0, 0)
+                    p = os.path.join(walkroot, f)
+                    os.lchown(p, 0, 0)
+                    if not os.path.islink(p):
+                        os.chmod(p, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH)
                 for dir in dirs:
-                    os.lchown(os.path.join(walkroot, dir), 0, 0)
+                    p = os.path.join(walkroot, dir)
+                    os.lchown(p, 0, 0)
+                    os.chmod(p, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH)