Date: Sun, 20 Jul 2008 12:49:30 +0200 From: Kris Kennaway <kris@FreeBSD.org> To: Matthew Seaman <m.seaman@infracaninophile.co.uk> Cc: ports@freebsd.org Subject: Re: porter's handbook documentation on avoiding != variable assignments Message-ID: <4883183A.7090100@FreeBSD.org> In-Reply-To: <4882FFB7.1090501@infracaninophile.co.uk> References: <484EAFAC.3020208@FreeBSD.org> <488232AE.4090701@FreeBSD.org> <4882FFB7.1090501@infracaninophile.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
Matthew Seaman wrote: > Kris Kennaway wrote: >> Can someone add to the PH a version of the advice below? It might >> need to be fleshed out a bit to provide more context. >> >> Kris >> >>> Variable assignments with != are bad! Try as hard as you can to >>> avoid using them -- especially in Mk/*! Every time something >>> processes your makefile it will spawn a command, even if it is not >>> relevant for the operation being performed. If you need to run shell >>> commands, try to isolate them within a makefile target. You can >>> avoid code duplication by assigning the *shell commands* (not their >>> output) to a variable and inserting it into your code block. >>> >>> e.g. instead of >>> >>> -- >>> VARIABLE!= do some shell stuff; do some other stuff >>> >>> target: >>> echo ${VARIABLE} >>> -- >>> >>> do this (or similar): >>> >>> -- >>> VARIABLE_CMDS= do some shell stuff; do some other stuff >>> >>> target: >>> echo $$(${VARIABLE_CMDS}) >>> -- >>> >>> This defers the command execution to the point where the target runs, >>> so in the case when the target is *not* run (e.g. during INDEX builds or >>> other recursive port traversals), then you avoid wasting one or more >>> process executions. > > Would it be acceptable to use something like: > > .if !defined(BUILDING_INDEX) > VARIABLE!= something or other > .endif > > or > .if !make(describe) > VARIABLE!= whatever > .endif No because that only avoids one particular case, not the default case :) Kris
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4883183A.7090100>