* 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>
147 lines
4.5 KiB
YAML
147 lines
4.5 KiB
YAML
name: Reusable Documentation Workflow
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
mode:
|
|
description: 'Build mode: "prod" or "dev"'
|
|
required: false
|
|
type: string
|
|
default: "prod"
|
|
version:
|
|
description: 'Version string for documentation (use "auto" for automatic detection)'
|
|
required: false
|
|
type: string
|
|
default: "auto"
|
|
just-check:
|
|
description: "Just create a quick build to check for errors"
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
url-prefix:
|
|
description: 'URL prefix for docs (e.g., "/" for prod, "/dev/" for dev)'
|
|
required: false
|
|
type: string
|
|
default: "/"
|
|
run-pagespeed:
|
|
description: "Run PageSpeed Insights after deploy"
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
pagespeed-url:
|
|
description: "URL to test with PageSpeed"
|
|
required: false
|
|
type: string
|
|
default: "https://docs.openmqttgateway.com/"
|
|
destination-dir:
|
|
description: "GitHub Pages destination directory"
|
|
required: false
|
|
type: string
|
|
default: "."
|
|
python-version:
|
|
description: "Python version to use"
|
|
required: false
|
|
type: string
|
|
default: "3.13"
|
|
pio-version:
|
|
description: "PlatformIO version to use"
|
|
required: false
|
|
type: string
|
|
default: "v6.1.19"
|
|
secrets:
|
|
github-token:
|
|
description: "GitHub token for deploying to GitHub Pages"
|
|
required: false
|
|
pagespeed-apikey:
|
|
description: "API key for PageSpeed Insights"
|
|
required: false
|
|
|
|
|
|
jobs:
|
|
documentation:
|
|
runs-on: ubuntu-latest
|
|
name: Create and deploy documentation
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # Fetch all history for git tags
|
|
|
|
- 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: Determine version
|
|
id: version
|
|
run: |
|
|
VERSION="${{ inputs.version }}"
|
|
MODE="${{ inputs.mode }}"
|
|
|
|
# If version is 'auto', determine it based on mode
|
|
if [ "$VERSION" = "auto" ]; then
|
|
if [ "$MODE" = "dev" ]; then
|
|
# Dev mode: always use short SHA
|
|
VERSION="$(git rev-parse --short HEAD)"
|
|
echo "Dev mode - using SHA: $VERSION"
|
|
else
|
|
# Prod mode: try to get git tag
|
|
if GIT_TAG=$(git describe --tags --exact-match 2>/dev/null); then
|
|
VERSION="$GIT_TAG"
|
|
echo "Using exact git tag: $VERSION"
|
|
elif LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null); then
|
|
VERSION="$LATEST_TAG"
|
|
echo "Using latest tag: $VERSION"
|
|
else
|
|
VERSION="v0.0.0-unknown"
|
|
echo "Warning: No tag found, using: $VERSION"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
echo "Final version: $VERSION"
|
|
|
|
- name: Download all firmware artifacts
|
|
if: ${{ inputs.mode == 'dev' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: "*"
|
|
path: generated/artifacts
|
|
merge-multiple: true
|
|
|
|
- name: Build documentation site
|
|
run: |
|
|
./scripts/ci.sh site \
|
|
--clean \
|
|
--mode ${{ inputs.mode }} \
|
|
--version ${{ steps.version.outputs.version }} \
|
|
--url-prefix ${{ inputs.url-prefix }}
|
|
|
|
- name: Deploy to GitHub Pages
|
|
uses: peaceiris/actions-gh-pages@v3
|
|
if: ${{ inputs.just-check == false }}
|
|
with:
|
|
github_token: ${{ secrets.github-token }}
|
|
publish_dir: ./generated/site
|
|
destination_dir: ${{ inputs.destination-dir }}
|
|
cname: docs.openmqttgateway.com
|
|
|
|
- name: Run PageSpeed Insights
|
|
if: ${{ inputs.just-check == false && inputs.run-pagespeed == true }}
|
|
uses: jakepartusch/psi-action@v1.3
|
|
id: psi
|
|
with:
|
|
url: ${{ inputs.pagespeed-url }}
|
|
threshold: 60
|
|
key: ${{ secrets.pagespeed-apikey }}
|