2
1
Fork 0
mirror of https://git.savannah.gnu.org/git/gnuboot.git synced 2025-01-06 16:27:40 +01:00
gnuboot/resources/packages/release/test
Denis 'GNUtoo' Carikli 23118cc799
packages: release: test: really fail when files are missing from ${release_files}.
We have a test for catching a situation where new files are added in
releases without adding them as well in the ${release_files} variable
to test for their existance.

But this test only warn of the issue instead of failing. And since
people might not inspect all the log details in depth, it's better to
fail instead.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:35:57 +02:00

213 lines
5.6 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
topdir="$(realpath "$(dirname "$(dirname "$(dirname "$(dirname "$0")")")")")"
progname="resources/packages/tests/test-release"
rev="$("${topdir}"/resources/git/git 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
release_files="${release_files}"" ""${dir}"/i945-thinkpads-install/i945-thinkpads-install-utilities-deb-pack.deb
release_files="${release_files}"" ""${dir}"/i945-thinkpads-install/packages_src.tar
release_files="${release_files}"" ""${dir}"/i945-thinkpads-install/gnuboot_src.tar
release_files="${release_files}"" ""${dir}"/i945-thinkpads-install/i945-thinkpads-install-utilities-tarball-pack.tar.gz
for path in ${release_files} ; do
test_file "${path}"
done
missing_in_release_files=0
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 missing in \${release_files}"
missing_in_release_files=$(expr $missing_in_release_files + 1)
fi
done < <(find "${dir}" -type f -print0)
if [ ${missing_in_release_files} -gt 0 ] ; then
exit 1
fi
}
test_release()
{
test_release_dir
test_qemu_rom_archive
}
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