diff --git a/.appveyor.yml b/.appveyor.yml index 2731ccb..7dc4799 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -5,6 +5,7 @@ image: branches: only: - master + - develop - /^v\d.*$/ - /^deploy-test(-.*)?$/ diff --git a/.builds/common.yml b/.builds/common.yml index 4681f14..0bce7cb 100644 --- a/.builds/common.yml +++ b/.builds/common.yml @@ -16,8 +16,9 @@ packages: - qt5-qtmultimedia-dev - ffmpeg-dev - sdl2-dev - - docker + - podman - fuse + - udev - argp-standalone artifacts: @@ -25,10 +26,17 @@ artifacts: - Chiaki.AppImage tasks: - - start_docker: | - sudo service docker start - sudo chmod +s /usr/bin/docker # Yes, I know what I am doing - sudo service fuse start # Fuse for AppImages + - setup_podman: | + sudo rc-service udev start + sudo rc-service cgroups start + sudo rc-service fuse start # Fuse for AppImages + echo build:100000:65536 | sudo tee /etc/subuid + echo build:100000:65536 | sudo tee /etc/subgid + # https://www.kernel.org/doc/Documentation/networking/tuntap.txt + # for slirp4netns + sudo mkdir -p /dev/net + sudo mknod /dev/net/tun c 10 200 + sudo chmod 0666 /dev/net/tun - local_build_and_test: | cd chiaki cmake -Bbuild -GNinja -DCHIAKI_ENABLE_CLI=ON -DCHIAKI_ENABLE_GUI=ON -DCHIAKI_CLI_ARGP_STANDALONE=ON @@ -36,12 +44,12 @@ tasks: build/test/chiaki-unit - appimage: | cd chiaki - scripts/run-docker-build-appimage.sh + scripts/run-podman-build-appimage.sh cp appimage/Chiaki.AppImage ../Chiaki.AppImage - switch: | cd chiaki - scripts/switch/run-docker-build-chiaki.sh + scripts/switch/run-podman-build-chiaki.sh cp build_switch/switch/chiaki.nro ../chiaki.nro - bullseye: | cd chiaki - scripts/run-docker-build-bullseye.sh + scripts/run-podman-build-bullseye.sh diff --git a/.builds/freebsd.yml b/.builds/freebsd.yml index a105aec..c62a695 100644 --- a/.builds/freebsd.yml +++ b/.builds/freebsd.yml @@ -7,7 +7,7 @@ sources: packages: - cmake - protobuf - - py38-protobuf + - py39-protobuf - opus - qt5-core - qt5-qmake diff --git a/scripts/appveyor-win.sh b/scripts/appveyor-win.sh index 1361114..3951d84 100755 --- a/scripts/appveyor-win.sh +++ b/scripts/appveyor-win.sh @@ -26,7 +26,7 @@ ninja || exit 1 ninja install || exit 1 cd ../.. || exit 1 -wget https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1n.zip && 7z x openssl-1.1.1n.zip || exit 1 +wget https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1q.zip && 7z x openssl-1.1.1q.zip || exit 1 wget https://www.libsdl.org/release/SDL2-devel-2.0.10-VC.zip && 7z x SDL2-devel-2.0.10-VC.zip || exit 1 export SDL_ROOT="$APPVEYOR_BUILD_FOLDER/SDL2-2.0.10" || exit 1 @@ -41,7 +41,7 @@ cd .. || exit 1 export PATH="$PWD/protoc/bin:$PATH" || exit 1 PYTHON="C:/Python37/python.exe" -"$PYTHON" -m pip install protobuf || exit 1 +"$PYTHON" -m pip install protobuf==3.19.5 || exit 1 QT_PATH="C:/Qt/5.15/msvc2019_64" diff --git a/scripts/build-appimage.sh b/scripts/build-appimage.sh index dd01ef4..83903fd 100755 --- a/scripts/build-appimage.sh +++ b/scripts/build-appimage.sh @@ -2,9 +2,12 @@ set -xe +# sometimes there are errors in linuxdeploy in docker/podman when the appdir is on a mount +appdir=${1:-`pwd`/appimage/appdir} + mkdir appimage -pip3 install --user protobuf +pip3 install --user protobuf==3.19.5 # need support for python 3.6 for running on bionic scripts/fetch-protoc.sh appimage export PATH="`pwd`/appimage/protoc/bin:$PATH" scripts/build-ffmpeg.sh appimage @@ -24,10 +27,14 @@ cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ .. cd .. + +# purge leftover proto/nanopb_pb2.py which may have been created with another protobuf version +rm -fv third-party/nanopb/generator/proto/nanopb_pb2.py + ninja -C build_appimage build_appimage/test/chiaki-unit -DESTDIR=`pwd`/appimage/appdir ninja -C build_appimage install +DESTDIR="${appdir}" ninja -C build_appimage install cd appimage curl -L -O https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage @@ -41,5 +48,5 @@ set -e export LD_LIBRARY_PATH="`pwd`/sdl2-prefix/lib:$LD_LIBRARY_PATH" export EXTRA_QT_PLUGINS=opengl -./linuxdeploy-x86_64.AppImage --appdir=appdir -e appdir/usr/bin/chiaki -d appdir/usr/share/applications/chiaki.desktop --plugin qt --output appimage +./linuxdeploy-x86_64.AppImage --appdir="${appdir}" -e "${appdir}/usr/bin/chiaki" -d "${appdir}/usr/share/applications/chiaki.desktop" --plugin qt --output appimage mv Chiaki-*-x86_64.AppImage Chiaki.AppImage diff --git a/scripts/build-common.sh b/scripts/build-common.sh index 0eb87b9..dd4be2c 100755 --- a/scripts/build-common.sh +++ b/scripts/build-common.sh @@ -1,5 +1,8 @@ #!/bin/bash +# purge leftover proto/nanopb_pb2.py which may have been created with another protobuf version +rm -fv third-party/nanopb/generator/proto/nanopb_pb2.py + mkdir build && cd build || exit 1 cmake \ -DCMAKE_BUILD_TYPE=Release \ diff --git a/scripts/run-docker-build-appimage.sh b/scripts/run-podman-build-appimage.sh similarity index 58% rename from scripts/run-docker-build-appimage.sh rename to scripts/run-podman-build-appimage.sh index b8625c8..5dea4b4 100755 --- a/scripts/run-docker-build-appimage.sh +++ b/scripts/run-podman-build-appimage.sh @@ -3,13 +3,13 @@ set -xe cd "`dirname $(readlink -f ${0})`" -docker build -t chiaki-bionic . -f Dockerfile.bionic +podman build -t chiaki-bionic . -f Dockerfile.bionic cd .. -docker run --rm \ +podman run --rm \ -v "`pwd`:/build/chiaki" \ -w "/build/chiaki" \ --device /dev/fuse \ --cap-add SYS_ADMIN \ -t chiaki-bionic \ - /bin/bash -c "scripts/build-appimage.sh" + /bin/bash -c "scripts/build-appimage.sh /build/appdir" diff --git a/scripts/run-docker-build-bullseye.sh b/scripts/run-podman-build-bullseye.sh similarity index 61% rename from scripts/run-docker-build-bullseye.sh rename to scripts/run-podman-build-bullseye.sh index fd19bb1..ad5c6d1 100755 --- a/scripts/run-docker-build-bullseye.sh +++ b/scripts/run-podman-build-bullseye.sh @@ -3,10 +3,11 @@ set -xe cd "`dirname $(readlink -f ${0})`" -docker build -t chiaki-bullseye . -f Dockerfile.bullseye +podman build -t chiaki-bullseye . -f Dockerfile.bullseye cd .. -docker run --rm -v "`pwd`:/build" chiaki-bullseye /bin/bash -c " +podman run --rm -v "`pwd`:/build" chiaki-bullseye /bin/bash -c " cd /build && + rm -fv third-party/nanopb/generator/proto/nanopb_pb2.py && mkdir build_bullseye && cmake -Bbuild_bullseye -GNinja -DCHIAKI_ENABLE_SETSU=ON -DCHIAKI_USE_SYSTEM_JERASURE=ON -DCHIAKI_USE_SYSTEM_NANOPB=ON && ninja -C build_bullseye && diff --git a/scripts/switch/build.sh b/scripts/switch/build.sh index f04f4b2..37b825d 100755 --- a/scripts/switch/build.sh +++ b/scripts/switch/build.sh @@ -16,6 +16,9 @@ build_chiaki (){ pushd "${BASEDIR}" #rm -rf ./build + # purge leftover proto/nanopb_pb2.py which may have been created with another protobuf version + rm -fv third-party/nanopb/generator/proto/nanopb_pb2.py + cmake -B "${build}" \ -GNinja \ -DCMAKE_TOOLCHAIN_FILE=${toolchain} \ diff --git a/scripts/switch/push-docker-build-chiaki.sh b/scripts/switch/push-podman-build-chiaki.sh similarity index 100% rename from scripts/switch/push-docker-build-chiaki.sh rename to scripts/switch/push-podman-build-chiaki.sh diff --git a/scripts/switch/run-docker-build-chiaki.sh b/scripts/switch/run-podman-build-chiaki.sh similarity index 93% rename from scripts/switch/run-docker-build-chiaki.sh rename to scripts/switch/run-podman-build-chiaki.sh index c52933b..520188b 100755 --- a/scripts/switch/run-docker-build-chiaki.sh +++ b/scripts/switch/run-podman-build-chiaki.sh @@ -2,7 +2,7 @@ cd "`dirname $(readlink -f ${0})`/../.." -docker run \ +podman run \ -v "`pwd`:/build/chiaki" \ -w "/build/chiaki" \ -t \ diff --git a/switch/README.md b/switch/README.md index f5fbe68..2307fa4 100644 --- a/switch/README.md +++ b/switch/README.md @@ -7,7 +7,7 @@ but the easiest way is to use the following container. Build Project ------------- ``` -bash scripts/switch/run-docker-build-chiaki.sh +bash scripts/switch/run-podman-build-chiaki.sh ``` tools @@ -15,7 +15,7 @@ tools Push to homebrew Netloader ``` # where X.X.X.X is the IP of your switch -bash scripts/switch/push-docker-build-chiaki.sh -a 192.168.0.200 +bash scripts/switch/push-podman-build-chiaki.sh -a 192.168.0.200 ``` Troubleshoot diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt index b1f0b46..f6ebc40 100644 --- a/third-party/CMakeLists.txt +++ b/third-party/CMakeLists.txt @@ -4,11 +4,13 @@ if(NOT CHIAKI_USE_SYSTEM_NANOPB) # nanopb ################## + add_definitions(-DPB_C99_STATIC_ASSERT) # Fix PB_STATIC_ASSERT on msvc without using C11 for now add_subdirectory(nanopb EXCLUDE_FROM_ALL) set(NANOPB_GENERATOR_PY "${CMAKE_CURRENT_SOURCE_DIR}/nanopb/generator/nanopb_generator.py" PARENT_SCOPE) add_library(nanopb INTERFACE) target_link_libraries(nanopb INTERFACE protobuf-nanopb-static) target_include_directories(nanopb INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/nanopb") + target_compile_definitions(nanopb INTERFACE -DPB_C99_STATIC_ASSERT) # see above add_library(Nanopb::nanopb ALIAS nanopb) endif() diff --git a/third-party/nanopb b/third-party/nanopb index ab19ecb..afc499f 160000 --- a/third-party/nanopb +++ b/third-party/nanopb @@ -1 +1 @@ -Subproject commit ab19ecbe1b9f377ab4ee8e762bfe16c39068ad68 +Subproject commit afc499f9a410fc9bbf6c9c48cdd8d8b199d49eb4