214 lines
5.6 KiB
Bash
Executable File
214 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
|