Re: How to enforce ${B} = ${S} builds globally?

Richard Purdie
2014-12-23T08:19:28Z

On Mon, 2014-12-22 at 12:24 +0100, Enrico Scholz wrote:
> what is the recommended way to enable in-source builds globally?

You could probably do something like:

B_forcevariable = "${S}"

although its untested and I would warn that we rely on separate build
directories to avoid breakage from autotools not noticing new
configuration and rebuilding things correctly.

> Building in a separate directory might be interesting for qa, but it
> lowers end-user experience significantly because __FILE__ expands now
> to absolute names.
>
> E.g.
>
> | #include <assert.h>
> | int main() { assert(0); }
>
> gives
>
> | test: /srv/oe/cache/bld/f95aceac-8952-bd61-430a-dfcdf48db33c/work/cortexa9t2hf-vfp-neon-linux-gnueabi/test/1.0-r0/test-1.0/test.c:2: main: Assertion `0' failed.
>
> instead of
>
> | test: test.c:2: main: Assertion `0' failed.

Lets say you just shared this error as a cut and paste to me asking for
help. In the latter case, I have no idea what happened. In the former, I
can tell you were building for an arm system, your recipe PN was test
and so on.

So whilst the paths can be annoying, they can also be helpful and there
are in fact two sides to this.

Cheers,

Richard