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>
This commit is contained in:
parent
7e6eeeefdd
commit
949bf156ca
|
@ -47,9 +47,14 @@ base_passwd_sstate_postinst() {
|
||||||
# put these files in the target sysroot so they can
|
# put these files in the target sysroot so they can
|
||||||
# be used by recipes which use custom user/group
|
# be used by recipes which use custom user/group
|
||||||
# permissions.
|
# 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 -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir}
|
||||||
install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/passwd.master ${STAGING_DIR_TARGET}${sysconfdir}/passwd
|
for i in passwd group; do
|
||||||
install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/group.master ${STAGING_DIR_TARGET}${sysconfdir}/group
|
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
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue