build/roms: report status when building images

export CBMK_VERSION_TYPE=x
x can be: stable, unstable

in target.cfg files, specify:
status=x
x can be: stable, unstable, broken, untested
if unset, cbmk defaults to "unknown"

if CBMK_VERSION_TYPE is set, no confirmation is asked
if the given target matches what's set (but what's set
in that environmental variable can only be stable or
unstable)

if CBMK_RELEASE="y", no confirmation is asked, unless
the target is something other than stable/unstable

"unstable" means it works, but has a few non-breaking
bugs, e.g. broken s3 on dell e6400

whereas, if raminit regularly fails or it is so absolutely
unreliable as to be unusable, then the board should be
declared "broken"

untested means: it has not been tested

With this change, it should now be easier to track whether
a given board is tested, in preparation for releases. When
working on trees/boards, status can be set for targets.

Also: in the board directory, you can add a "warn.txt" file
which will display a message. For example, if a board has a
particular quirk to watch out for, write that there. The message
will be printed during the build process, to stdout.

If status is anything *other* than stable, or it is unstable
but CBMK_VERSION_TYPE is not set to "unstable", and not building
a release, a confirmation is passed.

If the board is not specified as stable or unstable, during
a release build, the build is skipped and the ROM is not
provided in that release; this is in *addition* to
release="n" or release="y" that can be set in target.cfg,
which will skip the release build for that target if "n"

Signed-off-by: Leah Rowe <info@minifree.org>
audit2-merge1
Leah Rowe 2024-04-26 19:41:00 +01:00 committed by Leah Rowe
parent b8db9ed698
commit b56f79578a
52 changed files with 122 additions and 7 deletions

View File

@ -4,3 +4,4 @@ payload_grub="n"
payload_grub_withseabios="n"
payload_seabios="y"
payload_memtest="y"
status="untested"

View File

@ -3,3 +3,4 @@ xarch="i386-elf"
payload_seabios="y"
payload_seabios_withgrub="y"
payload_memtest="y"
status="untested"

View File

@ -4,3 +4,4 @@ payload_grub="n"
payload_grub_withseabios="n"
payload_seabios="y"
payload_memtest="n"
status="untested"

View File

@ -4,3 +4,4 @@ payload_grub="n"
payload_grub_withseabios="n"
payload_seabios="y"
payload_memtest="n"
status="untested"

View File

@ -7,3 +7,4 @@ payload_memtest="y"
payload_seabios_withgrub="y"
payload_seabios_grubonly="y"
grub_scan_disk="ahci"
status="unstable" # broken s3

View File

@ -0,0 +1 @@
broken s3 resume/suspend, no battery indicator/status

View File

@ -3,3 +3,4 @@ xarch="i386-elf"
payload_seabios="y"
payload_memtest="y"
grub_timeout=10
status="untested"

View File

@ -3,3 +3,4 @@ xarch="i386-elf"
payload_seabios="y"
payload_memtest="y"
grub_timeout=10
status="untested"

View File

@ -4,3 +4,4 @@ payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ata"
grub_timeout=10
status="untested"

View File

@ -1,3 +1,4 @@
tree="default"
xarch="aarch64-elf arm-eabi"
payload_uboot="y"
status="untested"

View File

@ -1,3 +1,4 @@
tree="default"
xarch="aarch64-elf arm-eabi"
payload_uboot="y"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
xlang="c"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
xlang="c"
status="untested"

View File

@ -6,3 +6,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
xlang="c"
status="untested"

View File

@ -6,3 +6,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
xlang="c"
status="untested"

View File

@ -4,3 +4,4 @@ payload_seabios="y"
payload_memtest="y"
xlang="c"
grub_timeout=10
status="untested"

View File

@ -5,3 +5,4 @@ payload_seabios_withgrub="y"
payload_memtest="y"
xlang="c"
grub_timeout=10
status="untested"

View File

@ -5,3 +5,4 @@ payload_seabios_withgrub="y"
payload_memtest="y"
xlang="c"
grub_timeout=10
status="untested"

View File

@ -5,3 +5,4 @@ payload_seabios_withgrub="y"
payload_memtest="y"
xlang="c"
grub_timeout=10
status="untested"

View File

@ -6,3 +6,4 @@ payload_seabios_withgrub="y"
payload_memtest="y"
xlang="c"
grub_timeout=10
status="untested"

View File

@ -6,3 +6,4 @@ payload_seabios_withgrub="y"
payload_memtest="y"
xlang="c"
grub_timeout=10
status="untested"

View File

@ -4,3 +4,4 @@ payload_grub="y"
payload_grub_withseabios="y"
payload_seabios="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -4,3 +4,4 @@ payload_grub="y"
payload_grub_withseabios="y"
payload_seabios="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -1,3 +1,4 @@
tree="default"
xarch="aarch64-elf arm-eabi"
payload_uboot="y"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="both"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
grub_scan_disk="ahci"
grub_background="background1024x768.png"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
grub_scan_disk="ahci"
grub_background="background1024x768.png"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
payload_memtest="y"
grub_scan_disk="ahci"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
grub_scan_disk="ahci"
grub_background="background1024x768.png"
status="untested"

