[poky] poky-image-sato-sdk failed at do_rootfs

Lu, Lianhao lianhao.lu at intel.com
Mon Jan 31 07:24:58 PST 2011


Lu, Lianhao wrote on 2011-01-30:
> Tian, Kevin wrote on 2011-01-30:
>>> From: Richard Purdie
>>> Sent: Sunday, January 30, 2011 6:13 PM
>>> 
>>> On Sat, 2011-01-29 at 17:33 -0800, Zhang, Jessica wrote:
>>>> My poky-image-sato-sdk against the latest master is consistently 
>>>> failed at last step of do_rootfs, here's the error:
>>>> 
>>>>  Processing task-poky-qt-demos...
>>>> | error: Failed dependencies:
>>>> |  eglibc >= 2.12 is needed by libstdc++6-4.5.1-r2.armv5te  eglibc
>>>> | >= 2.12 is needed by libgcc1-4.5.1-r0.armv5te Function 'do_rootfs'
>>>> | failed
>>>> (see
>>> 
>>> 
>>> /home/jzhang/master-arm-build/tmp/work/qemuarm-poky-linux-gnueabi/po
>>> k y - image-sato-sdk-1.0-r0/temp/log.do_rootfs.6142 for further
>>> information)
>>>> | ERROR: Function 'do_rootfs' failed
>>>> (see
>>> 
>>> 
>>> /home/jzhang/master-arm-build/tmp/work/qemuarm-poky-linux-gnueabi/po
>>> k y - image-sato-sdk-1.0-r0/temp/log.do_rootfs.6142 for further
>>> information)
>>>> 
>>>> Has anybody run into same issue or any idea?
>>> 
>>> This looks like a race issue we once had. Grepping the gcc include 
>>> files
>>> revealed:
>>> 
>>> gcc-configure-cross.inc:do_package_write_ipk[depends] += 
>>> "virtual/libc:do_package"
>>> 
>>> which was added to address this problem. Of course now, libgcc and
>>> libstdc++ are built by libgcc and gcc-runtime so I think the correct
>>> approach is to make both of these dependent on the libc packaging to 
>>> finish.
>> 
>> Curious how that race condition doesn't cause issue in the 1st place 
>> when libgcc and gcc-runtime are compiled, while only occurs in final 
>> rootfs stage...
>> 
>> BTW, today I took a brief look in Lianhao's cube. His phenomenon is 
>> even more complex I think because when above error of do_rootfs is 
>> thrown out there're still 6-7 ongoing tasks which are waited to complete.
>> 
>>> 
>>> This also shouldn't be ipk specific, in the modern world we can 
>>> depend on do_package_write.
>>> 
>>> The problem is that "eglibc" gets renamed to libc at package time.
>>> If the package step hasn't run, the renaming isn't applied to the 
>>> dependencies that libgcc and libstdc++ have on libc and you see this 
>>> error. If you rebuild those packages, the image should work.
>>> Since its a race, some builds will work, some won't. Using rm_work 
>>> will make this bug more likely to appear at a guess.
>>> 
>> 
>> Since Lianhao also observed this issue, we'll take a look at this 
>> issue tomorrow.
>> 
> 
> Here is what I found using the master with the latest commit 
> ffd12fc476d6061ba1e019a1e789cf1a2d3c82e6.
> 
> 1. set PACKAGE_CLASSES to "package_rpm package_ipk" and target machine 
> to "qemumips" in conf/local.conf 2. bitbake poky-image-minimal from 
> scratch, then bitbake meta-toolchain incrementally. Both got built successfully.
> 3. set PACKAGE_CLASSES to "package_ipk package_rpm"
> 4. bitbake poky-image-minimal incrementally, and it succeeded.
> 5. bitbake meta-toolchain incrementally, it failed complaining about 
> unsatisfied dependencies to eglibc during opkg installation. See 
> attached file "log.do_populate_sdk" for details. This failure is then reproducible every time.
> 6. set PACKAGE_CLASSES back to "package_rpm package_ipk"
> 7. bitbake poky-image-minimal incrementally, it failed complaining 
> about unsatisfied dependencies to eglibc during rpm installation. See 
> attached file "log.do_rootfs" for details. This failure is then reproducible every time.
> 

Just as Richard said, we've confirmed that this issue was caused by a race problem. We saw this issue because the libgcc's do_package_write_xxx task got executed before the eglibc's do_pacakge task finished. This problem might be there for some time, but somehow it was not exposed until the recent commit of adding a non stamp task do_populate_lic.(see the email chain named after "summary about recent do_populate_sdk failures" for details).  We should add dependency so that the task package_write_xxx of libgcc and libstdc++ is dependent upon "virtual/libc:do_package". 

Is there any package other than libgcc and gcc-runtime have such race problem with libc? I think many packages are implicitly dependent on virtual/libc, how those packages do_package_write_xxx's dependency upon libc's do_package get assured?

Best Regards,
Lianhao





More information about the poky mailing list