Actually, as far as bsd.port.mk, it doesn't need to move too much stuff around thanks to make's lazyness.
Note that having a list of defined MASTER_SITES variables simplifies the check. I've also added a check for the right MASTER_SITES to be defined, since currently we do not error out until actually using it, which means that fiddling around with MASTER_SITES before committing may often go unnoticed. (That final part is meant to go in sooner rather than later) Index: bsd.port.mk =================================================================== RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v retrieving revision 1.1592 diff -u -p -r1.1592 bsd.port.mk --- bsd.port.mk 13 Jun 2023 10:28:40 -0000 1.1592 +++ bsd.port.mk 8 Aug 2023 10:59:38 -0000 @@ -118,9 +118,8 @@ _ALL_VARIABLES_PER_ARCH = # consumers of (dump-vars) include sqlports generation and dpb # dpb doesn't need everything, those are speed optimizations .if ${DPB:L:Mfetch} || ${DPB:L:Mall} -_ALL_VARIABLES += DISTFILES PATCHFILES SUPDISTFILES DIST_SUBDIR MASTER_SITES \ - MASTER_SITES0 MASTER_SITES1 MASTER_SITES2 MASTER_SITES3 MASTER_SITES4 \ - MASTER_SITES5 MASTER_SITES6 MASTER_SITES7 MASTER_SITES8 MASTER_SITES9 \ +_ALL_VARIABLES += DISTFILES PATCHFILES SUPDISTFILES DIST_SUBDIR \ + ${_ALL_MASTER_SITES} \ CHECKSUM_FILE FETCH_MANUALLY MISSING_FILES PERMIT_DISTFILES .endif .if ${DPB:L:Mtest} || ${DPB:L:Mall} @@ -1280,19 +1280,15 @@ MASTER_SITES ?= # sites for distfiles, add them to MASTER_SITE_BACKUP _warn_checksum = : -.if !empty(MASTER_SITES:M*[^/]) -_warn_checksum += ;echo ">>> MASTER_SITES not ending in /: ${MASTER_SITES:M*[^/]}" -.endif -.for _I in 0 1 2 3 4 5 6 7 8 9 -. if defined(MASTER_SITES${_I}) -. if !empty(MASTER_SITES${_I}:M*[^/]) -_warn_checksum += ;echo ">>> MASTER_SITES${_I} not ending in /: ${MASTER_SITES${_I}:M*[^/]}" -. endif +_ALL_MASTER_SITES = ${.VARIABLES:MMASTER_SITES*:NMASTER_SITES_*} + +.for _S in ${_ALL_MASTER_SITES} +. if !empty(${_S}:M*[^/]) +_warn_checksum += ;echo ">>> ${_S} not ending in /: ${${_S}:M*[^/]}" . endif .endfor - EXTRACT_SUFX ?= .tar.gz .if !empty(GH_COMMIT) @@ -1322,6 +1318,9 @@ _FILES= . if !empty($v) . for e in ${$v} . for f m u in ${e:C/:[0-9]$//:C/^(.*)\{.*\}(.*)$/\1\2/} MASTER_SITES${e:M*\:[0-9]:C/^.*:([0-9])$/\1/} ${e:C/:[0-9]$//:C/^.*\{(.*)\}(.*)$/\1\2/} +. if !defined($m) +ERRORS += "Fatal: $m is not defined but referenced by $e in $v" +. endif . if empty(_FILES:M$f) _FILES += $f . if empty(DIST_SUBDIR)