groff
[Top][All Lists]
Advanced

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

Re: parallel make problem with our Texinfo manual


From: Bertrand Garrigues
Subject: Re: parallel make problem with our Texinfo manual
Date: Sat, 22 May 2021 02:00:07 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)

Hi Branden,

On Fri, May 21 2021 at 04:57:59 PM, "G. Branden Robinson" 
<g.branden.robinson@gmail.com> wrote:
> I have a reproducible problem that I don't understand.
[...]
>
> $ echo '@c' >> doc/groff.texi
> $ (cd build && make -j all check)
[...]
> .../groff/build/../doc/groff.texi
> makeinfo: rename doc/groff.info failed: No such file or directory
[...]
> Essential parts of this include:
> (1) I have to actually modify groff.texi.  Touching its timestamp does
> not suffice.
> (2) I have to call the "all" _and_ "check" targets.
> (3) I have to use the "-j" flag.

I can reproduce this on my distro,

> What I think is happening is that make(1) is forking off a job for each
> of the "all" and "check" targets, and they are racing against each
> other.  One of them always loses, so I always get the error.

The generated Makefile use recursive make for both 'all' and 'check'
targets:

   all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
   [...]
   check: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) check-am

That's why there is no dependency tracking (the jobs generated by the
'all' target are not aware of the jobs from the 'check' target).  Also
'make check' implies 'make all' as we have:

  check-am: all-am

So it's a bit like if you've done 'make all & make all'.  You don't need to
do (and should not do) 'make -j all check' just do 'make -j check'.

Regards,

Bertrand



reply via email to

[Prev in Thread] Current Thread [Next in Thread]