[oe] The coreutils-native race...

Tom Rini tom_rini at mentor.com
Sun Apr 25 21:12:05 UTC 2010


On Mon, 2010-04-26 at 00:42 +0400, Roman I Khimov wrote:
> В сообщении от Воскресенье 25 апреля 2010 21:48:59 автор Tom Rini написал:
> > Right now, with a big enough BB_NUM_THREADS we can get into a race where
> > coreutils-native is installing programs and elsewhere we are in a
> > do_fetch and either trying to use 'cp' or 'md5sum', and blam, we try and
> > invoke the program while it's being installed (and see things like
> > sh: /path/to/staging/i686-linux/usr/bin/cp: Textfile is busy).
> > 
> > There's a few ways out of this:
> > 1) Don't rely on 'cp' and 'md5sum' anymore but use python for it.
> 
> I guess it couldn't really be done, since those could be invoked from any 
> shell script, right? Although it only is a concern for things before 
> do_configure, so there shouldn't be many scripts there.

We control (as it's in bbclasses) what's invoked in these tasks that are
allowed to run before do_configure is invoked (the current choke point
the world has on coreutils-native being complete).

> > 2) Make an oe_cp and oe_md5sum to go with oe_sha256sum
> > 3) IIRC, the big part of coreutils-native was a fully functional,
> > always, 'install'.  We could just copy the install we build or provide
> > an install wrapper (oe_install) or so
> 
> We've had install-native, but that was some broken dusty script that act like 
> a detonator - you build some package having it in DEPENDS (not many had, but I 
> was lucky enough) and boom! random packages brake randomly in do_install 
> because of disfunctional install.

True, but we could just as easily replace coreutils-native with
oeinstall-native in base.bbclass.

> I've proposed back then to just drop it. But there've been a concern that for 
> reliable builds it's better to be sure that we have known proper install and 
> that is provided by coreutils along with many other things, which are also 
> good to have in some known good state for an OS-independent build system.
> 
> This is the way we've got to the point of having coreutils-native in all of 
> our builds.

I think I forgot #5
5) Make coreutils-native:do_populate_sysroot (or whatever fully staged
means at this point) before anything else is really allowed to go on.

> Although, as I'm personally building my things on sane GNU hosts with sane 
> coreutils with known nice install, I've always had coreutils-native in 
> ASSUME_PROVIDED. Thus, not seeing any failures with usual 4 bb threads.

This rarely happens with 4 threads here and is much more often at 6 or 8
threads.

-- 
Tom Rini <tom_rini at mentor.com>
Mentor Graphics Corporation




More information about the Openembedded-devel mailing list