]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
useradd.bbclass: avoid do_rootfs error for debian package backend
authorChen Qi <Qi.Chen@windriver.com>
Tue, 17 Feb 2015 02:08:15 +0000 (10:08 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 17 Feb 2015 22:29:04 +0000 (22:29 +0000)
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 <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/useradd.bbclass

index 0b9a843b24922d35b63f256fef1d2e91d0bd8d34..e443f845f7aa734a9792897953f15caccf17db36 100644 (file)
@@ -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