From: Chen Qi Date: Tue, 17 Feb 2015 02:08:15 +0000 (+0800) Subject: useradd.bbclass: avoid do_rootfs error for debian package backend X-Git-Tag: lucaceresoli/bug-15201-perf-libtraceevent-missing~31200 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d98e5ec575f542b3afaabd96b07ae9a21e1c22f4;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git useradd.bbclass: avoid do_rootfs error for debian package backend 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/group adding problem? They do it at postinst of the package. And, the postinst script of a package would possibly do `chown' of its files 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 Signed-off-by: Richard Purdie --- diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass index 0b9a843b249..e443f845f7a 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