• Bug#872381: dpkg-dev: optimize Makefile snippets for debian/rules (4/6)

    From Nicolas Boulenguez@1:229/2 to All on Mon Mar 4 16:50:01 2024
    [continued from previous message]

    diff --git a/scripts/mk/architecture.mk b/scripts/mk/architecture.mk
    index 2ffcee287..174c5b638 100644
    --- a/scripts/mk/architecture.mk
    +++ b/scripts/mk/architecture.mk
    @@ -5,12 +5,20 @@
    ifndef dpkg_architecture.mk_included
    dpkg_architecture.mk_included :=

    -dpkg_lazy_eval ?= $$(or $$(value DPKG_CACHE_$(1)),$$(eval DPKG_CACHE_$(1) := $$(shell $(2)))$$(value DPKG_CACHE_$(1)))
    -
    -dpkg_architecture_setvar = export $(1) ?= $(call dpkg_lazy_eval,$(1),dpkg-architecture -q$(1))
    -
    +dpkg-architecture_vars := \
    $(foreach machine,BUILD HOST TARGET,\
    $(foreach var,ARCH ARCH_ABI ARCH_LIBC ARCH_OS ARCH_CPU ARCH_BITS ARCH_ENDIAN GNU_CPU GNU_SYSTEM GNU_TYPE MULTIARCH,\
    - $(eval $(call dpkg_architecture_setvar,DEB_$(machine)_$(var)))))
    + DEB_$(machine)_$(var)))
    +
    +# Spare a subprocess in the frequent case where dpkg-buildpackage
    +# has already exported all variables.
    +ifneq (,$(filter undefined,$(foreach v,$(dpkg-architecture_vars),$(origin $(v)))))
    +
    + # ?= preserves overriddes from debian/rules or its command line.
    + $(foreach v,$(subst =,?=,$(shell dpkg-architecture)),$(eval $(v)))
    +
    +en