Use this checklist each time you publish a new forked SDK release (example: v2.2.0-picomail.2).
Related setup guide for developers:
DEVELOPER_BUILD.md
- In your lwIP fork, branch from the currently used commit/tag.
- Apply and review changes in:
src/apps/smtp/smtp.c
- Run a local build using Pico SDK 2.2.0 + your branch.
- Commit and push lwIP changes.
- Record the lwIP commit SHA.
- In your pico-sdk fork, branch from the currently used SDK tag/branch.
- Apply and review SDK-side changes in:
src/rp2_common/pico_lwip/altcp_tls_mbedtls.c
- Update
lib/lwipsubmodule pointer to the new lwIP commit SHA. - Run:
git submodule update --init --recursive
- Commit and push pico-sdk changes.
- Create annotated tag in pico-sdk fork:
v2.2.0-picomail.N
- Push branch and tag.
- Confirm tag resolves to the intended commit and submodule pointer.
- Update documentation tag references in:
DEVELOPER_BUILD.mdsdk-overrides/setup_forked_sdk.ps1(defaultSdkTagif you want)
- If override files changed, refresh:
sdk-overrides/files/src/rp2_common/pico_lwip/altcp_tls_mbedtls.csdk-overrides/files/lib/lwip/src/apps/smtp/smtp.c
- Run:
powershell -ExecutionPolicy Bypass -File ./sdk-overrides/apply_overrides.ps1- build task
Apply + Compile Project - flash task
Flash
- Compile succeeds from clean build directory.
- Device flash succeeds via OpenOCD.
- Runtime setup portal works end-to-end (AP mode, save Wi-Fi/SMTP settings, reboot with persisted config).
- SMTP send path works end-to-end (connect, TLS handshake, AUTH, DATA, QUIT).
- Confirm no credentials are committed in shared files.
- Create a fresh recursive checkout:
git clone --recurse-submodules <repo-url> release-srccd release-srcgit submodule update --init --recursivegit submodule status --recursive
- Build at least once from this checkout to confirm all required source inputs are present.
- Create and publish your own release asset archive from this checkout:
Compress-Archive -Path * -DestinationPath ..\WestinghouseRTOSDev-src-with-submodules.zip -Force
- Do not rely on provider auto-generated source archives when complete submodule materialization is required.
- New SDK tag:
<tag> - Why:
<summary of fixes> - Action for developers:
- Run
setup_forked_sdk.ps1with new tag - Reconfigure/build
- Run
- Rollback option:
- Use previous known-good tag
<previous-tag>
- Use previous known-good tag
Run these from a clean checkout before you attach a source zip to a GitHub release:
git submodule sync --recursive; git submodule update --init --recursive
powershell -ExecutionPolicy Bypass -File ./scripts/bootstrap.ps1
git submodule status --recursiveExpected result:
- Submodules are initialized and synchronized.
- Bootstrap configures both
build/andbuild-rp2350/. git submodule status --recursiveprints pinned SHAs with no missing entries.