Skip to content

Commit f96e3df

Browse files
authored
Platformio compatible (#1)
1 parent e170bcc commit f96e3df

22 files changed

+1888
-267
lines changed

.github/workflows/build_esptool.yml

Lines changed: 110 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,53 @@
11
name: Build esptool
22

3-
on: [push, pull_request]
3+
on:
4+
workflow_dispatch:
5+
push:
6+
tags:
7+
- "v*.*.*"
8+
paths-ignore:
9+
- '.github/**' # Ignore changes towards the .github directory
410

511
jobs:
612
build-esptool-binaries:
7-
name: Build esptool binaries for ${{ matrix.platform }}
8-
runs-on: ${{ matrix.RUN_ON }}
13+
name: Build esptool binaries for ${{ matrix.os }}
14+
runs-on: ${{ matrix.os }}
915
strategy:
1016
matrix:
11-
platform: [macos, windows, linux-amd64, linux-arm32, linux-arm64]
17+
os: [macos-14, macos-latest, ubuntu-latest, windows-latest]
1218
include:
13-
- platform: macos
19+
- os: macos-14
20+
TARGET: macos-arm
21+
SEPARATOR: ':'
22+
- os: macos-latest
1423
TARGET: macos
1524
SEPARATOR: ':'
16-
RUN_ON: macos-latest
17-
- platform: windows
25+
- os: ubuntu-latest
26+
TARGET: linux-amd64
27+
SEPARATOR: ':'
28+
- os: windows-latest
1829
TARGET: win64
1930
EXTEN: .exe
2031
SEPARATOR: ';'
21-
RUN_ON: windows-latest
22-
- platform: linux-amd64
23-
TARGET: linux-amd64
24-
SEPARATOR: ':'
25-
RUN_ON: ubuntu-20.04
26-
- platform: linux-arm32
27-
CONTAINER: python:3.8-bullseye
28-
TARGET: linux-arm32
29-
SEPARATOR: ':'
30-
RUN_ON: [ARM, self-hosted, linux]
31-
- platform: linux-arm64
32-
CONTAINER: python:3.8-bullseye
33-
TARGET: linux-arm64
34-
SEPARATOR: ':'
35-
RUN_ON: [ARM64, self-hosted, linux]
36-
container: ${{ matrix.CONTAINER }} # use python container on ARM
3732
env:
3833
DISTPATH: esptool-${{ matrix.TARGET }}
3934
STUBS_DIR: ./esptool/targets/stub_flasher/
4035
EFUSE_DIR: ./espefuse/efuse_defs/
4136
PIP_EXTRA_INDEX_URL: "https://dl.espressif.com/pypi"
4237
steps:
4338
- name: Checkout repository
44-
uses: actions/checkout@master
45-
- name: Set up Python 3.8
46-
# Skip setting python on ARM because of missing compatibility: https://github.com/actions/setup-python/issues/108
47-
if: matrix.platform != 'linux-arm32' && matrix.platform != 'linux-arm64'
48-
uses: actions/setup-python@master
39+
uses: actions/checkout@v4
40+
with:
41+
ref: main_work
42+
- name: Set up Python 3.11
43+
uses: actions/setup-python@v5
4944
with:
50-
python-version: 3.8
45+
python-version: 3.11
46+
- name: Update esptool version when releasing
47+
if: startsWith(github.ref, 'refs/tags/')
48+
run: |
49+
python ci/patch_release.py --version ${{ github.ref_name }} esptool/__init__.py
50+
#git diff
5151
- name: Install dependencies
5252
# PyInstaller >=6.0 results in significantly more antivirus false positives
5353
run: |
@@ -60,72 +60,102 @@ jobs:
6060
pyinstaller --distpath ./${{ env.DISTPATH }} -F --icon=ci/espressif.ico --add-data="${{ env.EFUSE_DIR }}*.yaml${{ matrix.SEPARATOR }}${{ env.EFUSE_DIR }}" espefuse.py
6161
pyinstaller --distpath ./${{ env.DISTPATH }} -F --icon=ci/espressif.ico espsecure.py
6262
pyinstaller --distpath ./${{ env.DISTPATH }} -F --icon=ci/espressif.ico esp_rfc2217_server.py
63-
- name: Sign binaries
64-
if: matrix.platform == 'windows' && github.event_name != 'pull_request'
65-
env:
66-
CERTIFICATE: ${{ secrets.CERTIFICATE }}
67-
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
68-
shell: pwsh
69-
run: |
70-
./ci/Sign-File.ps1 -Path ./${{ env.DISTPATH }}/esptool.exe
71-
./ci/Sign-File.ps1 -Path ./${{ env.DISTPATH }}/espefuse.exe
72-
./ci/Sign-File.ps1 -Path ./${{ env.DISTPATH }}/espsecure.exe
73-
./ci/Sign-File.ps1 -Path ./${{ env.DISTPATH }}/esp_rfc2217_server.exe
7463
- name: Test binaries
7564
shell: bash
7665
run: |
7766
./${{ env.DISTPATH }}/esptool${{ matrix.EXTEN }} -h
7867
./${{ env.DISTPATH }}/espefuse${{ matrix.EXTEN }} -h
7968
./${{ env.DISTPATH }}/espsecure${{ matrix.EXTEN }} -h
8069
./${{ env.DISTPATH }}/esp_rfc2217_server${{ matrix.EXTEN }} -h
81-
- name: Add license and readme
82-
shell: bash
83-
run: mv LICENSE README.md ./${{ env.DISTPATH }}
8470
- name: Archive artifact
8571
uses: actions/upload-artifact@master
8672
with:
8773
name: ${{ env.DISTPATH }}
8874
path: ${{ env.DISTPATH }}
75+
- name: Build stub
76+
if: matrix.os == 'ubuntu-latest'
77+
run: |
78+
export TOOLCHAIN_DIR=$HOME/toolchain
79+
export ESP8266_BINDIR=$TOOLCHAIN_DIR/xtensa-lx106-elf/bin
80+
export ESP32_BINDIR=$TOOLCHAIN_DIR/xtensa-esp32-elf/bin
81+
export ESP32S2_BINDIR=$TOOLCHAIN_DIR/xtensa-esp32s2-elf/bin
82+
export ESP32S3_BINDIR=$TOOLCHAIN_DIR/xtensa-esp32s3-elf/bin
83+
export ESP32C3_BINDIR=$TOOLCHAIN_DIR/riscv32-esp-elf/bin
84+
export PATH=$PATH:$ESP8266_BINDIR:$ESP32_BINDIR:$ESP32S2_BINDIR:$ESP32S3_BINDIR:$ESP32C3_BINDIR
85+
./ci/setup_ci_build_env.sh
86+
make -C flasher_stub V=1
87+
rm /home/runner/work/esptool/esptool/flasher_stub/build/*.elf
88+
rm /home/runner/work/esptool/esptool/flasher_stub/build/*.map
89+
- name: Update package.json when a release tag is set
90+
if: startsWith(github.ref, 'refs/tags/') && matrix.os == 'ubuntu-latest'
91+
run: |
92+
rm package.json
93+
python ci/gen_pio_manifest.py -o "./" -s ${{ github.ref_name }}
94+
- name: Upload stubs artifact
95+
if: matrix.os == 'ubuntu-latest'
96+
uses: jason2866/[email protected]
97+
with:
98+
name: stubs
99+
path: /home/runner/work/esptool/esptool/flasher_stub/build
100+
- name: Upload package.json artifact
101+
if: matrix.os == 'ubuntu-latest'
102+
uses: jason2866/[email protected]
103+
with:
104+
name: manifest
105+
path: /home/runner/work/esptool/esptool/package.json
89106

90-
create_release:
91-
name: Create GitHub release
92-
if: startsWith(github.ref, 'refs/tags/') && !(contains(github.ref_name, 'dev'))
107+
push_stubs:
108+
name: Commit changed files
93109
needs: build-esptool-binaries
94110
runs-on: ubuntu-latest
95-
permissions:
96-
contents: write
97111
steps:
98-
- name: Get version
99-
id: get_version
100-
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
101-
shell: bash
102-
- name: Checkout
103-
uses: actions/checkout@master
112+
- name: Checkout repository
113+
uses: actions/checkout@v4
104114
with:
105-
fetch-depth: 0
106-
- name: Install dependencies
107-
run: |
108-
python -m pip install --upgrade pip
109-
pip install --user -e ".[dev]"
110-
- name: Generate changelog
111-
run: |
112-
cz changelog ${{ steps.get_version.outputs.VERSION }} --template ci/gh_changelog_template.md.j2 --file-name changelog_body.md
113-
cat changelog_body.md
114-
- name: Download built binaries
115-
uses: actions/download-artifact@master
116-
- name: Compress and rename binaries
117-
run: |
118-
for dir in esptool-*; do
119-
zip -r "esptool-v${{ steps.get_version.outputs.VERSION }}-${dir#esptool-}.zip" "$dir"
120-
done
121-
- name: Create release
122-
id: create_release
123-
uses: softprops/action-gh-release@v1
124-
env:
125-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
115+
ref: main_work
116+
- name: Download artifacts
117+
uses: jason2866/[email protected]
118+
with:
119+
name: |
120+
stubs
121+
manifest
122+
path: |
123+
./esptool/targets/stub_flasher
124+
./
125+
- uses: stefanzweifel/git-auto-commit-action@v5
126126
with:
127-
body_path: changelog_body.md
128-
name: Version ${{ steps.get_version.outputs.VERSION }}
129-
draft: true
130-
prerelease: false
131-
files: esptool-v${{ steps.get_version.outputs.VERSION }}-*.zip
127+
commit_message: updated files
128+
129+
release:
130+
name: Upload release binaries
131+
needs: build-esptool-binaries
132+
if: startsWith(github.ref, 'refs/tags/')
133+
runs-on: ubuntu-latest
134+
steps:
135+
- name: Checkout repository
136+
uses: actions/checkout@v4
137+
with:
138+
ref: main_work
139+
- name: Zip esptool.py
140+
run: |
141+
echo "Packaging new esptool release: ${{ github.ref_name }}"
142+
python ci/patch_release.py --version ${{ github.ref_name }} esptool/__init__.py
143+
rm package.json
144+
python ci/gen_pio_manifest.py -o "./" -s ${{ github.ref_name }}
145+
python ci/pack_python.py
146+
- name: Download built binaries
147+
uses: actions/download-artifact@master
148+
- name: Rename and package binaries
149+
run: |
150+
zip -r esptool-macos-arm.zip ./esptool-macos-arm
151+
zip -r esptool-macos.zip ./esptool-macos
152+
zip -r esptool-linux-amd64.zip ./esptool-linux-amd64
153+
zip -r esptool-win64.zip ./esptool-win64
154+
- name: Release
155+
uses: jason2866/[email protected]
156+
with:
157+
prerelease: false
158+
files: |
159+
*.zip
160+
env:
161+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/dangerjs.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

.github/workflows/dev_release_esptool_pypi.yml

Lines changed: 0 additions & 41 deletions
This file was deleted.

.github/workflows/issue_comment.yml

Lines changed: 0 additions & 20 deletions
This file was deleted.

.github/workflows/new_issues.yml

Lines changed: 0 additions & 20 deletions
This file was deleted.

.github/workflows/new_prs.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)