If /etc/login.defs is treated as a configuration file, then we would meet errors at do_rootfs time telling us that useradd/groupadd cannot execute correctly.
This is because the dpkg handles config file specially, the login.defs is temporarily renamed as login.defs.dpkg-new. How ubuntu deals the user adding problem? The do it at postinst of the package. And, in postinsts the packages would possibly do chown of its file or directories. The above strategy is not suitable for OE. Because we do chown in do_install and add user/group in preinst scripts of the packages. That's why we need this patch so that do_rootfs don't fail. Signed-off-by: Chen Qi <qi.c...@windriver.com> --- meta/classes/useradd.bbclass | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass index 0b9a843..e443f84 100644 --- a/meta/classes/useradd.bbclass +++ b/meta/classes/useradd.bbclass @@ -24,6 +24,16 @@ if test "x$D" != "x"; then # Installing into a sysroot SYSROOT="$D" OPT="--root $D" + + # Make sure login.defs is there, this is to make debian package backend work + # correctly while doing rootfs. + # The problem here is that if /etc/login.defs is treated as a config file for + # shadow package, then while performing preinsts for packages that depend on + # shadow, there might only be /etc/login.def.dpkg-new there in root filesystem. + if [ ! -e $D${sysconfdir}/login.defs -a -e $D${sysconfdir}/login.defs.dpkg-new ]; then + cp $D${sysconfdir}/login.defs.dpkg-new $D${sysconfdir}/login.defs + fi + # user/group lookups should match useradd/groupadd --root export PSEUDO_PASSWD="$SYSROOT:${STAGING_DIR_NATIVE}" fi -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core