2023-11-07 03:50:03 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
#
|
|
|
|
# Various code quality tests to avoid regressions in code quality.
|
|
|
|
#
|
2024-09-06 20:15:32 +02:00
|
|
|
# Copyright (C) 2023,2024 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
2023-11-07 03:50:03 +01:00
|
|
|
#
|
|
|
|
# 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 <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
report()
|
|
|
|
{
|
|
|
|
ret=$?
|
|
|
|
message="$1"
|
|
|
|
|
|
|
|
if [ ${ret} -eq 0 ] ; then
|
|
|
|
echo "[ OK ] ${message}"
|
|
|
|
else
|
|
|
|
echo "[ !! ] ${message} failed"
|
|
|
|
exit ${ret}
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
run_shellcheck()
|
|
|
|
{
|
|
|
|
for path in "$@" ; do
|
2023-11-28 16:33:33 +01:00
|
|
|
shellcheck -x "${path}" ; report "${path}"
|
2023-11-07 03:50:03 +01:00
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
printf "+---------------------+\n"
|
|
|
|
printf "| Running lint tests: |\n"
|
|
|
|
printf "+---------------------+\n"
|
|
|
|
run_shellcheck \
|
2024-03-25 05:21:02 +01:00
|
|
|
autogen.sh \
|
2023-11-28 17:37:25 +01:00
|
|
|
build \
|
2023-11-28 17:37:25 +01:00
|
|
|
download \
|
2023-11-28 17:37:25 +01:00
|
|
|
modify \
|
2023-11-28 17:37:25 +01:00
|
|
|
update \
|
2023-12-07 13:57:34 +01:00
|
|
|
resources/packages/coreboot/distclean \
|
2023-11-28 16:33:33 +01:00
|
|
|
resources/packages/descriptors/distclean \
|
2024-09-06 20:15:32 +02:00
|
|
|
resources/packages/grub/distclean \
|
2023-08-24 00:26:18 +02:00
|
|
|
resources/packages/i945-thinkpads-install-utilities/clean \
|
|
|
|
resources/packages/i945-thinkpads-install-utilities/distclean \
|
|
|
|
resources/packages/i945-thinkpads-install-utilities/download \
|
|
|
|
resources/packages/i945-thinkpads-install-utilities/module \
|
2023-11-28 16:33:33 +01:00
|
|
|
resources/packages/ich9utils/distclean \
|
|
|
|
resources/packages/memtest86plus/distclean \
|
|
|
|
resources/packages/payloads/distclean \
|
|
|
|
resources/packages/rom_images/distclean \
|
|
|
|
resources/packages/roms/distclean \
|
2024-07-04 15:26:30 +02:00
|
|
|
resources/packages/roms/download \
|
|
|
|
resources/packages/roms/test \
|
2023-11-28 16:33:33 +01:00
|
|
|
resources/packages/seabios/distclean \
|
|
|
|
resources/packages/src/distclean \
|
|
|
|
resources/packages/u-boot-libre/distclean \
|
2023-12-07 13:58:57 +01:00
|
|
|
resources/packages/website/distclean \
|
2024-01-30 23:49:43 +01:00
|
|
|
resources/scripts/misc/guix.sh \
|
2023-11-28 16:33:33 +01:00
|
|
|
resources/scripts/tasks/distclean.sh \
|
Add checkpatch.scm script and require maintainers to run it.
The goal of this script is similar to Linux's checkpatch.pl: it is
meant to check patch before sending them.
Right now it only tests if a signed-off-by is missing, and if the
commit information (commit message, author, date, etc but not the
diff) is too big as a workaround to the bug #66268[1], but over time
more checks can be added.
The report of the bug #66268[1] mention that what tend to trigger the
issue is commits "with a large (4kB) commit message".
[1]https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66268
So we want to avoid such commits to avoid breaking "guix git
authenticate" in the future.
To do that, checkpatch.scm reports an error if the size of the patch
from the beginning of the patch file until the point where the diff
starts is less than 2500 Bytes.
A lower threshold has been chosen as the commit object size can be
bigger than the patch file without the diff, as there are at least
signatures inside the commit objects.
The last commit GNUtoo signed at the time of writing is the commit
83f955870a6d46a6aeb2d8fcc7279fc4b54a6806 ("website/docs/build: mark
the Trisquel bug as solved and clarify the Guix one") and this is done
with an RSA GPG key of 4096 bits and in this case the signature is
about 855 bytes. This was calculated with 'git cat-file -p 83f95587'.
As GNU Boot is looking for contributions, including contributions by
less technical users, we do not require its use by people sending
patches, however it is still a good idea to require its use by the GNU
Boot maintainers as we want to spot the most important issues that
cannot be fixed later on.
Thanks to neox for the research and the calculation on the git commit
signature size.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-11-26 19:37:24 +01:00
|
|
|
tests/checkpatch \
|
2023-11-28 16:33:33 +01:00
|
|
|
tests/distclean \
|
2023-12-25 20:44:13 +01:00
|
|
|
tests/lint \
|
2024-06-03 21:16:00 +02:00
|
|
|
website/build.sh \
|
|
|
|
website/check.sh
|
2023-11-07 03:50:03 +01:00
|
|
|
|
|
|
|
printf "+---------------------+\n"
|
|
|
|
printf "| Lint tests done |\n"
|
|
|
|
printf "+---------------------+\n"
|