bug#68860: race condition with make recheck

Bogdan via Bug reports for Automake <[email protected]> Sun, 25 Aug 2024 20:43:31 +0200
Newsgroups gmane.comp.sysutils.automake.bugs
Message-ID <[email protected]>
Karl Berry <[email protected]>, 2024-08-25 10:45:
> Thanks much, Bogdan.
>
>      -recheck: all %CHECK_DEPS%
>      +recheck: all-am %CHECK_DEPS%
>
> Do you have a grip on all-am? Looking at handle_all in bin/automake, I
> admit I remain baffled as to what all those pieces of all-am are, and
> why it's done as it is.


  Te be honest, not really :). At least, not fully. As far as I
understand/remember, those "all-am" were the ones processed
recursively. But, I may be wrong, seeing this comment in handle_all:

	# We need to make sure config.h is built before we recurse.
	# We also want to make sure that built sources are built
	# before any ordinary 'all' targets are run.  We can't do this
	# by changing the order of dependencies to the "all" because
	# that breaks when using parallel makes.  Instead we handle
	# things explicitly.

So, "all" just checks/remakes config.h before starting "the real work"
in all-am (be it recursive or not, parallel or not).


>      -  $output_rules .= "check-am: all-am\n";
>      +  $output_rules .= "check-am: all-am";
>         if (@check)
>           {
>      -      pretty_print_rule ("\t\$(MAKE) \$(AM_MAKEFLAGS)", "\t  ", @check);
>      +      $output_rules .= " @check";
>      +      #pretty_print_rule ("\t\$(MAKE) \$(AM_MAKEFLAGS)", "\t  ", @check);
>             depend ('.MAKE', 'check-am');
>           }
>      +  $output_rules .= "\n";
>
> So I gather the basic fix to output the check targets as dependencies of
> check-am, instead of as sub-makes. That seems a plausible reason and fix
> for the parallel bug to me.


  Yes, I'm adding the dependencies as I believe they should be. Here
and in check.am. Maybe the check.am is too much (especially seeing
that skipping the dependency on config.h may *not* be desired) and
fixing only the code will be enough.
  As it is with non-deterministic problem, it's not 100% guaranteed
that this fixes the problem. But, a few runs of parallel 'make
recheck' seems to prove it.


> Anyway, I will tweak a few words and install this soon. --thanks again, karl.


  No problem. And thanks :)

--
Regards - Bogdan ('bogdro') D.                 (GNU/Linux & FreeDOS)
X86 assembly (DOS, GNU/Linux):    http://bogdro.evai.pl/index-en.php
Soft(EN): http://bogdro.evai.pl/soft  http://bogdro.evai.pl/soft4asm
www.Xiph.org  www.TorProject.org  www.LibreOffice.org  www.GnuPG.org