summaryrefslogtreecommitdiff
path: root/meta/classes/package.bbclass
diff options
context:
space:
mode:
authorDan McGregor <dan.mcgregor@usask.ca>2016-04-13 16:17:56 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-04-14 10:58:28 +0100
commitb7504ece784fad997e72f4cd89cdf73f24901541 (patch)
treedd95f0f42cbaf0f4641dc304f4ee6a602676cbc8 /meta/classes/package.bbclass
parent4ac2e5493671b198e562732e5fd8f525247527e4 (diff)
downloadopenembedded-core-b7504ece784fad997e72f4cd89cdf73f24901541.tar.gz
openembedded-core-b7504ece784fad997e72f4cd89cdf73f24901541.tar.bz2
openembedded-core-b7504ece784fad997e72f4cd89cdf73f24901541.zip
package.bbclass: improve permission handling
Change fs_link_table to be keyed by path, just like fs_perms_table. When a new entry is coming in for either table, remove any previous entry for that path. This way later permission file entries override earlier ones. [YOCTO #9430] Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/package.bbclass')
-rw-r--r--meta/classes/package.bbclass11
1 files changed, 8 insertions, 3 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 894b7294a2..76b9f86491 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -775,9 +775,13 @@ python fixup_perms () {
entry = fs_perms_entry(d.expand(line))
if entry and entry.path:
if entry.link:
- fs_link_table[entry.link] = entry
+ fs_link_table[entry.path] = entry
+ if entry.path in fs_perms_table:
+ fs_perms_table.pop(entry.path)
else:
fs_perms_table[entry.path] = entry
+ if entry.path in fs_link_table:
+ fs_link_table.pop(entry.path)
f.close()
# Debug -- list out in-memory table
@@ -789,8 +793,9 @@ python fixup_perms () {
# We process links first, so we can go back and fixup directory ownership
# for any newly created directories
# Process in sorted order so /run gets created before /run/lock, etc.
- for link in sorted(fs_link_table):
- dir = fs_link_table[link].path
+ for entry in sorted(fs_link_table.values(), key=lambda x: x.link):
+ link = entry.link
+ dir = entry.path
origin = dvar + dir
if not (cpath.exists(origin) and cpath.isdir(origin) and not cpath.islink(origin)):
continue