automake-ng
[Top][All Lists]
Advanced

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

Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests suppor


From: Stefano Lattarini
Subject: Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support
Date: Wed, 09 May 2012 13:11:54 +0200

Hi Akim, thanks for the speedy review.

On 05/09/2012 12:15 PM, Akim Demaille wrote:
> 
> Le 9 mai 2012 à 11:30, Stefano Lattarini a écrit :
> 
>> I will push in 72 hours if there is no review by then.
> 
> I browsed them all.  I'm happy that it will be possible to
> specify dependencies :)
> 
> It looks ok, and very cleanly done.
> 
> I have one worry though: what about runtime performances?  Sure,
> late binding provides more features, but it might be costly.  Do
> you have means to evaluate that we have no serious regressions?
>
Not really (even if I didn't notice any slowdown in during use of
the Automake testsuite); do you want me to run some measurements?

(And this makes me think: should we add a "performance" testsuite
in Automake, offering a quick and convenient way to measure how a
changeset impacts performances?  And if yes: would you have any
suggestion on how to set this up?)

But back to the point: notice that the pre-existing implementation of
the parallel testsuite harness already made quite an extensive use of
late bindings in the definition of $(TESTS) (to allow things like
overriding of TESTS and TEST_LOGS at make runtime), and this has never
had any negative impact on the performances.

> Also, I don't know if it's part of your specs for automake-ng,
> but, performance-wise *and* from the point of view of semantics,
> *and* of syntax, I am very fond of this new feature of GNU Make 3.82:
> 
> * New special target: .ONESHELL instructs make to invoke a single instance
>   of the shell and provide it with the entire recipe, regardless of how many
>   lines it contains.
>
Ugh, no please.  Some times it is very useful to split a recipe in distinct
shell invocations, and the '.ONESHELL' directive would prevent us from
doing so (as, AFAIK, it acts on a global level, not on a target-specific
level).

More importantly: I want Automake-NG to work with at least GNU make 3.81 as
well (and also GNU make 3.80, it that's not too difficult), so using a
feature introduced in 3.82 is a big no-no.

>   As a special feature to allow more straightforward
>   conversion of makefiles to use .ONESHELL, any recipe line control
>   characters ('@', '+', or '-') will be removed from the second and
>   subsequent recipe lines.  This happens _only_ if the SHELL value is deemed
>   to be a standard POSIX-style shell.  If not, then no interior line control
>   characters are removed (as they may be part of the scripting language used
>   with the alternate SHELL).
> 
> I would strongly suggest to use it, and to drop \ and ; as dead as can be
> (before my keys are completely worn out).
> 
> .ONESHELL:
> all:
>       @foo=bar
>       echo $$foo
>       if test $$foo = bar; then
>         echo pass
>       else
>         echo fail
>       fi
> 
> 
> $ gmake -C /tmp
> gmake : on entre dans le répertoire « /private/tmp »
> bar
> pass
> gmake: on quitte le répertoire « /private/tmp »
> 

Regards,
  Stefano



reply via email to

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