[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gettext-0.14.2 fails on parallel build
From: |
Alexandre Duret-Lutz |
Subject: |
Re: gettext-0.14.2 fails on parallel build |
Date: |
Wed, 16 Mar 2005 16:56:28 +0100 |
On Wed, Mar 16, 2005 at 03:08:06PM +0100, Bruno Haible wrote:
> Alexandre Duret-Lutz wrote:
> > Thanks, I'm installing the following fix on HEAD and branch-1-9.
> > ...
> > -## Recover from the removal of $@
> > - @if test ! -f $@; then \
> > +## Recover from the removal of address@hidden
> > +##
> > +## Make sure not to call `make elc-stamp' if emacs is not available,
> > +## because as all *.elc files appear as missing, a parallel make would
> > +## attempt to build elc-stamp several times.
> > + @if test "$(EMACS)" != no && test ! -f $@; then \
>
> IMO this does not fix the bug. It only makes it less likely to appear.
>
> What happened was: In the rules
>
> elc-stamp: $(LISP)
> @rm -f elc-temp && touch elc-temp
> ...
> @mv -f elc-temp $@
>
> 3 independent 'make' processes started working on this rule.
It seems you are trying to allow this, but that is precisely the bug I
wanted to fix. The other points are consequences. Only one instance
of any rule in a Makefile should run at the same time.
> Process 1 created elc-temp.
> Process 2 re-created elc-temp.
> Then process 1 and process 2 performed the "..." task.
> Process 1 moved elc-temp to elc-stemp.
> Process 2 attempted to do so as well, but elc-temp was already gone.
>
> For this to happen, the contents of the "..." task is irrelevant.
Well, if you want to allow parallel executions of "...", its contents
really matter since all instance are likely to use the same ressources
(e.g. compiling the same files... eww).
But really we do not want this: there is no reason to build the same
target more than once.
> Adding "test "$(EMACS)" != no" doesn't change the problem.
It gets rid of these 3 independent 'make' processes. (Those
are not started when emacs exists, because when emacs exists
the *.elc files have already been built and the `test ! -f $@'
above fails.)
Here is another angle to the problem that might help: this whole issue
would not exist if the `$(am__ELCFILES): elc-stamp' rule did not have
any command.
- Re: gettext-0.14.2 fails on parallel build, Greg Schafer, 2005/03/14
- Re: gettext-0.14.2 fails on parallel build, Alexandre Duret-Lutz, 2005/03/14
- Re: gettext-0.14.2 fails on parallel build, Greg Schafer, 2005/03/14
- Re: gettext-0.14.2 fails on parallel build,
Alexandre Duret-Lutz <=
- Re: gettext-0.14.2 fails on parallel build, Bruno Haible, 2005/03/17
- Re: gettext-0.14.2 fails on parallel build, Alexandre Duret-Lutz, 2005/03/17
- Re: gettext-0.14.2 fails on parallel build, Bruno Haible, 2005/03/17
- Re: gettext-0.14.2 fails on parallel build, Alexandre Duret-Lutz, 2005/03/17
- Re: gettext-0.14.2 fails on parallel build, Bruno Haible, 2005/03/17
- Re: gettext-0.14.2 fails on parallel build, Alexandre Duret-Lutz, 2005/03/17
- Re: gettext-0.14.2 fails on parallel build, Alexandre Duret-Lutz, 2005/03/22
- Re: gettext-0.14.2 fails on parallel build, Bruno Haible, 2005/03/22