summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2014-07-06 21:40:37 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-07-10 17:38:32 +0100
commit949bf156ca95153485c41698de4b4dd661b0f6dd (patch)
treedac0663e7bd22235c96eec1c0719540eb2eb02af /meta/recipes-core
parent7e6eeeefdd0a92df5203d54a9b574957ed2a25ce (diff)
downloadpoky-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.bb9
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