For my use case, when I started experimenting and learning on ports, I kept new
variables close to their target and use them as quick toggle flags.

I had to move those back on top where their should be placed. This is how I went
to this idea to ease my job making my ports consistent by following a common
logic, common pattern.

It helped me, but I agree this is more cosmetic than anything else. I will keep
it for a while and see.

Anyway, thanks for your work, its a verry neat ports tree.

On 21/05/2024 22:24, Stuart Henderson wrote:
> I think this is going too far
> 
> -- 
>   Sent from a phone, apologies for poor formatting.
> 
> 
> On 21 May 2024 21:19:08 Fabien ROMANO <fabienrom...@gmail.com> wrote:
> 
>> I would like to bring more consistencies in ports' Makefile by following
>> Makefile.template.
>>
>> /usr/ports/infrastructure/bin/portcheck -A
>>> scanning ports under the /usr/ports
>>> ...
>>> archivers/ancient/Makefile : CONFIGURE_STYLE should be before
>>> AUTOCONF_VERSION and after BUILD_DEPENDS
>>> archivers/arc/Makefile : WANTLIB should be before SITES and after 
>>> PERMIT_PACKAGE
>>> archivers/bzip2/Makefile : SHARED_LIBS should be before CATEGORIES and after
>>> DISTNAME
>>> archivers/bzip2/Makefile : TEST_FLAGS should be before DEBUG_PACKAGES and
>>> after MAKE_FLAGS
>>> archivers/cabextract/Makefile : SEPARATE_BUILD should be before
>>> CONFIGURE_STYLE and after LIB_DEPENDS
>>> archivers/freeze/Makefile : PERMIT_PACKAGE should be before SITES and after
>>> CATEGORIES
>>> archivers/freeze/Makefile : PERMIT_DISTFILES should be before SITES and 
>>> after
>>> CATEGORIES
>>> archivers/freeze/Makefile : WANTLIB should be before SITES and after 
>>> CATEGORIES
>>> archivers/freeze/Makefile : MAKE_FLAGS should be before CONFIGURE_STYLE and
>>> after WANTLIB
>>> ...
>>
>> First time on ksh and I have limited knowledge on awk/sed.
>> It's a poc at this stage, at least I would like to rewrite makefile_template
>> definition.
>>
>> Any opinion on the feature or other checks which would be of interest ?
>>
>>
>> Index: portcheck
>> ===================================================================
>> RCS file: /cvs/ports/infrastructure/bin/portcheck,v
>> diff -u -p -r1.146 portcheck
>> --- portcheck 12 Oct 2023 05:41:27 -0000 1.146
>> +++ portcheck 21 May 2024 18:14:08 -0000
>> @@ -320,6 +320,29 @@ EOF
>>  )
>>  
>>  ############################################################
>> +# List of variables from Makefile.template
>> +#
>> +
>> +rootdir=$portsdir
>> +makefile_template=
>> +while [[ ! -e $rootdir/infrastructure/templates/Makefile.template ]]; do
>> + rootdir="${rootdir%/*}"
>> + if [[ -z $rootdir ]]; then
>> + break
>> + fi
>> +done
>> +if [[ ! -z $rootdir ]]; then
>> + set -A makefile_template $(
>> +    grep '=' $rootdir/infrastructure/templates/Makefile.template |
>> +    grep -v -e '# ' -e '==' |
>> +    awk '{ print $1; }' |
>> +    sed -e 's/#//' -e 's/=//' |
>> +    awk '!seen[$0]++')
>> +else
>> + echo "no Makefile.template found, skip Makefile variables order check"
>> +fi
>> +
>> +############################################################
>>  # Check and fail routines
>>  #
>>  
>> @@ -1808,6 +1831,7 @@ check_subst_vars() {
>>  #   * No user settings present.
>>  #   * SHARED_ONLY not defined
>>  #   * Check for usage of obsolete PERMIT_PACKAGE_* and PERMIT_DISTFILES_FTP
>> +#   * Check variables are set in the same order as Makefile.template
>>  check_makefile() {
>>   $debugging && echo "CALLED: check_makefile($*)" >&2
>>  
>> @@ -1818,7 +1842,8 @@ check_makefile() {
>>   grep -q '\$OpenBSD.*\$' "$F" &&
>>   err "$F should not contain \$OpenBSD\$ tag"
>>  
>> - local iflevel=0 l lnum=0 revs= t r mkvars= var duprevfound
>> + local iflevel=0 l lnum=0 t r var duprevfound p i j
>> + local revs= mkvars= tplvars= tplidx=
>>   # do not unset mkvars, having empty element(-s) is fine
>>   unset revs[0]
>>   local tab="$(print '\t')"
>> @@ -1891,6 +1916,43 @@ check_makefile() {
>>   mkvars[${#mkvars[@]}]=$var
>>   fi
>>   done <"$F"
>> +
>> + if [[ -z ${makefile_template[@]} ]]; then
>> + return
>> + fi
>> +
>> + for v in "${mkvars[@]}"; do
>> + for t in `jot $((${#makefile_template[@]}-1))`; do
>> + if [[ $v == ${makefile_template[$t]} ]]; then
>> + tplvars[${#tplvars[@]}]=$v
>> + tplidx[${#tplidx[@]}]=$t
>> + fi
>> + done
>> + done
>> + if [[ -z ${tplvars[@]} ]]; then
>> + return
>> + fi
>> +
>> + p=0
>> + for i in `jot $((${#tplvars[@]}-1))`; do
>> + if [[ ${tplidx[$i]} -lt $p ]]; then
>> + if [[ ${tplidx[$i]} -lt ${tplidx[1]} ]]; then
>> + err "$F : ${tplvars[$i]} should be" \
>> +    "before ${tplvars[1]}"
>> + continue
>> + fi
>> + for j in `jot $((${#tplvars[@]}-1))`; do
>> + if [[ ${tplidx[$i]} -lt ${tplidx[$j]} ]]; then
>> + err "$F : ${tplvars[$i]} should be" \
>> +    "before ${tplvars[$j]} and" \
>> +    "after ${tplvars[$(($j-1))]}"
>> + break
>> + fi
>> + done
>> + else
>> + p=${tplidx[$i]}
>> + fi
>> + done
>>  }
>>  
>>  # Checks made:
> 

-- 
Fabien Romano

Reply via email to