Skip to content
This repository has been archived by the owner on Aug 22, 2024. It is now read-only.

Merge pull request #152 from n0xa/develop #35

Merge pull request #152 from n0xa/develop

Merge pull request #152 from n0xa/develop #35

Workflow file for this run

---
name: Compile Develop Brench
on:
push:
branches:
- main
tags:
- "*"
pull_request:
branches:
- main
workflow_dispatch:
inputs:
board:
description: 'Board to Compile'
type: choice
required: true
default: 'M5Cardputer'
options: ['M5Cardputer', 'M5StickCPlus2', 'M5StickCPlus', 'M5StickC']
jobs:
compile_sketch:
name: Build ${{ matrix.board.name }} (${{ matrix.locale }})
runs-on: ubuntu-latest
strategy:
# max-parallel: 4
fail-fast: false
matrix:
locale:
- en-us
- pt-br
board:
- {
name: "M5Cardputer",
fqbn: "m5stack:esp32:m5stack_cardputer",
extra_flags: "-DCARDPUTER",
libraries: "M5Cardputer IRRemoteESP8266 M5Stack-SD-Updater M5Unified",
partitions: {
bootloader_addr: "0x0000",
},
}
- {
name: "M5StickCPlus2",
fqbn: "m5stack:esp32:m5stack_stickc_plus2",
extra_flags: "-DSTICK_C_PLUS2",
libraries: "M5StickCPlus2 IRRemoteESP8266 M5Stack-SD-Updater M5Unified",
partitions: {
bootloader_addr: "0x1000",
},
}
- {
name: "M5StickCPlus",
fqbn: "m5stack:esp32:m5stack_stickc_plus",
extra_flags: "-DSTICK_C_PLUS",
libraries: "M5StickCPlus IRRemoteESP8266 M5Stack-SD-Updater M5Unified",
partitions: {
bootloader_addr: "0x1000",
},
}
- {
name: "M5StickC",
fqbn: "m5stack:esp32:m5stack_stickc",
extra_flags: "-DSTICK_C",
# TODO: M5StickC's latest version has some dependency issues with M5Hat-JoyC library
libraries: "M5StickC@0.2.8 IRRemoteESP8266 M5Stack-SD-Updater M5Unified",
partitions: {
bootloader_addr: "0x1000",
},
}
steps:
- uses: actions/checkout@v4
- id: nemo_version
name: Get NEMO Version
run: |
set -x
if [[ "${{ github.ref_type }}" == "tag" ]]; then
version=${{ github.ref_name }}
else
version="${GITHUB_SHA::7}"
fi
echo "version=${version}" > $GITHUB_OUTPUT
- name: Setup Arduino CLI
uses: arduino/setup-arduino-cli@v1
- name: Install platform
run: |
set -x
# arduino-cli core install esp32:esp32
arduino-cli core install m5stack:esp32 --additional-urls "file:///${PWD}/package_m5stack_index.json"
arduino-cli core search m5stack
arduino-cli board listall
arduino-cli lib install ${{ matrix.board.libraries }} --log-level warn --verbose
- name: Install esptool
run: |
pip install -U esptool
- name: Setup platform.txt
run: |
baseFolder="$HOME/.arduino15/packages/m5stack/hardware/esp32"
# Find the latest version of the folder
latestVersion=$(find "$baseFolder" -maxdepth 1 -type d -exec basename {} \; | sort -V | head -n 1)
# Full path to the file to be edited
file="$baseFolder/$latestVersion/platform.txt"
backupFile="$baseFolder/$latestVersion/platform.txt.bkp"
prefix="build.extra_flags.esp32"
option=" -w "
prefix2="compiler.c.elf.libs.esp32"
option2=" -zmuldefs "
# Use awk to insert options after the first equals sign on lines with specified prefixes
awk -v prefix="$prefix" -v option="$option" -v prefix2="$prefix2" -v option2="$option2" '{
if ($0 ~ "^" prefix) {
sub(/=/, "=" option);
print;
} else if ($0 ~ "^" prefix2) {
sub(/=/, "=" option2);
print;
} else {
print;
}
}' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
echo "Done."
- name: Compile ${{ matrix.board.name }} Sketch
run: |
set -x
version=${{ steps.nemo_version.outputs.version }}
locale=${{ matrix.locale }}
language=$(echo "LANGUAGE_${locale//-/_}" | tr '[:lower:]' '[:upper:]')
extra_flags="${{ matrix.board.extra_flags }} -DNEMO_VERSION=\"${version}\" -D${language}"
arduino-cli compile --fqbn ${{ matrix.board.fqbn }} -e \
--build-property build.partitions=huge_app \
--build-property upload.maximum_size=3145728 \
--build-property compiler.cpp.extra_flags="${extra_flags}" \
./m5stick-nemo.ino
- name: Create ${{ matrix.board.name }} Firmware Binary
run: |
set -x
version=${{ steps.nemo_version.outputs.version }}
locale=${{ matrix.locale }}
if [[ "${locale}" == "en-us" ]]; then
output_file="M5Nemo-${version}-${{ matrix.board.name }}.bin"
else
output_file="M5Nemo-${version}-${{ matrix.board.name }}.${locale}.bin"
fi
fqbn=${{ matrix.board.fqbn }}
directory="${fqbn//:/.}"
esptool.py --chip esp32s3 merge_bin --output ${output_file} \
${{ matrix.board.partitions.bootloader_addr }} build/${directory}/m5stick-nemo.ino.bootloader.bin \
0x8000 build/${directory}/m5stick-nemo.ino.partitions.bin \
0x10000 build/${directory}/m5stick-nemo.ino.bin
- name: List all files
if: always()
continue-on-error: true
run: |
set -x
pwd
ls -all
tree
# TODO: Validate the firmware
- name: Upload ${{ matrix.board.name }} Firmware Binary
uses: actions/upload-artifact@v4
with:
name: M5Nemo-${{ matrix.board.name }}.${{ matrix.locale }}
path: M5Nemo-*.bin
if-no-files-found: error
create_release:
runs-on: ubuntu-latest
environment: github_release
needs: [compile_sketch]
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
steps:
- id: nemo_version
name: Get NEMO Version
run: |
set -x
if [[ "${{ github.ref_type }}" == "tag" ]]; then
version=${{ github.ref_name }}
else
version="${GITHUB_SHA::7}"
fi
echo "version=${version}" > $GITHUB_OUTPUT
- uses: actions/download-artifact@v4
with:
merge-multiple: true
- name: List all files
if: always()
run: |
set -x
pwd
ls -all
tree
- name: Create Release ${{ steps.nemo_version.outputs.version }}
uses: softprops/action-gh-release@v1
with:
name: NEMO Release ${{ steps.nemo_version.outputs.version }}
tag_name: ${{ steps.nemo_version.outputs.version }}
generate_release_notes: true
files: |
M5Nemo-*.bin