On 2024/07/29 11:00, Marc Espie wrote:
> Currently, there is nothing that prevents ONLY_FOR_ARCHS/NOT_FOR_ARCHS
> from holding garbage.
> 
> The following patch adds a check, and promptly fixes an issue, namely
> that ALL_ARCHES should also reference powerpc.
> 
> Index: arch-defines.mk
> ===================================================================
> RCS file: /build/data/openbsd/cvs/ports/infrastructure/mk/arch-defines.mk,v
> diff -u -p -r1.107 arch-defines.mk
> --- arch-defines.mk   25 Jun 2024 13:48:24 -0000      1.107
> +++ arch-defines.mk   26 Jul 2024 10:34:49 -0000
> @@ -12,7 +12,7 @@
>  ARCH ?!= uname -m
>  
>  ALL_ARCHS = aarch64 alpha amd64 arm arm64 armv7 hppa i386 landisk loongson \
> -     luna88k m88k macppc mips64 mips64el octeon powerpc64 riscv64 sgi \
> +     luna88k m88k macppc mips64 mips64el octeon powerpc powerpc64 riscv64 
> sgi \
>       sh sparc64
>  # normally only list MACHINE_ARCH (uname -p) names in these variables,
>  # but not all powerpc have apm(4), hence the use of macppc

obviously right - committed.

> Index: bsd.port.arch.mk
> ===================================================================
> RCS file: /build/data/openbsd/cvs/ports/infrastructure/mk/bsd.port.arch.mk,v
> diff -u -p -r1.14 bsd.port.arch.mk
> --- bsd.port.arch.mk  16 Apr 2020 19:33:29 -0000      1.14
> +++ bsd.port.arch.mk  26 Jul 2024 10:35:24 -0000

I think this check makes sense, what does anyone else think?

> @@ -53,6 +53,11 @@ FLAVOR := ${FLAVOR:N$f}
>  # build the actual list of subpackages we want
>  BUILD_PACKAGES =
>  
> +# compute pattern for identifying bad variables
> +.for A in ${ALL_ARCHS}
> +_arch_check := ${_arch_check}:N${A}
> +.endfor
> +
>  .for _s in ${MULTI_PACKAGES}
>  
>  # ONLY_FOR_ARCHS/NOT_FOR_ARCHS are special:
> @@ -72,8 +77,13 @@ IGNORE${_s} += "Ignored as FLAVOR contai
>  .    endif
>  .  endfor
>  
> -# compute _ARCH_OK for ignore
>  .  if defined(ONLY_FOR_ARCHS${_s})
> +# validate against full architecture list
> +.    for _m in ${_arch_check}
> +.      if !empty(ONLY_FOR_ARCHS${_m})
> +ERRORS += "Fatal: unrecognized architecture ${ONLY_FOR_ARCHS${_m}} in 
> ONLY_FOR_ARCHS${_s}"
> +.      endif
> +.    endfor
>  .    for A B in ${MACHINE_ARCH} ${ARCH}
>  .      if empty(ONLY_FOR_ARCHS${_s}:M$A) && empty(ONLY_FOR_ARCHS${_s}:M$B)
>  .        if ${MACHINE_ARCH} == "${ARCH}"
> @@ -85,6 +95,12 @@ IGNORE${_s} += "is only for ${ONLY_FOR_A
>  .    endfor
>  .  endif
>  .  if defined(NOT_FOR_ARCHS${_s})
> +# validate against full architecture list
> +.    for _m in ${_arch_check}
> +.      if !empty(NOT_FOR_ARCHS${_m})
> +ERRORS += "Fatal: unrecognized architecture ${NOT_FOR_ARCHS${_m}} in 
> NOT_FOR_ARCHS${_s}"
> +.      endif
> +.    endfor
>  .    for A B in ${MACHINE_ARCH} ${ARCH}
>  .      if !empty(NOT_FOR_ARCHS${_s}:M$A) || !empty(NOT_FOR_ARCHS${_s}:M$B)
>  IGNORE${_s} += "is not for ${NOT_FOR_ARCHS${_s}}"
> 

Reply via email to