gnuboot/resources/packages/release/test

208 lines
5.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Copyright (C) 2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
. resources/scripts/misc/sysexits.sh
progname="resources/packages/tests/test-release"
rev="$(git --no-pager describe --tags HEAD)"
usage()
{
progname="$1"
printf "Usage: %s [options]\n\n" "${progname}"
printf "Available options:\n"
printf "\t-h, --help\n"
printf "\t\tDisplay this help and exit.\n"
}
test_file()
{
path="$1"
test -f "${path}" ; ret=$?
if [ ${ret} -eq 0 ] ; then
echo "[ OK ] ${path}"
else
echo "[ !! ] ${path} is missing"
exit ${ret}
fi
}
test_qemu_rom_archive()
{
target="qemu-pc_2mb"
dir="release"
keyboard_layouts=" \
colemak \
deqwertz \
esqwerty \
frazerty \
frdvbepo \
itqwerty \
svenska \
trqwerty \
ukdvorak \
ukqwerty \
usdvorak \
usqwerty \
"
archive_files=""
for kb in ${keyboard_layouts} ; do
cbfb="libgfxinit_corebootfb"
txtmode="libgfxinit_txtmode"
archive_files="${archive_files} \
${target}/grub_${target}_${cbfb}_${kb}.rom \
${target}/grub_${target}_${txtmode}_${kb}.rom \
${target}/seabios_grubfirst_${target}_${cbfb}_${kb}.rom \
${target}/seabios_grubfirst_${target}_${txtmode}_${kb}.rom \
${target}/seabios_withgrub_${target}_${cbfb}_${kb}.rom \
${target}/seabios_withgrub_${target}_${txtmode}_${kb}.rom \
"
done
archive_files="${archive_files} qemu-pc_2mb/version"
archive_files="${archive_files} qemu-pc_2mb/versiondate"
archive_files="${archive_files} qemu-pc_2mb/projectname"
archive="${dir}"/roms/gnuboot-"${rev}"_"${target}".tar.xz
for path in $(tar tf "${archive}" | grep -v '/$') ; do
found=0
for archive_file in ${archive_files} ; do
if [ "${path}" = "${archive_file}" ] ; then
found=1
fi
done
if [ $found -eq 0 ] ; then
echo "[ !! ] $path"
fi
done
}
test_release_dir()
{
dir="release"
targets="\
d510mo \
d510mo_16mb \
d945gclf \
d945gclf_16mb \
g43t-am3 \
g43t-am3_16mb \
ga-g41m-es2l \
kcma-d8-rdimm_16mb \
kcma-d8-rdimm_2mb \
kcma-d8-udimm_16mb \
kcma-d8-udimm_2mb \
kfsn4-dre_1mb \
kfsn4-dre_2mb \
kgpe-d16-rdimm_16mb \
kgpe-d16-rdimm_2mb \
kgpe-d16-udimm_16mb \
kgpe-d16-udimm_2mb \
macbook11 \
macbook11_16mb \
macbook21 \
macbook21_16mb \
qemu-pc_2mb \
r400_16mb \
r400_4mb \
r400_8mb \
r500_4mb \
t400_16mb \
t400_4mb \
t400_8mb \
t500_16mb \
t500_4mb \
t500_8mb \
t60_16mb_intelgpu \
t60_intelgpu \
w500_16mb \
w500_4mb \
w500_8mb \
x200_16mb \
x200_4mb \
x200_8mb \
x301_16mb \
x301_4mb \
x301_8mb \
x60 \
x60_16mb \
"
release_files=""
for target in ${targets} ; do
archive_path="${dir}"/roms/gnuboot-"${rev}"_"${target}".tar.xz
release_files="${release_files}"" ""${archive_path}"
done
release_files="${release_files}"" ""${dir}"/gnuboot-"${rev}"_src.tar.xz
release_files="${release_files}"" ""${dir}"/gnuboot-source-"${rev}".bundle
release_files="${release_files}"" ""${dir}"/untitled-"${rev}".bundle
release_files="${release_files}"" ""${dir}"/gnuboot-website-"${rev}".tar.gz
for path in ${release_files} ; do
test_file "${path}"
done
while IFS= read -r -d '' path ; do
found=0
for release_file in ${release_files} ; do
if [ "${path}" = "${release_file}" ] ; then
found=1
fi
done
if [ $found -eq 0 ] ; then
echo "[ !! ] $path"
fi
done < <(find "${dir}" -type f -print0)
}
test_qemu_rom_image()
{
guix time-machine --commit=v1.4.0 -- \
build -f resources/guix/test-qemu-image.scm
}
test_release()
{
test_release_dir
test_qemu_rom_archive
test_qemu_rom_image
}
if [ $# -eq 1 ] && { [ "$1" = "-h" ] || [ "$1" == "--help" ] ;} ; then
usage "${progname}"
exit 0
elif [ $# -eq 0 ] ; then
test_release
else
usage "${progname}"
exit ${EX_USAGE}
fi