[DTrace-devel] [PATCH v3 4/9] build: avoid needless re-executions
Kris Van Hees
kvanhees at kvh-deb-bpf.us.oracle.com
Tue Jan 30 16:54:21 UTC 2024
On Fri, Jan 26, 2024 at 01:58:44PM +0000, Nick Alcock wrote:
> The USER_UID and DUMPCAP_GROUP variables are recursively assigned, but
> contain shell execution. It's not terribly expensive execution, but these
> variables are substituted into every compile line, so they're executed
> dozens of times, even though their values will never change.
>
> Move them into immediate assignment (which makes DUMPCAP_GROUP a bit more
> complex to allow it to be overridden).
>
> This speeds up near-do-nothing runs like 'make help' so that they take only
> about 1/10s now, which is acceptably fast.
>
> Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
> GNUmakefile | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/GNUmakefile b/GNUmakefile
> index 723c81033992..9a2078593cce 100644
> --- a/GNUmakefile
> +++ b/GNUmakefile
> @@ -43,7 +43,7 @@ BPFCFLAGS ?= -O2 -Wall -Wno-unknown-pragmas
> export BPFLD = bpf-unknown-none-ld
>
> # The first non-system uid on this system.
> -USER_UID=$(shell grep '^UID_MIN' /etc/login.defs | awk '{print $$2;}')
> +USER_UID := $(shell grep '^UID_MIN' /etc/login.defs | awk '{print $$2;}')
>
> # A uid suitable for unprivileged execution.
> UNPRIV_UID ?= -3
> @@ -51,7 +51,10 @@ UNPRIV_UID ?= -3
> # The group one must run as to invoke dumpcap: by default the group of
> # the dumpcap binary. If dumpcap is owned by root, use the same gid as
> # the UNPRIV_UID unless otherwise overridden.
> -DUMPCAP_GROUP ?= $(filter-out root,$(shell stat -c %G /usr/sbin/dumpcap /usr/bin/dumpcap 2>/dev/null | head -1))
> +# (We avoid ?= here to avoid rerunning the stat over and over again.)
> +ifeq ($(origin DUMPCAP_GROUP), undefined)
> +DUMPCAP_GROUP := $(filter-out root,$(shell stat -c %G /usr/sbin/dumpcap /usr/bin/dumpcap 2>/dev/null | head -1))
> +endif
>
> # Unwritable but readable directory suitable for overriding as the $HOME of
> # unprivileged processes.
> --
> 2.43.0.272.gce700b77fd
>
>
More information about the DTrace-devel
mailing list