This commit is contained in:
Dāvis Mošenkovs 2024-08-10 00:04:09 +02:00 committed by GitHub
commit 9b43d25b51
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 133 additions and 0 deletions

View file

@ -12,9 +12,14 @@ RUN apt-get update -qq \
# x86_64 / generic packages
bash \
build-essential \
clang-format \
clang-format-14 \
cmake \
git \
libsdl2-dev \
libpng-dev \
make \
ninja-build \
nodejs \
python3 \
python3-pip \
@ -54,6 +59,9 @@ RUN npm i lv_font_conv@1.5.2 -g
# build.sh knows how to compile
COPY build.sh /opt/
# test.sh to easily run some tests
COPY test.sh /opt/
# Lets get each in a separate docker layer for better downloads
# GCC
RUN bash -c "source /opt/build.sh; GetGcc;"

125
docker/test.sh Executable file
View file

@ -0,0 +1,125 @@
#!/bin/bash
(return 0 2>/dev/null) && SOURCED="true" || SOURCED="false"
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
set -e
# Default locations if the var isn't already set
export SOURCES_DIR="${SOURCES_DIR:=/sources}"
main() {
local target="$1"
case "$1" in
"build-simulator")
cd $SOURCES_DIR
BuildSimulator $2 $3
BUILD_RESULT=$?
;;
"test-format")
cd $SOURCES_DIR
TestFormat $2
BUILD_RESULT=$?
;;
*)
echo "Usage: $0 build-simulator [repo branch]"
echo "Usage: $0 test-format [commit]"
;;
esac
return $BUILD_RESULT
}
BuildSimulator() {
if [ "$1" != "" ] && [ -e "$SOURCES_DIR/InfiniSim" ]
then
echo -e "\033[31mRepo specified and InfiniSim subfolder exists.\033[0m"
return 1
elif [ "$1" != "" ] && [ "$2" == "" ]
then
echo -e "\033[31mRepo specified, branch not specified.\033[0m"
return 1
elif [ "$2" != "" ]
then
GetSimulator $1 $2
elif [ ! -d "$SOURCES_DIR/InfiniSim" ]
then
GetSimulator https://github.com/InfiniTimeOrg/InfiniSim.git main
else
echo -e "\033[33mUsing InfiniSim from InfiniSim subfolder.\033[0m"
fi
cmake -G Ninja -S InfiniSim -B build_lv_sim -DInfiniTime_DIR="${PWD}"
BUILD_RESULT=$?
[ "$BUILD_RESULT" == "0" ] || return $BUILD_RESULT
cmake --build build_lv_sim --clean-first
BUILD_RESULT=$?
[ "$BUILD_RESULT" == "0" ] && echo -e "\033[32mSIMULATOR BUILD SUCCEEDED! \033[0m"
cd $SOURCES_DIR
return $BUILD_RESULT
}
GetSimulator() {
[ ! -e "$SOURCES_DIR/InfiniSim" ] || return 1
trap "rm $SOURCES_DIR/InfiniSim" EXIT
ln -s /tmp/InfiniSim $SOURCES_DIR/InfiniSim
echo -e "\033[33mDownloading InfiniSim Git repo from: $1 $2 \033[0m"
git -C /tmp clone $1 /tmp/InfiniSim --depth 1 --branch $2
git -C /tmp/InfiniSim submodule update --init lv_drivers
}
TestFormat() {
CMPBASE=$1
if [ "$CMPBASE" == "" ]
then
if [ "$(git diff --name-only upstream/main...HEAD)" != "" ]
then
CMPBASE=upstream/main
elif [ "$(git diff --name-only origin/main...HEAD)" != "" ]
then
CMPBASE=origin/main
else
CMPBASE=main
fi
fi
echo -e "\033[33mComparing against: $CMPBASE \033[0m"
CHANGED_FILES=$(git diff --name-only $CMPBASE...HEAD)
CHANGED=0
for file in $CHANGED_FILES
do
[ -e "$file" ] || continue
case "$file" in
src/libs/*|src/FreeRTOS/*) continue ;;
*.cpp|*.h)
echo Checking "$file"
PATCH="$(basename "$file").patch"
if [ "`git clang-format-14 -q --style file --diff "$CMPBASE" "$file" | wc -c`" != "0" ]
then
printf "\033[94m--------------------------------------------------\033[0m\n"
printf "\033[31mError:\033[0m Formatting error in %s\n" "$file"
CHANGED=1
git clang-format-14 --style file --diff "$CMPBASE" "$file"
printf "\033[94m--------------------------------------------------\033[0m\n"
fi
esac
done
if [ $CHANGED = 1 ]
then
return 1
else
printf "\033[32mNO FORMAT ERRORS DETECTED! \033[0m\n"
return 0
fi
}
if [ $SOURCED = "false" ]; then
# It is important to return exit code of main
# To be future-proof, this is handled explicitely
main "$@"
BUILD_RESULT=$?
exit $BUILD_RESULT
else
echo "Sourced!"
fi