base-passwd: install passwd and group atomically
cover base-passwd: install passwd and group atomically
The following changes since commit a5531a2b8983318b99c119a87b78a92cf84160b8:
bitbake: fetch2/svn: Add transportuser parameter (2014-07-04 09:28:36 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib rbt/pw
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=rbt/pw
Robert Yang (1):
base-passwd: install passwd and group atomically
.../recipes-core/base-passwd/base-passwd_3.5.29.bb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
Signature · 1 line
1.7.9.5
PATCH 1/1 base-passwd: install passwd and group atomically
Fixed the race issue:
util-macros.do_package failed: 'getpwnam(): name not found: root'
The error happens when there is a half etc/passwd, fixed by:
$ install usr/share/base-passwd/passwd.master etc/passwd.master $ mv etc/passwd.master etc/passwd
The "mv" is atomic which will fix this problem.
[YOCTO #6124]
Signed-off-by Robert Yang <[email protected]>
--- .../recipes-core/base-passwd/base-passwd_3.5.29.bb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
meta/recipes-core/base-passwd/base-passwd_3.5.29.bb +7 -2
@@ -47,9 +47,14 @@ base_passwd_sstate_postinst() { # put these files in the target sysroot so they can # be used by recipes which use custom user/group # permissions. + # Install passwd.master and group.master to sysconfdir and mv + # them to make sure they are atomically install. install -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir} - install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/passwd.master ${STAGING_DIR_TARGET}${sysconfdir}/passwd - install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/group.master ${STAGING_DIR_TARGET}${sysconfdir}/group + for i in passwd group; do + install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/$i.master \ + ${STAGING_DIR_TARGET}${sysconfdir}/ + mv ${STAGING_DIR_TARGET}${sysconfdir}/$i.master ${STAGING_DIR_TARGET}${sysconfdir}/$i + done fi }
Signature · 1 line
1.7.9.5