Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

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

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.