View File

@ -5,3 +5,4 @@ payload_grub_withseabios="y"
payload_seabios="y"
grub_scan_disk="ahci"
grub_background="background1024x768.png"
status="untested"

View File

@ -5,7 +5,7 @@ export LC_COLLATE=C
export LC_ALL=C
version=""; versiondate=""; projectname=""; _nogit=""
err="err_"; tmpdir=""
err="err_"; tmpdir=""; release_type=""
# if "y": a coreboot target won't be built if target.cfg says release="n"
# (this is used to exclude certain build targets from releases)
@ -15,6 +15,17 @@ set | grep CBMK_RELEASE 1>/dev/null 2>/dev/null || cbmk_release="n" || :
[ "$cbmk_release" = "n" ] || [ "$cbmk_release" = "y" ] || cbmk_release="n"
export CBMK_RELEASE="$cbmk_release"
# valid values:
# empty / not set
# value: stable
# value: unstable
# e.g. export CBMK_VERSION_TYPE=stable
set | grep CBMK_VERSION_TYPE 1>/dev/null 2>/dev/null && \
release_type="$CBMK_VERSION_TYPE"
[ -z "$release_type" ] || [ "$release_type" = "stable" ] || \
[ "$release_type" = "unstable" ] || release_type=""
export CBMK_VERSION_TYPE="$release_type"
tmpdir_was_set="y"
set | grep TMPDIR 1>/dev/null 2>/dev/null || tmpdir_was_set="n"
if [ "${tmpdir_was_set}" = "y" ]; then

View File

@ -21,9 +21,10 @@ cfgsdir="config/coreboot"
pv="payload_grub payload_grub_withseabios payload_seabios payload_memtest t"
pv="${pv} payload_seabios_withgrub payload_seabios_grubonly payload_uboot memtest_bin"
v="romdir cbrom initmode displaymode cbcfg targetdir tree keymaps release"
v="${v} grub_timeout ubdir board grub_scan_disk uboot_config"
v="${v} grub_timeout ubdir board grub_scan_disk uboot_config status"
eval "$(setvars "n" ${pv})"
eval "$(setvars "" ${v} boards _displaymode _payload _keyboard all targets)"
eval "$(setvars "" ${v} boards _displaymode _payload _keyboard all targets \
skipped)"
main()
{
@ -55,20 +56,31 @@ main()
eval "$(setvars "n" ${pv}) $(setvars "" ${v})"
grub_background="background1280x800.png"
board="${x}"
configure_target
[ "$board" = "$tree" ] && \
continue
handle_status
# exclude certain targets from the release
if [ "$release" = "n" ] && [ "$cbmk_release" = "y" ]; then
printf "Skipping target: %s\n" "$x"
continue
fi
skip_board && \
printf "Skip target %s(%s)\n" "$board" "$status" && \
skipped="* $board($status)\n$skipped" && continue
build_payloads
build_target_mainboard
[ -d "bin/${board}" ] || continue
targets="* bin/${board}\n${targets}"
done
if [ -n "$skipped" ]; then
printf "\nThese targets were skipped:\n"
eval "printf \"${skipped}\""
printf "^^ These targets were skipped.\n\n"
fi
[ -z "${targets}" ] && $err "No ROM images were compiled"
printf "\nROM images available in these directories:\n"
eval "printf \"${targets}\""
@ -125,6 +137,48 @@ configure_target()
eval "payload_${_payload}=y"
}
handle_status()
{
[ "$status" = "stable" ] || [ "$status" = "unstable" ] || \
[ "$status" = "broken" ] || [ "$status" = "untested" ] || \
status="unknown"
printf "Handling target: %s (status=%s)\n" "$board" "$status"
[ "$status" = "broken" ] && release="n"
[ "$status" = "unknown" ] && release="n"
[ "$status" = "untested" ] && release="n"
[ "$status" != "stable" ] && [ "$status" != "$release_type" ] && \
printf "WARNING: %s not marked stable (status=%s):\n\n" \
"$board" "$status"; return 0
}
skip_board()
{
[ "$release" = "n" ] && [ "$cbmk_release" = "y" ] && \
return 0
[ -n "$release_type" ] && [ "$status" = "$release_type" ] && \
return 1
if [ "$cbmk_release" != "y" ] && [ "$status" != "stable" ] && \
[ "$status" != "$release_type" ]; then
if [ -f "$targetdir/warn.txt" ]; then
printf "Regarding board '%s' (status '%s'):\n" \
"$board" "$status"
cat -u "$targetdir/warn.txt" || \
$err "!cat $targetdir/warn.txt"
fi
while true; do
printf "Board %s has status '%s'. Skip? [y/n]" \
"$board" "$status"
read -r skip
[ "$skip" = "y" ] && return 0
[ "$skip" = "n" ] && return 1; continue
done
fi; return 1
}
build_payloads()
{
romdir="bin/${board}"