summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2017-02-10 12:29:14 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-02-19 06:16:58 -0800
commitbcb24c013d9724dde3d3c742443ee5bfa944c83f (patch)
treeac928e03c3060ad3a3856b8ebf0c32d24fcfdbee /meta/lib
parent2a6323d3007f43e6b8c149043ab68476839ac2ad (diff)
downloadpoky-bcb24c013d9724dde3d3c742443ee5bfa944c83f.tar.gz
rootfspostcommands: remove shadow backup files instead of trying to sort
Backup are files sometimes are inconsistent and then cannot be sorted (YOCTO #11043), and more importantly, are not needed in the initial rootfs, so they get deleted. Fixes: [YOCTO #11007] (From OE-Core rev: e5628c80a52f3caeea9d9dc7f67d1b8a61222aef) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/rootfspostcommands.py28
1 files changed, 20 insertions, 8 deletions
diff --git a/meta/lib/rootfspostcommands.py b/meta/lib/rootfspostcommands.py
index 6a9b8b47b7..4742e0613c 100644
--- a/meta/lib/rootfspostcommands.py
+++ b/meta/lib/rootfspostcommands.py
@@ -29,16 +29,28 @@ def sort_file(filename, mapping):
29 f.write(b''.join(lines)) 29 f.write(b''.join(lines))
30 return new_mapping 30 return new_mapping
31 31
32def remove_backup(filename):
33 """
34 Removes the backup file for files like /etc/passwd.
35 """
36 backup_filename = filename + '-'
37 if os.path.exists(backup_filename):
38 os.unlink(backup_filename)
39
32def sort_passwd(sysconfdir): 40def sort_passwd(sysconfdir):
33 """ 41 """
34 Sorts passwd and group files in a rootfs /etc directory by ID. 42 Sorts passwd and group files in a rootfs /etc directory by ID.
43 Backup files are sometimes are inconsistent and then cannot be
44 sorted (YOCTO #11043), and more importantly, are not needed in
45 the initial rootfs, so they get deleted.
35 """ 46 """
36 for suffix in '', '-': 47 for main, shadow in (('passwd', 'shadow'),
37 for main, shadow in (('passwd', 'shadow'), 48 ('group', 'gshadow')):
38 ('group', 'gshadow')): 49 filename = os.path.join(sysconfdir, main)
39 filename = os.path.join(sysconfdir, main + suffix) 50 remove_backup(filename)
51 if os.path.exists(filename):
52 mapping = sort_file(filename, None)
53 filename = os.path.join(sysconfdir, shadow)
54 remove_backup(filename)
40 if os.path.exists(filename): 55 if os.path.exists(filename):
41 mapping = sort_file(filename, None) 56 sort_file(filename, mapping)
42 filename = os.path.join(sysconfdir, shadow + suffix)
43 if os.path.exists(filename):
44 sort_file(filename, mapping)