[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 17/18] packages: images: tests: require essential cbfs files.
From: |
Denis 'GNUtoo' Carikli |
Subject: |
[PATCH v1 17/18] packages: images: tests: require essential cbfs files. |
Date: |
Fri, 29 Nov 2024 20:14:31 +0100 |
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
---
resources/packages/roms/release | 10 +++-
resources/packages/roms/test | 95 +++++++++++++++++++++++++++++++--
2 files changed, 101 insertions(+), 4 deletions(-)
diff --git a/resources/packages/roms/release b/resources/packages/roms/release
index 571eecbd..0a61c2fd 100755
--- a/resources/packages/roms/release
+++ b/resources/packages/roms/release
@@ -50,6 +50,9 @@ fi
printf "Building ROM image archives for version %s\n" "${version}"
(
+ # For consistency reasons, the same logic than in
+ # resources/packages/roms/test is being used. If you improve the
+ # code below, don't forget to also improve the test code.
cd bin/
for target in *; do
if [ ! -d "${target}/" ]; then
@@ -62,9 +65,14 @@ printf "Building ROM image archives for version %s\n"
"${version}"
printf "%s\n" "${versiondate}" > "${target}/versiondate"
printf "%s\n" "${projectname}" > "${target}/projectname"
rm -f ../release/roms/"${projectname}"-"${version}"_"${target##*/}".tar
+
tar -cf \
../release/roms/"${projectname}"-"${version}"_"${target##*/}".tar \
- "${target}/"
+ "${target}"/*.rom \
+ "${target}"/version \
+ "${target}"/versiondate \
+ "${target}"/projectname
+
xz -vv -9e -f \
../release/roms/"${projectname}"-"${version}"_"${target##*/}".tar
done
diff --git a/resources/packages/roms/test b/resources/packages/roms/test
index 75cab7e9..8af8d2a4 100755
--- a/resources/packages/roms/test
+++ b/resources/packages/roms/test
@@ -61,7 +61,7 @@ run_qemu_x86_64()
${extra_qemu_args}
}
-test_gnuboot_with_lvm()
+check_gnuboot_with_lvm()
{
source config.sh
@@ -95,19 +95,108 @@ test_gnuboot_with_lvm()
fi
}
+check_cbfs_image_log()
+{
+ image_name="$1"
+ cbfs_image_log="$2"
+ func="check_cbfs_image_log"
+
+ # All the files below are required for booting.
+ required_files="
+ bootblock \
+ fallback/romstage \
+ fallback/ramstage \
+ fallback/payload"
+
+ # This is the DSDT ACPI table. It may or may not be required for
+ # booting but it's present in all the images, so it's good to
+ # check for it.
+ required_files="${required_files} fallback/dsdt.aml"
+
+ # We also make sure to keep the build configuration and Coreboot
+ # revision used as they can be useful to identify an image or to
+ # rebuild it.
+ required_files="${required_files} config revision"
+
+ # This is required on some computers to make the internal keyboard
+ # work with SeaBIOS: This settings configure how much time SeaBIOS
+ # should wait for the builtin (PS2) keyboard to properly
+ # initialize.
+ required_files="${required_files} etc/ps2-keyboard-spinup"
+
+ # All the supported computers use CMOS for configuration so we
+ # also need the layout to be there.
+ required_files="${required_files} cmos.layout"
+
+ # Currently 16 MiB MacBook images lack cmos.default (bug #66494:
+ # https://savannah.gnu.org/bugs/index.php?66494). However,
+ # accoding to neox who is working on a paper on the KGPE-D16 RAM
+ # initialization, wrong values of the hypertransport_speed_limit
+ # CMOS setting can prevent the boot. Since we don't know how the
+ # CMOS values can be interpretated if cmos.default is missing we
+ # should uncomment the next line when the bug #66494 is fixed.
+ # required_files="${required_files}
+
+ for file in ${required_files} ; do
+ if ! grep -q "^${file}" "${cbfs_image_log}" ; then
+ printf '[ FAIL ] %s: %s not found in %s.\n' \
+ "${func}" "${file}" "${image_name}"
+ exit 1
+ fi
+ done
+
+ printf '[ PASS ] %s: found all known required files inside %s.\n' \
+ "${func}" "${image_name}"
+}
+
+check_cbfs_images()
+{
+ current_dir="$(pwd)"
+
+ # cbfstool should have been already built if we have images to
+ # check.
+ cbfstool="$(realpath coreboot/default/util/cbfstool/cbfstool)"
+
+ # For consistency reasons, the same logic than in
+ # resources/packages/roms/release is being used. If you improve
+ # the code below, don't forget to also improve the release code.
+ cd bin/
+ for target in *; do
+ if [ ! -d "${target}/" ]; then
+ continue
+ fi
+
+ # The resulting log files don't go inside the release
+ # tarballs. See the code in resources/packages/roms/release
+ # for more details.
+ for image in "${target}"/*.rom ; do
+ "${cbfstool}" "${image}" print > "${image}".cbfs.log
+ check_cbfs_image_log \
+ "${image}" \
+ "${image}".cbfs.log
+ done
+ done
+
+ cd "${current_dir}"
+}
+
if [ $# -eq 1 ] && { [ "$1" = "-h" ] || [ "$1" == "--help" ] ;} ; then
usage "${progname}"
exit 0
elif [ $# -eq 0 ] ; then
+
+ # Test that we don't have missing known files inside CBFS.
+ check_cbfs_images
+
# This test is mainly meant to verify if the grub configuration
# can boot a Trisquel rootfs with LVM.
- test_gnuboot_with_lvm \
+ check_gnuboot_with_lvm \
"Test GRUB images and its grub.cfg with a Trisquel LVM install" \
"bin/qemu-pc_2mb/grub_qemu-pc_2mb_corebootfb_usqwerty.rom"
# This test is mainly meant to verify if the SeaBIOS payload is
# broken or not.
- test_gnuboot_with_lvm \
+ check_gnuboot_with_lvm \
"Test SeaBIOS images with a Trisquel (LVM) install" \
"bin/qemu-pc_2mb/seabios_qemu-pc_2mb_txtmode_usqwerty.rom"
else
--
2.46.0
- [PATCH v1 02/18] dependencies: pureos: Fix copyright header., (continued)
- [PATCH v1 02/18] dependencies: pureos: Fix copyright header., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 03/18] dependencies: trisquel: remove unused packagekit-tools., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 04/18] dependencies: pureos: remove unused packagekit., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 05/18] dependencies: trisquel: obtimize apt calls., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 08/18] resources: dependencies: unify PureOS and Trisquel., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 07/18] dependencies: trisquel: remove duplicated libusb-1.0-0-dev for flashrom., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 11/18] dependencies: pureos-trisquel: Add texlive for the website., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 13/18] packages: images: tests: add Trisquel test with SeaBIOS., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 18/18] website: status: mention reproducible builds status., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 17/18] packages: images: tests: require essential cbfs files.,
Denis 'GNUtoo' Carikli <=
- [PATCH v1 06/18] resources: dependencies: pureos: switch to install_packages., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 12/18] dependencies: pureos-trisquel: Add texlive-plain-generic for the website., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 10/18] dependencies: pureos-trisquel: Add texinfo for the website., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 09/18] dependencies: pureos-trisquel: Add graphicsmagick for the website., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 14/18] packages: images: tests: fix whitespace issue., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 15/18] packages: roms: release: unify whitespaces., Denis 'GNUtoo' Carikli, 2024/11/29
- [PATCH v1 16/18] packages: roms: release: fix line length., Denis 'GNUtoo' Carikli, 2024/11/29