diff options
author | Patrick Ohly <patrick.ohly@intel.com> | 2017-02-10 12:29:14 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-02-19 06:16:51 -0800 |
commit | e5628c80a52f3caeea9d9dc7f67d1b8a61222aef (patch) | |
tree | e38d4834de51d972bd98ac5fc5d64f67ec678757 /meta/lib | |
parent | b3e3ef85f5fd64473cae4aa72243665ac1e618e9 (diff) | |
download | openembedded-core-e5628c80a52f3caeea9d9dc7f67d1b8a61222aef.tar.gz openembedded-core-e5628c80a52f3caeea9d9dc7f67d1b8a61222aef.tar.bz2 openembedded-core-e5628c80a52f3caeea9d9dc7f67d1b8a61222aef.zip |
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]
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/rootfspostcommands.py | 28 |
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): f.write(b''.join(lines)) return new_mapping +def remove_backup(filename): + """ + Removes the backup file for files like /etc/passwd. + """ + backup_filename = filename + '-' + if os.path.exists(backup_filename): + os.unlink(backup_filename) + def sort_passwd(sysconfdir): """ Sorts passwd and group files in a rootfs /etc directory by ID. + Backup files are sometimes are inconsistent and then cannot be + sorted (YOCTO #11043), and more importantly, are not needed in + the initial rootfs, so they get deleted. """ - for suffix in '', '-': - for main, shadow in (('passwd', 'shadow'), - ('group', 'gshadow')): - filename = os.path.join(sysconfdir, main + suffix) + for main, shadow in (('passwd', 'shadow'), + ('group', 'gshadow')): + filename = os.path.join(sysconfdir, main) + remove_backup(filename) + if os.path.exists(filename): + mapping = sort_file(filename, None) + filename = os.path.join(sysconfdir, shadow) + remove_backup(filename) if os.path.exists(filename): - mapping = sort_file(filename, None) - filename = os.path.join(sysconfdir, shadow + suffix) - if os.path.exists(filename): - sort_file(filename, mapping) + sort_file(filename, mapping) |