* esp32_platform: update to 55.03.39
## Summary
- Add support for Python 3.14
- Improve ESP32 platform and framework compatibility.
- Update board support and toolchain integrations.
- Fix stability and hardware-specific issues across supported ESP32 targets.
- Release notes:
- [55.03.39](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.39)
- [55.03.38](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.38)
- [55.03.37](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.37)
- [55.03.36](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.36)
- [55.03.35](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.35)
- [55.03.34](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.34)
* update build to use python 3.14 with platformio 6.1.19
* Update esp32-arduino-lib-builder to v1.5
* [CI] Fix call8 link overflow on large Xtensa builds (IDF 5.5.4)
The 55.03.39 / IDF 5.5.4 bump enlarges the precompiled libs enough that
large Xtensa images (esp32 / esp32s3) overflow the call8 reach and fail to
link with "dangerous relocation: call8: call target out of range".
-mlongcalls (which makes calls linker-relaxable) is injected by
esp32-arduino-libs into the framework compile but NOT into lib_deps
(NimBLE-Arduino, ArduinoJson) or project sources.
Add a project pre: extra_script (scripts/add_mlongcalls.py) that applies
-mlongcalls to CCFLAGS/ASFLAGS, gated on the Xtensa MCUs (RISC-V c3 has no
call8 and rejects the flag). Wired into [env]; the four esp32dev-*pilight*
envs that set their own extra_scripts list it explicitly too, since
PlatformIO replaces rather than merges extra_scripts.
Also bump esp32-arduino-libs 0.1.5 -> 0.1.6, which restores the
framework-side -mdisable-hardware-atomics / -fno-builtin-* flags that 0.1.5
dropped under IDF 5.5.4 (separate from the lib_deps call8 issue).
Verified clean (0 call8): esp32dev-all-test, esp32dev-ble, theengs-bridge,
theengs-plug, esp32dev-pilight (+cc1101); esp32c3 unaffected.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Florian <florian@theengs.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
121 lines
3.5 KiB
YAML
121 lines
3.5 KiB
YAML
name: Reusable Build Workflow
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
python-version:
|
|
description: "Python version to use"
|
|
required: false
|
|
type: string
|
|
default: "3.14"
|
|
pio-version:
|
|
description: "PlatformIO version to use"
|
|
required: false
|
|
type: string
|
|
default: "v6.1.19"
|
|
environment-set:
|
|
description: 'Which set of environments to build (all, ci)'
|
|
required: false
|
|
type: string
|
|
default: 'all'
|
|
enable-dev-ota:
|
|
description: "Enable development OTA builds"
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
version-tag:
|
|
description: "Optional version tag to pass to ci.sh build (omitted if empty)"
|
|
required: false
|
|
type: string
|
|
default: ""
|
|
artifact-retention-days:
|
|
description: "Number of days to retain build artifacts"
|
|
required: false
|
|
type: number
|
|
default: 7
|
|
|
|
jobs:
|
|
lint:
|
|
name: Lint code format
|
|
uses: ./.github/workflows/task-lint.yml
|
|
with:
|
|
source: "main"
|
|
extensions: "h,ino,cpp"
|
|
clang-format-version: "9"
|
|
|
|
security-scan:
|
|
name: Security vulnerability scan
|
|
uses: ./.github/workflows/task-security-scan.yml
|
|
with:
|
|
severity: "UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL"
|
|
exit-code: "1"
|
|
upload-to-security-tab: true
|
|
|
|
load-environments:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- id: set-matrix
|
|
run: |
|
|
ENV_SET="${{ inputs.environment-set }}"
|
|
if [ "$ENV_SET" = "ci" ]; then
|
|
ENVIRONMENTS=$(jq -c '.environments.ci' .github/workflows/environments.json)
|
|
else
|
|
ENVIRONMENTS=$(jq -c '.environments.all' .github/workflows/environments.json)
|
|
fi
|
|
echo "matrix=${ENVIRONMENTS}" >> $GITHUB_OUTPUT
|
|
|
|
|
|
build:
|
|
needs: [lint, security-scan, load-environments]
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
environments: ${{ fromJson(needs.load-environments.outputs.matrix) }}
|
|
name: Build ${{ matrix.environments }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ inputs.python-version }}
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v6
|
|
with:
|
|
version: "latest"
|
|
enable-cache: false
|
|
|
|
- name: Install PlatformIO dependencies
|
|
run: |
|
|
uv pip install --system -U https://github.com/pioarduino/platformio-core/archive/refs/tags/${{ inputs.pio-version }}.zip
|
|
|
|
- name: Build firmware using ci.sh
|
|
run: |
|
|
BUILD_ARGS="${{ matrix.environments }}"
|
|
BUILD_ARGS="$BUILD_ARGS --deploy-ready"
|
|
|
|
# Optional version tag
|
|
if [ -n "${{ inputs.version-tag }}" ]; then
|
|
BUILD_ARGS="$BUILD_ARGS --version ${{ inputs.version-tag }}"
|
|
fi
|
|
|
|
# Mode
|
|
if [ "${{ inputs.enable-dev-ota }}" = "true" ]; then
|
|
BUILD_ARGS="$BUILD_ARGS --mode dev"
|
|
else
|
|
BUILD_ARGS="$BUILD_ARGS --mode prod"
|
|
fi
|
|
./scripts/ci.sh build $BUILD_ARGS
|
|
|
|
- name: Upload firmware artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.environments }}
|
|
path: generated/artifacts/
|
|
retention-days: ${{ inputs.artifact-retention-days }}
|