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

Reply via email to