[OE-core] [PATCH] bitbake.conf/image.bbclass: Ensure images use the correct passwd/group files

Andreas Müller schnitzeltony at gmx.de
Sat Dec 10 00:41:56 UTC 2011


On Friday, December 09, 2011 04:10:36 PM Koen Kooi wrote:
> Op 9 dec. 2011, om 16:05 heeft Richard Purdie het volgende geschreven:
> > On Fri, 2011-12-09 at 14:44 +0100, Koen Kooi wrote:
> >> Op 8 dec. 2011, om 08:05 heeft Martin Jansa het volgende geschreven:
> >>> On Thu, Dec 08, 2011 at 12:53:11AM +0100, Andreas Müller wrote:
> >>>> On Wednesday, December 07, 2011 06:34:07 PM Richard Purdie wrote:
> >>>>> We need pseudo to use the rootfs passwd/group files belonging to the
> >>>>> rootfs when building images. This patch ensures that we use the
> >>>>> rootfs files instead of those in the sysroot which can lead to
> >>>>> incorrect file ownership issues.
> >>>>> 
> >>>>> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> >>>>> 
> >>>>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> >>>>> index 4642fa6..865d430 100644
> >>>>> --- a/meta/classes/image.bbclass
> >>>>> +++ b/meta/classes/image.bbclass
> >>>>> @@ -121,6 +121,8 @@ IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
> >>>>> 
> >>>>> LINGUAS_INSTALL = "${@" ".join(map(lambda s: "locale-base-%s" % s,
> >>>>> d.getVar('IMAGE_LINGUAS', 1).split()))}"
> >>>>> 
> >>>>> +PSEUDO_PASSWD = "${IMAGE_ROOTFS}"
> >>>>> +
> >>>>> do_rootfs[nostamp] = "1"
> >>>>> do_rootfs[dirs] = "${TOPDIR}"
> >>>>> do_rootfs[lockfiles] += "${IMAGE_ROOTFS}.lock"
> >>>>> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> >>>>> index e80cc32..eeb1fc4 100644
> >>>>> --- a/meta/conf/bitbake.conf
> >>>>> +++ b/meta/conf/bitbake.conf
> >>>>> @@ -580,11 +580,12 @@ SRC_URI = "file://${FILE}"
> >>>>> 
> >>>>> # Use pseudo as the fakeroot implementation
> >>>>> PSEUDO_LOCALSTATEDIR ?= "${WORKDIR}/pseudo/"
> >>>>> +PSEUDO_PASSWD ?= "${STAGING_DIR_TARGET}"
> >>>>> export PSEUDO_DISABLED = "1"
> >>>>> #export PSEUDO_PREFIX = "${STAGING_DIR_NATIVE}${prefix_native}"
> >>>>> #export PSEUDO_BINDIR = "${STAGING_DIR_NATIVE}${bindir_native}"
> >>>>> #export PSEUDO_LIBDIR =
> >>>>> "${STAGING_DIR_NATIVE}$PSEUDOBINDIR/../lib/pseudo/lib -FAKEROOTENV =
> >>>>> "PSEUDO_PREFIX=${STAGING_DIR_NATIVE}${prefix_native}
> >>>>> PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR}
> >>>>> PSEUDO_PASSWD=${STAGING_DIR_TARGET} PSEUDO_NOSYMLINKEXP=1
> >>>>> PSEUDO_DISABLED=0" +FAKEROOTENV =
> >>>>> "PSEUDO_PREFIX=${STAGING_DIR_NATIVE}${prefix_native}
> >>>>> PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR}
> >>>>> PSEUDO_PASSWD=${PSEUDO_PASSWD} PSEUDO_NOSYMLINKEXP=1
> >>>>> PSEUDO_DISABLED=0" FAKEROOTNOENV = "PSEUDO_UNLOAD=1"
> >>>>> FAKEROOTDIRS = "${PSEUDO_LOCALSTATEDIR}"
> >>>>> PREFERRED_PROVIDER_virtual/fakeroot-native ?= "pseudo-native"
> >>>> 
> >>>> dbus still needs manual call of
> >>>> 
> >>>> 	chown messagebus:messagebus /var/run/dbus /var/lib/dbus
> >>>> 
> >>>> ( it is root:root on my image) and
> >>>> 
> >>>> 	chown root:messagebus /usr/libexec/dbus-daemon-launch-helper
> >>>> 
> >>>> ( it is avahi:netdev on my image )
> >>>> 
> >>>> Does this one fix it?
> >>> 
> >>> It did for me, see:
> >>> http://bugzilla.pokylinux.org/show_bug.cgi?id=1711
> >>> 
> >>>> To test: Is it enough to rebuild dbus?
> >>> 
> >>> I had right owners in dbus package, wrong only in rootfs, so your issue
> >>> could be different.
> >> 
> >> I've also started seeing this issue recently, I wonder if it's due to
> >> switching MACHINEs and sstate invalidation.
> > 
> > Has it continued since the above patch was merged or not?
> > 
> > What we really need at this point is a clear reproducer for the bug.
For me the dbus bug is stable since Otavio's patch which moved all chown stuff 
from pkg_postinst to do_install [1]
> 
> I'm seeing it in a filesystem I built yesterday from an incremental build:
> 
> commit 493746f1d7f1410284880203c1ac462d61ab5299
> Author: Martin Jansa <martin.jansa at gmail.com>
> Date:   Tue Dec 6 09:35:21 2011 +0100
> 
In passwd/groups I have:

root at overo:~# cat /etc/passwd
...
avahi:x:999:999::/var/run/avahi-daemon:/bin/false
messagebus:x:998:997::/var/lib/dbus:/bin/false

root at overo:~# cat /etc/group
...
avahi:x:999:
netdev:x:998:
messagebus:x:997:
lock:x:996:

for messagebus group I see guid 997 and uuid 998 AND netdev uuid is 998!

After testing the patch - we are currently talking of - I have: 

/var/run/dbus -> root:root
/var/lib/dbus -> 70:netdev
/usr/libexec/dbus-daemon-launch-helper -> root:netdev

and I swear before the patch I saw one of these files with owner avahi!

Is there some mechanism, enusring useradd/groupadd stuff working properly for 
multiple threads adding users/groups at the same time?

Andreas

[1] http://cgit.openembedded.org/openembedded-
core/commit/?id=46e6c3fa8034b12d178d605f3f5d7efe69671a13




More information about the Openembedded-core mailing list