[OE-core] diff between defining a "no-op" task and using [noexec]?

Richard Purdie richard.purdie at linuxfoundation.org
Fri Oct 18 13:42:25 UTC 2013


On Fri, 2013-10-18 at 09:13 -0400, Robert P. J. Day wrote:
> On Fri, 18 Oct 2013, Richard Purdie wrote:
> 
> > On Thu, 2013-10-17 at 08:07 -0400, Robert P. J. Day wrote:
> > >   using a concrete example, there's this from oe core's
> > > linux-dummy.bb:
> > >
> > > do_configure() {
> > >         :
> > > }
> > >
> > > do_compile () {
> > >         :
> > > }
> > >
> > > do_install() {
> > >         :
> > > }
> > >
> > >   what is the difference between the above and writing:
> > >
> > > do_configure[noexec] = "1"
> > > do_compile[noexec] = "1"
> > > do_install[noexec] = "1"
> > >
> > >   *is* there a difference? if so, does it have to do with the
> > > processing of other flags for that task?
> > >
> > >   i can see that, technically, the first variation still defines a
> > > task to be run, while the second specifies that the task *not* be run,
> > > so i can appreciate that those two operations have different results.
> >
> > The difference is just that, with the first case bitbake will run
> > the task, it will do nothing. In the second case, bitbake will not
> > bother running it at all.
> 
>   i figured as much, but is there any important (pragmatic)
> distinction between the two if one simply wants to nullify an existing
> task?

One is slightly more efficient since bitbake doesn't run it at all.

>   if there's a defined task dependency of some kind, i can certainly
> see how having a defined task consisting of a no-op would behave
> differently from specifying to not run that task at all, in terms of
> subsequent dependencies. does that distinction come into play
> anywhere? is there an example in the OE source that recognizes this?

No, the way we use noexec tasks, we still have to ensure dependencies
are recognised and built before the noexec task is skipped.

>   and WRT to how developers should code, is one of these approaches
> considered better than the other? i've seen both approaches used in
> recipe files, and i'm wondering simply about coding style. thanks.

noexec is newer, slightly more efficient and not used everywhere. The
":" notation is slightly more readable in some circumstances.

You're looking for a "use X" type answer but I'm not giving one since
sometimes one can make slightly more sense that the other and I don't
want patches doing wholesale conversion from one to the other. I
appreciate that is frustrating but like any things, hard and fast rules
don't make sense, you should think about it.

Cheers,

Richard





More information about the Openembedded-core mailing list