From patchwork Fri Nov 4 09:00:36 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: avahi: fix useradd race condition Date: Fri, 04 Nov 2011 09:00:36 -0000 From: Koen Kooi X-Patchwork-Id: 14253 Message-Id: <8D498C9A-8B44-4A72-9859-22B0A316F8ED@dominion.thruhere.net> To: Patches and discussions about the oe-core layer Op 3 nov. 2011, om 22:04 heeft Scott Garman het volgende geschreven: > On 11/03/2011 07:39 AM, Richard Purdie wrote: >> On Thu, 2011-11-03 at 14:04 +0100, Koen Kooi wrote: >>> Op 3 nov. 2011, om 13:57 heeft Koen Kooi het volgende geschreven: >>> >>>> Avahi doesn't work at boot because of: >>>> >>>> + sh /OE/../rootfs/var/lib/opkg/info/avahi-daemon.preinst >>>> Running useradd commands... >>>> grep: /OE/../rootfs/etc/passwd: No such file or directory >>>> >>>> That is due to: >>>> >>>> Package: avahi-daemon >>>> Version: 0.6.30-r9.0 >>>> [..] >>>> Depends: libavahi-core7 (>= 0.6.30), libdaemon0 (>= 0.14), libcap2 (>= 2.22), libavahi-common3 (>= 0.6.30), libdbus-1-3 (>= 1.4.12), sysvinit-pidof, libc6 (>= 2.12), libexpat1 (>= 2.0.1) >>>> >>>> After this patch: >>>> >>>> Package: avahi-daemon >>>> Version: 0.6.30-r10.0 >>>> [..] >>>> Depends: libavahi-core7 (>= 0.6.30), libdaemon0 (>= 0.14), libcap2 (>= 2.22), libavahi-common3 (>= 0.6.30), libdbus-1-3 (>= 1.4.12), sysvinit-pidof, libc6 (>= 2.12), shadow, libexpat1 (>= 2.0.1), base-passwd >>>> >>>> This also changes ${PN}-daemon to avahi-daemon to be consistent with the PACKAGES/FILES lines below >>>> >>>> Signed-off-by: Koen Kooi >>>> --- >>>> meta/recipes-connectivity/avahi/avahi.inc | 7 ++++--- >>>> 1 files changed, 4 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/meta/recipes-connectivity/avahi/avahi.inc b/meta/recipes-connectivity/avahi/avahi.inc >>>> index 79cfd73..728c38f 100644 >>>> --- a/meta/recipes-connectivity/avahi/avahi.inc >>>> +++ b/meta/recipes-connectivity/avahi/avahi.inc >>>> @@ -14,7 +14,7 @@ SECTION = "network" >>>> # python scripts are under GPLv2+ >>>> LICENSE = "GPLv2+& LGPLv2.1+" >>>> >>>> -INC_PR = "r9" >>>> +INC_PR = "r10" >>>> >>>> DEPENDS = "expat libcap libdaemon dbus glib-2.0" >>>> >>>> @@ -23,8 +23,9 @@ SRC_URI = "http://avahi.org/download/avahi-${PV}.tar.gz \ >>>> file://99avahi-autoipd \ >>>> file://initscript.patch" >>>> >>>> -USERADD_PACKAGES = "${PN}-daemon" >>>> -USERADD_PARAM_${PN}-daemon = "--system --home /var/run/avahi-daemon \ >>>> +USERADDPN = "avahi-daemon" >>> >>> My gut feeling is that useradd.bbclass should add the RDEPENDS in its >>> pythoncode instead of relying on people to set both USERADD_PACKAGES >>> and USERADDPN to the same value. >> >> Agreed, looking at the code I think we can make this easier on the user. >> I'll take the fix to solve the short term issues but we could do with >> improving this. > > I've filed a bug and will work on a fix for this: > > http://bugzilla.pokylinux.org/show_bug.cgi?id=1727 > > Thank you for uncovering the source of the problem. Some more digging reveals a second bug: + for i in '/OE/tentacle/build/tmp-angstrom_2010_x-eglibc/work/beaglebone-angstrom-linux-gnueabi/cloud9-image-1.0-r0/rootfs/var/lib/opkg/info/*.preinst' That will go alphabetically, with 'avahi-daemon' going before 'base-passwd' :( I'm going to test this patch: Koen diff --git a/meta/classes/rootfs_ipk.bbclass b/meta/classes/rootfs_ipk.bbclass index e02b816..9a8edb1 100644 --- a/meta/classes/rootfs_ipk.bbclass +++ b/meta/classes/rootfs_ipk.bbclass @@ -77,6 +77,15 @@ fakeroot rootfs_ipk_do_rootfs () { ${ROOTFS_POSTINSTALL_COMMAND} runtime_script_required=0 + + # Base-passwd needs to run first to install /etc/passwd and friends + if [ -e ${IMAGE_ROOTFS}${opkglibdir}/info/base-passwd.preinst ] ; then + if ! sh $i; then + runtime_script_required=1 + opkg-cl ${IPKG_ARGS} flag unpacked base-passwd + fi + fi + regards,