chore: unify building system with Makefile (#398)

* reorder and extend platformio config

* update gitignore

* add processing extra_script

* add makefile

* update github workflow

* update docker build

* add release and debug targets

* define custom_build debug

* fix custom_build target

* update README
This commit is contained in:
David Girón
2024-06-09 04:31:05 +02:00
committed by GitHub
parent a79ce7883b
commit d8dd08edf7
12 changed files with 193 additions and 198 deletions

9
Docker/Dockerfile Normal file
View File

@@ -0,0 +1,9 @@
FROM eclipse-temurin:11-jdk-jammy AS builder
RUN set -ex && \
apt-get update && \
apt-get install -y git python3 pip make && \
pip install --upgrade platformio && \
pip install --upgrade esptool
CMD ["/bin/bash"]

View File

@@ -1,45 +0,0 @@
FROM eclipse-temurin:11-jdk-jammy AS builder
RUN set -ex && \
apt-get update && \
apt-get install -y git python3 pip && \
pip install --upgrade platformio && \
pip install --upgrade esptool
COPY icon /usr/src/nuki_hub/icon
COPY include /usr/src/nuki_hub/include
COPY lib /usr/src/nuki_hub/lib
COPY networkDevices /usr/src/nuki_hub/networkDevices
COPY partitions.csv /usr/src/nuki_hub
COPY platformio.ini /usr/src/nuki_hub
COPY index.html /usr/src/nuki_hub
COPY *.h /usr/src/nuki_hub/
COPY *.cpp /usr/src/nuki_hub/
RUN set -ex && \
cd /usr/src/nuki_hub && \
mkdir -p release/esp32 && \
mkdir -p release/esp32s3 && \
mkdir -p release/esp32c3 && \
mkdir -p release/esp32solo1 && \
pio run --environment esp32dev && \
esptool.py --chip esp32 merge_bin -o release/webflash_nuki_hub_esp32.bin --flash_mode dio --flash_freq keep --flash_size keep 0x1000 .pio/build/esp32dev/bootloader.bin 0x10000 .pio/build/esp32dev/firmware.bin 0x8000 .pio/build/esp32dev/partitions.bin && \
cp .pio/build/esp32dev/bootloader.bin release/esp32/bootloader.bin && \
cp .pio/build/esp32dev/firmware.bin release/esp32/nuki_hub_esp32.bin && \
cp .pio/build/esp32dev/partitions.bin release/esp32/nuki_hub.partitions.bin && \
pio run --environment esp32-s3 && \
esptool.py --chip esp32s3 merge_bin -o release/webflash_nuki_hub_esp32s3.bin --flash_mode dio --flash_freq keep --flash_size keep 0x0 .pio/build/esp32-s3/bootloader.bin 0x10000 .pio/build/esp32-s3/firmware.bin 0x8000 .pio/build/esp32-s3/partitions.bin && \
cp .pio/build/esp32-s3/bootloader.bin release/esp32s3/bootloader.bin && \
cp .pio/build/esp32-s3/firmware.bin release/esp32s3/nuki_hub_esp32s3.bin && \
cp .pio/build/esp32-s3/partitions.bin release/esp32s3/nuki_hub.partitions.bin && \
pio run --environment esp32-c3 && \
esptool.py --chip esp32c3 merge_bin -o release/webflash_nuki_hub_esp32c3.bin --flash_mode dio --flash_freq keep --flash_size keep 0x0 .pio/build/esp32-c3/bootloader.bin 0x10000 .pio/build/esp32-c3/firmware.bin 0x8000 .pio/build/esp32-c3/partitions.bin && \
cp .pio/build/esp32-c3/bootloader.bin release/esp32c3/bootloader.bin && \
cp .pio/build/esp32-c3/firmware.bin release/esp32c3/nuki_hub_esp32c3.bin && \
cp .pio/build/esp32-c3/partitions.bin release/esp32c3/nuki_hub.partitions.bin && \
pio run --environment esp32solo1 && \
cp .pio/build/esp32solo1/bootloader.bin release/esp32solo1/bootloader.bin && \
cp .pio/build/esp32solo1/firmware.bin release/esp32solo1/nuki_hub_esp32solo1.bin && \
cp .pio/build/esp32solo1/partitions.bin release/esp32solo1/nuki_hub.partitions.bin
CMD ["/bin/bash"]

View File

@@ -1,49 +0,0 @@
FROM eclipse-temurin:11-jdk-jammy AS builder
RUN set -ex && \
apt-get update && \
apt-get install -y git python3 pip && \
pip install --upgrade platformio && \
pip install --upgrade esptool
COPY icon /usr/src/nuki_hub/icon
COPY include /usr/src/nuki_hub/include
COPY lib /usr/src/nuki_hub/lib
COPY networkDevices /usr/src/nuki_hub/networkDevices
COPY partitions.csv /usr/src/nuki_hub
COPY platformio.ini /usr/src/nuki_hub
COPY index.html /usr/src/nuki_hub
COPY *.h /usr/src/nuki_hub/
COPY *.cpp /usr/src/nuki_hub/
RUN set -ex && \
cd /usr/src/nuki_hub && \
mkdir -p debug/esp32 && \
mkdir -p debug/esp32s3 && \
mkdir -p debug/esp32c3 && \
mkdir -p debug/esp32solo1 && \
pio run --environment esp32dev_dbg && \
esptool.py --chip esp32 merge_bin -o debug/webflash_nuki_hub_esp32.bin --flash_mode dio --flash_freq keep --flash_size keep 0x1000 .pio/build/esp32dev_dbg/bootloader.bin 0x10000 .pio/build/esp32dev_dbg/firmware.bin 0x8000 .pio/build/esp32dev_dbg/partitions.bin && \
cp .pio/build/esp32dev_dbg/bootloader.bin debug/esp32/bootloader.bin && \
cp .pio/build/esp32dev_dbg/firmware.bin debug/esp32/nuki_hub_esp32.bin && \
cp .pio/build/esp32dev_dbg/partitions.bin debug/esp32/nuki_hub.partitions.bin && \
cp .pio/build/esp32dev_dbg/firmware.elf debug/esp32/nuki_hub_esp32.elf && \
pio run --environment esp32-s3_dbg && \
esptool.py --chip esp32s3 merge_bin -o debug/webflash_nuki_hub_esp32s3.bin --flash_mode dio --flash_freq keep --flash_size keep 0x0 .pio/build/esp32-s3_dbg/bootloader.bin 0x10000 .pio/build/esp32-s3_dbg/firmware.bin 0x8000 .pio/build/esp32-s3_dbg/partitions.bin && \
cp .pio/build/esp32-s3_dbg/bootloader.bin debug/esp32s3/bootloader.bin && \
cp .pio/build/esp32-s3_dbg/firmware.bin debug/esp32s3/nuki_hub_esp32s3.bin && \
cp .pio/build/esp32-s3_dbg/partitions.bin debug/esp32s3/nuki_hub.partitions.bin && \
cp .pio/build/esp32-s3_dbg/firmware.elf debug/esp32s3/nuki_hub_esp32s3.elf && \
pio run --environment esp32-c3_dbg && \
esptool.py --chip esp32c3 merge_bin -o debug/webflash_nuki_hub_esp32c3.bin --flash_mode dio --flash_freq keep --flash_size keep 0x0 .pio/build/esp32-c3_dbg/bootloader.bin 0x10000 .pio/build/esp32-c3_dbg/firmware.bin 0x8000 .pio/build/esp32-c3_dbg/partitions.bin && \
cp .pio/build/esp32-c3_dbg/bootloader.bin debug/esp32c3/bootloader.bin && \
cp .pio/build/esp32-c3_dbg/firmware.bin debug/esp32c3/nuki_hub_esp32c3.bin && \
cp .pio/build/esp32-c3_dbg/partitions.bin debug/esp32c3/nuki_hub.partitions.bin && \
cp .pio/build/esp32-c3_dbg/firmware.elf debug/esp32c3/nuki_hub_esp32c3.elf && \
pio run --environment esp32solo1_dbg && \
cp .pio/build/esp32solo1_dbg/bootloader.bin debug/esp32solo1/bootloader.bin && \
cp .pio/build/esp32solo1_dbg/firmware.bin debug/esp32solo1/nuki_hub_esp32solo1.bin && \
cp .pio/build/esp32solo1_dbg/partitions.bin debug/esp32solo1/nuki_hub.partitions.bin && \
cp .pio/build/esp32solo1_dbg/firmware.elf debug/esp32solo1/nuki_hub_esp32solo1.elf
CMD ["/bin/bash"]

View File

@@ -9,7 +9,7 @@ cd nuki_hub/Docker
./build_with_docker_pio.sh
```
once the script is complete you will find the nuki_hub binaries in the `nuki_hub/build_pio` folder.
once the script is complete you will find the nuki_hub binaries in the `nuki_hub/release` folder.
## Build with CMake (will only build for the ESP32)
```console

View File

@@ -1,6 +1,4 @@
set -ex
docker build -f ./Dockerfile_pio -t nuki_hub_pio ..
docker create --name nuki_hub_pio nuki_hub_pio
rm -rf ../build_pio
docker cp nuki_hub_pio:/usr/src/nuki_hub/release/ ../build_pio
docker rm -f nuki_hub_pio
IMAGE_NAME=nuki_hub_build
docker build -f ./Dockerfile -t ${IMAGE_NAME} ..
docker run --rm -it -v $PWD/..:/src -w /src ${IMAGE_NAME} make release

8
Docker/build_with_docker_pio_debug.sh Normal file → Executable file
View File

@@ -1,6 +1,4 @@
set -ex
docker build -f ./Dockerfile_pio_debug -t nuki_hub_pio_dbg ..
docker create --name nuki_hub_pio_dbg nuki_hub_pio_dbg
rm -rf ../build_pio_dbg
docker cp nuki_hub_pio_dbg:/usr/src/nuki_hub/debug/ ../build_pio_dbg
docker rm -f nuki_hub_pio_dbg
IMAGE_NAME=nuki_hub_build
docker build -f ./Dockerfile -t ${IMAGE_NAME} ..
docker run --rm -it -v $PWD/..:/src -w /src ${IMAGE_NAME} make debug