Jump to content

[Armbian build PR] - Introduce the BOARD_MAINTAINER in board config


Recommended Posts

Posted

Description

Yes, we have documented the maintainers in armbian/documentation. But it seem like that some of them don't maintain anymore. Use a separated repos make us forget to update it. So let's document here.

What's more, defining this make us easier to update .github/CODEOWNERS

The way to find out the BOARD_MAINTAINER has documented in the commit messages.

The script to do this

#!/bin/bash

SRC="$(realpath "${BASH_SOURCE%/*}/../")"

readarray -t members < <(curl -L -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${TOKEN}" "https://api.github.com/orgs/armbian/members?per_page=100" | jq -r .[].login)

doc="$(curl -L https://github.com/armbian/documentation/raw/master/docs/Release_Board-Maintainers.md)"

function set_maintainer() {
local board_config="$1"
local maintainers="$2"
if ! grep "BOARD_MAINTAINER" "${SRC}/config/boards/${board_config}" >/dev/null 2>&1; then
sed -i "s|\(.*\)\(BOARDFAMILY=.*\)|\1\2\n\1BOARD_MAINTAINER=\"${maintainers}\"|" "${SRC}/config/boards/${board_config}"
else
: # Have set
# Replace
# sed -i "s|BOARD_MAINTAINER=.*|BOARD_MAINTAINER=\"${maintainers}\"|" "${SRC}/config/boards/${board_config}"
fi
}

while read -r board_config; do
type="${board_config##*.}"
[[ "conf wip csc eos tvb" == *"${type}"* ]] || continue
BOARD="${board_config%.*}"
echo -e "\n${board_config}"

documented_maintainer=()
readarray -t documented_maintainer < <(echo "${doc}" | grep "| ${BOARD} *|" | cut -d'|' -f4 | sed 's/^ *\([^ ]*\) *$/\1/')
echo -e "\tDocumented: ${documented_maintainer[*]}"

if [[ ! -f ".gh/${board_config}" ]]; then
gh_commits="$(curl -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${TOKEN}" "https://api.github.com/repos/armbian/build/commits?per_page=100&path=config/boards/${board_config}")"
echo "${gh_commits}" >".gh/${board_config}"
else
gh_commits="$(cat ".gh/${board_config}")"
fi
authors="$(echo "${gh_commits}" | jq -r .[].author.login)"

creator="$(echo "${authors}" | tail -1)"
echo -e "\tCreator: ${creator}"

most_commit="$(echo "${authors}" | uniq -c | sort -nr | awk '($1 >= 3) {print $2}' | head -1)"
echo -e "\tMost commit: ${most_commit}"

other_commiters=()
readarray -t other_commiters < <(echo "${authors}" | grep -v "^${creator}$")

if [[ -n "${documented_maintainer}" ]]; then
for m in "${documented_maintainer[@]}"; do
if [[ "${members[*]}" != *"${m}"* ]]; then
echo -e "${board_config}: ${m} is not our member" >&2
fi
done

set_maintainer "${board_config}" "${documented_maintainer[*]}"
continue
fi

if [[ "${creator}" == "${most_commit}" ]]; then
if [[ "${members[*]}" != *"${creator}"* ]]; then
echo -e "${board_config}: ${creator} is not our member" >&2
fi

set_maintainer "${board_config}" "${creator}"
continue
fi

if [ -z "${other_commiters[*]}" ]; then
if [[ "${members[*]}" != *"${creator}"* ]]; then
echo -e "${board_config}: ${creator} is not our member" >&2
fi

set_maintainer "${board_config}" "${creator}"
fi

set_maintainer "${board_config}" ""
done < <(ls "${SRC}/config/boards/")

Raw output

aml-s9xx-box.tvb
Documented: 
Creator: SteeManMI
Most commit: 

bananapicm4io.conf
Documented: 
Creator: superna9999
Most commit: 

bananapi.conf
Documented: janprunk
Creator: zador-blood-stained
Most commit: igorpecovnik

bananapim1plus.csc
Documented: 
Creator: zador-blood-stained
Most commit: igorpecovnik

bananapim2.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

bananapim2plus.conf
Documented: igorpecovnik
Creator: zador-blood-stained
Most commit: igorpecovnik

bananapim2pro.conf
Documented: igorpecovnik
Creator: rpardini
Most commit: 

bananapim2s.wip
Documented: 
Creator: igorpecovnik
Most commit: 

bananapim2ultra.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

bananapim2zero.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

bananapim3.conf
Documented: AaronNGray
Creator: igorpecovnik
Most commit: 

bananapim5.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: igorpecovnik

bananapim64.conf
Documented: devdotnetorg
Creator: igorpecovnik
Most commit: igorpecovnik

bananapipro.conf
Documented: teknoid
Creator: zador-blood-stained
Most commit: igorpecovnik

bananapir2.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

bananapir2pro.conf
Documented: 
Creator: 150balbes
Most commit: 

beaglev.csc
Documented: 
Creator: Rafal-Hacus
Most commit: 

beelinkx2.tvb
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

clearfogbase.conf
Documented: heisath
Creator: zador-blood-stained
Most commit: igorpecovnik

clearfogpro.conf
Documented: heisath
Creator: zador-blood-stained
Most commit: igorpecovnik

clockworkpi-a06.csc
Documented: littlecxm
Creator: Rafal-Hacus
Most commit: 

cubieboard2.csc
Documented: 
Creator: igorpecovnik
Most commit: 

cubieboard4.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

cubieboard.conf
Documented: 
Creator: zador-blood-stained
Most commit: igorpecovnik

cubietruck.csc
Documented: 
Creator: EvilOlaf
Most commit: 

cubietruckplus.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

cubox-i.csc
Documented: 
Creator: igorpecovnik
Most commit: 

espressobin.conf
Documented: ManoftheSea
Creator: igorpecovnik
Most commit: igorpecovnik

fe-som-rk3399.eos
Documented: 
Creator: igorpecovnik
Most commit: 

firefly-rk3399.conf
Documented: 150balbes
Creator: igorpecovnik
Most commit: 

helios4.conf
Documented: heisath
Creator: igorpecovnik
Most commit: igorpecovnik

helios64.csc
Documented: 
Creator: EvilOlaf
Most commit: 

hinlink-h88k.csc
Documented: 
Creator: amazingfate
Most commit: 

imx7sabre.eos
Documented: 
Creator: igorpecovnik
Most commit: 

jethubj100.conf
Documented: jethome-ru
Creator: adeepn
Most commit: 

jethubj80.conf
Documented: jethome-ru
Creator: adeepn
Most commit: 

jetson-nano.conf
Documented: 150balbes
Creator: igorpecovnik
Most commit: 

khadas-edge2.wip
Documented: 
Creator: 150balbes
Most commit: 

khadas-edge.csc
Documented: igorpecovnik
Creator: Rafal-Hacus
Most commit: 

khadas-vim1.conf
Documented: 
Creator: lanefu
Most commit: 

khadas-vim2.conf
Documented: 
Creator: lanefu
Most commit: 

khadas-vim3.conf
Documented: NicoD-SBC
Creator: igorpecovnik
Most commit: 

khadas-vim3l.conf
Documented: rpardini
Creator: lanefu
Most commit: 

lafrite.conf
Documented: Tonymac32
Creator: igorpecovnik
Most commit: igorpecovnik

lamobo-r1.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

lepotato.conf
Documented: Tonymac32
Creator: igorpecovnik
Most commit: igorpecovnik

lime2.csc
Documented: igorpecovnik
Creator: EvilOlaf
Most commit: 

lime-a10.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

lime-a33.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

lime-a64.csc
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: 

lime.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

macchiatobin-doubleshot.csc
Documented: 
Creator: jwzawadzki
Most commit: igorpecovnik

mangopi-mq.wip
Documented: 
Creator: rpardini
Most commit: 

mekotronics-r58-minipc.wip
Documented: 
Creator: rpardini
Most commit: 

mekotronics-r58x-4g.wip
Documented: 
Creator: rpardini
Most commit: 

mekotronics-r58x.wip
Documented: 
Creator: rpardini
Most commit: 

melea1000.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

micro.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

microzed.eos
Documented: 
Creator: igorpecovnik
Most commit: 

miqi.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

mk808c.csc
Documented: 
Creator: zador-blood-stained
Most commit: igorpecovnik

nanopct3.eos
Documented: 
Creator: igorpecovnik
Most commit: 

nanopct3plus.eos
Documented: 
Creator: igorpecovnik
Most commit: 

nanopct4.conf
Documented: 150balbes
Creator: igorpecovnik
Most commit: igorpecovnik

nanopia64.csc
Documented: 
Creator: guidol70
Most commit: 

nanopiair.csc
Documented: 
Creator: EvilOlaf
Most commit: 

nanopiduo2.csc
Documented: 
Creator: EvilOlaf
Most commit: 

nanopiduo.conf
Documented: sgjava
Creator: null
Most commit: igorpecovnik

nanopifire3.eos
Documented: 
Creator: igorpecovnik
Most commit: 

nanopik1plus.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: igorpecovnik

nanopik2-s905.csc
Documented: 
Creator: igorpecovnik
Most commit: 

nanopim1.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

nanopim1plus2.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

nanopim1plus.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

nanopim3.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

nanopim4.conf
Documented: piter75
Creator: igorpecovnik
Most commit: igorpecovnik

nanopim4v2.csc
Documented: piter75
Creator: Rafal-Hacus
Most commit: 

nanopineo2black.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: 

nanopineo2.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: igorpecovnik

nanopineo3.conf
Documented: lpirl
Creator: igorpecovnik
Most commit: 

nanopineo4.csc
Documented: 
Creator: igorpecovnik
Most commit: 

nanopineo.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: igorpecovnik

nanopineocore2.csc
Documented: 
Creator: EvilOlaf
Most commit: 

nanopineoplus2.conf
Documented: teknoid
Creator: igorpecovnik
Most commit: igorpecovnik

nanopi-r1.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: igorpecovnik

nanopi-r1s-h5.conf
Documented: 
Creator: aiamadeus
Most commit: 

nanopi-r2c.conf
Documented: igorpecovnik
Creator: rickliu2000
Most commit: 

nanopi-r2s.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: 

nanopi-r4s.conf
Documented: littlecxm piter75
Creator: EvilOlaf
Most commit: 

nanopi-r6s.wip
Documented: 
Creator: efectn
Most commit: 

nezha.wip
Documented: 
Creator: rpardini
Most commit: 

odroidc1.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

odroidc2.conf
Documented: NicoD-SBC
Creator: zador-blood-stained
Most commit: igorpecovnik

odroidc4.conf
Documented: Technicavolous
Creator: superna9999
Most commit: igorpecovnik

odroidhc4.conf
Documented: rpardini Technicavolous
Creator: igorpecovnik
Most commit: 

odroidm1.wip
Documented: 
Creator: igorpecovnik
Most commit: 

odroidn2.conf
Documented: rpardini
Creator: igorpecovnik
Most commit: igorpecovnik

odroidxu4.conf
Documented: igorpecovnik joekhoobyar
Creator: zador-blood-stained
Most commit: igorpecovnik

olimex-som204-a20.eos
Documented: 
Creator: igorpecovnik
Most commit: 

olimex-som-a20.eos
Documented: 
Creator: igorpecovnik
Most commit: 

olimex-teres-a64.conf
Documented: 
Creator: Kreyren
Most commit: 

olinux-som-a13.csc
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

onecloud.csc
Documented: 
Creator: hzyitc
Most commit: hzyitc

orangepi2.csc
Documented: 
Creator: EvilOlaf
Most commit: 

orangepi3.csc
Documented: igorpecovnik
Creator: EvilOlaf
Most commit: 

orangepi3-lts.csc
Documented: afaulkner420
Creator: Rafal-Hacus
Most commit: 

orangepi4.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: igorpecovnik

orangepi4-lts.conf
Documented: jock
Creator: paolosabatino
Most commit: 

orangepi5.conf
Documented: 
Creator: efectn
Most commit: 

orangepi.eos
Documented: 
Creator: zador-blood-stained
Most commit: igorpecovnik

orangepilite2.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: 

orangepilite.csc
Documented: igorpecovnik
Creator: EvilOlaf
Most commit: 

orangepimini.eos
Documented: 
Creator: zador-blood-stained
Most commit: igorpecovnik

orangepione.csc
Documented: igorpecovnik
Creator: EvilOlaf
Most commit: 

orangepioneplus.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: 

orangepipc2.csc
Documented: igorpecovnik
Creator: EvilOlaf
Most commit: 

orangepipc.conf
Documented: lbmendes
Creator: zador-blood-stained
Most commit: igorpecovnik

orangepipcplus.conf
Documented: igorpecovnik
Creator: null
Most commit: igorpecovnik

orangepiplus2e.conf
Documented: igorpecovnik
Creator: null
Most commit: igorpecovnik

orangepiplus.csc
Documented: 
Creator: EvilOlaf
Most commit: 

orangepiprime.csc
Documented: igorpecovnik
Creator: Rafal-Hacus
Most commit: 

orangepi-r1.conf
Documented: schwar3kat
Creator: null
Most commit: igorpecovnik

orangepi-r1plus.conf
Documented: 
Creator: aiamadeus
Most commit: 

orangepi-r1plus-lts.conf
Documented: schwar3kat
Creator: schwar3kat
Most commit: 

orangepi-rk3399.csc
Documented: 
Creator: EvilOlaf
Most commit: 

orangepiwin.csc
Documented: 
Creator: igorpecovnik
Most commit: 

orangepizero2.conf
Documented: krachlatte qiurui
Creator: igorpecovnik
Most commit: 

orangepizero.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: igorpecovnik

orangepizeroplus2-h3.csc
Documented: agolubchyk
Creator: EvilOlaf
Most commit: 

orangepizeroplus2-h5.csc
Documented: 
Creator: EvilOlaf
Most commit: 

orangepizeroplus.conf
Documented: schwar3kat
Creator: igorpecovnik
Most commit: igorpecovnik

pcduino2.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

pcduino3.csc
Documented: 
Creator: null
Most commit: igorpecovnik

pcduino3nano.eos
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

pine64.conf
Documented: janprunk
Creator: zador-blood-stained
Most commit: igorpecovnik

pine64so.conf
Documented: 
Creator: zador-blood-stained
Most commit: igorpecovnik

pinebook-a64.csc
Documented: 
Creator: igorpecovnik
Most commit: 

pinebook-pro.conf
Documented: 
Creator: igorpecovnik
Most commit: 

pinecube.csc
Documented: 
Creator: Icenowy
Most commit: 

pineh64-b.conf
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

pineh64.csc
Documented: 
Creator: igorpecovnik
Most commit: 

qemu-uboot-arm64.wip
Documented: 
Creator: rpardini
Most commit: 

qemu-uboot-x86.wip
Documented: 
Creator: rpardini
Most commit: 

quartz64a.wip
Documented: 
Creator: 150balbes
Most commit: 

quartz64b.wip
Documented: 
Creator: 150balbes
Most commit: 

radxa-e25.wip
Documented: 
Creator: amazingfate
Most commit: 

radxa-zero2.wip
Documented: monkaBlyat
Creator: igorpecovnik
Most commit: 

radxa-zero.conf
Documented: engineer-80
Creator: engineer-80
Most commit: 

recore.csc
Documented: 
Creator: null
Most commit: 

renegade.conf
Documented: Tonymac32
Creator: igorpecovnik
Most commit: igorpecovnik

rk322x-box.tvb
Documented: 
Creator: paolosabatino
Most commit: 

rk3318-box.tvb
Documented: 
Creator: paolosabatino
Most commit: 

rock-3a.conf
Documented: catalinii ZazaBr vamzii
Creator: igorpecovnik
Most commit: amazingfate

rock-5b.conf
Documented: 
Creator: igorpecovnik
Most commit: 

rock64.conf
Documented: clee
Creator: igorpecovnik
Most commit: igorpecovnik

rockpi-4a.conf
Documented: clee
Creator: igorpecovnik
Most commit: igorpecovnik

rockpi-4b.conf
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

rockpi-4bplus.csc
Documented: 
Creator: lanefu
Most commit: 

rockpi-4c.conf
Documented: clee
Creator: igorpecovnik
Most commit: 

rockpi-4cplus.csc
Documented: 
Creator: igorpecovnik
Most commit: 

rockpi-e.conf
Documented: 
Creator: igorpecovnik
Most commit: 

rockpi-n10.csc
Documented: 
Creator: psztoch
Most commit: 

rockpi-s.conf
Documented: brentr
Creator: igorpecovnik
Most commit: igorpecovnik

rockpro64.conf
Documented: joekhoobyar
Creator: igorpecovnik
Most commit: igorpecovnik

roc-rk3399-pc.csc
Documented: 
Creator: piter75
Most commit: piter75

rpi4b.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: 

star64.wip
Documented: 
Creator: rpardini
Most commit: 

station-m1.conf
Documented: 150balbes
Creator: EvilOlaf
Most commit: 150balbes

station-m2.conf
Documented: 150balbes
Creator: 150balbes
Most commit: 

station-m3.conf
Documented: 
Creator: 150balbes
Most commit: 

station-p1.conf
Documented: 150balbes
Creator: EvilOlaf
Most commit: 

station-p2.conf
Documented: 150balbes
Creator: 150balbes
Most commit: 

sunvell-r69.tvb
Documented: 
Creator: igorpecovnik
Most commit: 

tinkerboard-2.wip
Documented: 
Creator: Tonymac32
Most commit: 

tinkerboard.conf
Documented: Tonymac32 paolosabatino
Creator: igorpecovnik
Most commit: igorpecovnik

tritium-h3.conf
Documented: Tonymac32
Creator: igorpecovnik
Most commit: igorpecovnik

tritium-h5.conf
Documented: Tonymac32
Creator: igorpecovnik
Most commit: igorpecovnik

udoo.csc
Documented: 
Creator: EvilOlaf
Most commit: 

uefi-arm64.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: 

uefi-riscv64.conf
Documented: 
Creator: igorpecovnik
Most commit: 

uefi-x86.conf
Documented: igorpecovnik
Creator: igorpecovnik
Most commit: 

unleashed.wip
Documented: 
Creator: rpardini
Most commit: 

unmatched.wip
Documented: 
Creator: rpardini
Most commit: 

virtual-qemu.eos
Documented: 
Creator: rpardini
Most commit: 

visionfive2.wip
Documented: 
Creator: rpardini
Most commit: 

visionfive.wip
Documented: 
Creator: rpardini
Most commit: 

xt-q8l-v10.tvb
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

z28pro.tvb
Documented: 
Creator: igorpecovnik
Most commit: igorpecovnik

zeropi.csc
Documented: igorpecovnik
Creator: Rafal-Hacus
Most commit: 


Here is the list who documented in armbian/documentation but aren't our members. So he/she can't add to .github/CODEOWNERS due to he/she don't have the access to write to the repos.

bananapim3.conf: AaronNGray is not our member
bananapim64.conf: devdotnetorg is not our member
clearfogbase.conf: heisath is not our member
clearfogpro.conf: heisath is not our member
helios4.conf: heisath is not our member
jethubj100.conf: jethome-ru is not our member
jethubj80.conf: jethome-ru is not our member
khadas-vim3.conf: NicoD-SBC is not our member
nanopineo3.conf: lpirl is not our member
odroidc2.conf: NicoD-SBC is not our member
odroidc4.conf: Technicavolous is not our member
odroidhc4.conf: Technicavolous is not our member
orangepi3-lts.csc: afaulkner420 is not our member
orangepi4-lts.conf: jock is not our member
orangepipc.conf: lbmendes is not our member
orangepizero2.conf: krachlatte is not our member
orangepizeroplus2-h3.csc: agolubchyk is not our member
radxa-zero2.wip: monkaBlyat is not our member
radxa-zero.conf: engineer-80 is not our member
rock-3a.conf: ZazaBr is not our member
rock-3a.conf: vamzii is not our member
rock64.conf: clee is not our member
rockpi-4a.conf: clee is not our member
rockpi-4c.conf: clee is not our member

How Has This Been Tested?

Uncessary.

Checklist:

  • [ ] My code follows the style guidelines of this project
  • [X] I have performed a self-review of my own code
  • [ ] I have commented my code, particularly in hard-to-understand areas
  • [X] I have made corresponding changes to the documentation
  • [X] My changes generate no new warnings
  • [ ] Any dependent changes have been merged and published in downstream modules

View the full article

×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines