diff options
| author | Robert Yang <liezhi.yang@windriver.com> | 2014-07-06 21:40:37 -0700 | 
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-07-10 17:37:38 +0100 | 
| commit | cdbe55215e3dd1b82a6c147a31c7c40186a8bf80 (patch) | |
| tree | 16ccaba69b65f6e975d607ea8300c95a0a8ff46c | |
| parent | 7384d2831c713ac5999aca83c312154dc15cec56 (diff) | |
| download | openembedded-core-cdbe55215e3dd1b82a6c147a31c7c40186a8bf80.tar.gz openembedded-core-cdbe55215e3dd1b82a6c147a31c7c40186a8bf80.tar.bz2 openembedded-core-cdbe55215e3dd1b82a6c147a31c7c40186a8bf80.zip | |
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 <liezhi.yang@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
| -rw-r--r-- | meta/recipes-core/base-passwd/base-passwd_3.5.29.bb | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb b/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb index 59bd413b49..ec8f2afb22 100644 --- a/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb +++ b/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb @@ -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  } | 
