tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: make vs MKDEBUG vs parallel builds



On Wed, Jun 3, 2015 at 1:07 PM, matthew green <mrg%eterna.com.au@localhost> wrote:
>
> i believe i have found the cause of intermittent failures with MKDEBUG
> set and -j builds.
>
> when you set MKDEBUG, we end up with two targets in the list:
>
>         libfoo.so.x.y
>         libfoo.so.x.y.debug
>
> and the latter depends upon the former.  this all seems fine, except
> the rule for the second one *recreates* the former:
>
>         (  ${OBJCOPY} --only-keep-debug ${_LIB.so.full} ${_LIB.so.debug} \
>         && ${OBJCOPY} --strip-debug -p -R .gnu_debuglink \
>             --add-gnu-debuglink=${_LIB.so.debug} ${_LIB.so.full} \
>
> the 2nd objcopy here removes the ${_LIB.so.full} and recreates it without
> the debug, etc., info.
>
> this is where the problem occurs.  when a concurrent install sees that
> the file is upto date and tries to install it, it has been removed but
> not yet recreated, and the install fails.
>
> ie, the debug rule modifies the target of another rule, and make does not
> have a way to express this (nor really should.)
>
> if make supported multiple outputs for one rule, it would be easy to
> simply fold the .debug creation into the normal rule, but it doesn't.
> (this is similar to the yacc creates two files problem.)
>
>
> the only real solution i can think of for this is to split this into
> 3 rules:
>         .so
>         .so.full
>         .so.debug.
>
> this has the unfortunate side effect of increasing the build space for
> MKDEBUG builds.  on my amd64 system, i measured approx 170MB of
> additional files.
>
> can anyone think of a way to avoid this copy?  if not, i think we'll
> have to pay the costs for correct builds.

I definitely prefer correct dependency to hacks to save build space.
If you *really* want to save space, you can do many other things too.
Even in that case, complicating make files (== faking dependency
informations) must not be done, IMO.

> thanks.
>
>
> .mrg.


Home | Main Index | Thread Index | Old Index