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:38:32 +0100 |
commit | 949bf156ca95153485c41698de4b4dd661b0f6dd (patch) | |
tree | dac0663e7bd22235c96eec1c0719540eb2eb02af /meta/recipes-core | |
parent | 7e6eeeefdd0a92df5203d54a9b574957ed2a25ce (diff) | |
download | poky-949bf156ca95153485c41698de4b4dd661b0f6dd.tar.gz |
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]
(From OE-Core rev: cdbe55215e3dd1b82a6c147a31c7c40186a8bf80)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core')
-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() { | |||
47 | # put these files in the target sysroot so they can | 47 | # put these files in the target sysroot so they can |
48 | # be used by recipes which use custom user/group | 48 | # be used by recipes which use custom user/group |
49 | # permissions. | 49 | # permissions. |
50 | # Install passwd.master and group.master to sysconfdir and mv | ||
51 | # them to make sure they are atomically install. | ||
50 | install -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir} | 52 | install -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir} |
51 | install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/passwd.master ${STAGING_DIR_TARGET}${sysconfdir}/passwd | 53 | for i in passwd group; do |
52 | install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/group.master ${STAGING_DIR_TARGET}${sysconfdir}/group | 54 | install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/$i.master \ |
55 | ${STAGING_DIR_TARGET}${sysconfdir}/ | ||
56 | mv ${STAGING_DIR_TARGET}${sysconfdir}/$i.master ${STAGING_DIR_TARGET}${sysconfdir}/$i | ||
57 | done | ||
53 | fi | 58 | fi |
54 | } | 59 | } |
55 | 60 | ||