On Sat, Mar 01, 2025 at 10:51:44AM +0000, Gavin Smith wrote:
> I came across a section in the Automake manual describing problems with
> Makefile rules with multiple outputs.
> 
> https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html
> 
> We have such rules in several places for building texi2any.  For example,
> in tta/C/Makefile.am:
> 
> $(srcdir)/main/command_data.c $(srcdir)/main/command_ids.h 
> $(srcdir)/main/global_multi_commands_case.c 
> $(srcdir)/main/global_unique_commands_case.c 
> $(srcdir)/main/global_commands_types.h: ../data/command_data.txt 
> main/command_data.awk
>       $(GAWK) -v srcdir=$(srcdir)/main -f $(srcdir)/main/command_data.awk \
>            $(srcdir)/../data/command_data.txt
> 
> The problem is supposed to be with parallel builds, in that the rule could
> run multiple times at the same time.

> ...

> The node in the Automake manual does not offer a clear solution that
> is correct.  It shows various solutions, some much more complicated than
> others.  It's not clear that these solutions actually work and some of them
> seem like ideas or proposals rather a recommended solution ("One could
> imagine something along the following lines.").
> 
> Have we had this problem?  Could we get away with just ignoring it as
> the proposed solutions are all atrociously complicated?  Maybe it is harmless
> to have multiple processes writing to the generated files at the same
> time?

I implemented one of the solutions from the automake manual (using a
separate stamp file, but not accounting for signals or multiple produced
files being deleted without the stamp file being also deleted).
 

Reply via email to