Repository navigation
Dev containers: build any port in a codespace - #170
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You can now build firmware without installing a toolchain, in a GitHub codespace or a local dev container. Each port gets its own config, so building one port doesn't pull in the others' packages.
.devcontainer/{unix,webassembly,rp2,windows,esp32}/devcontainer.json, one sharedDockerfilewith aPORTbuild arg. The image runsinstall.sh --deps $PORT, which installs from the same package listinstall.shprints for your own machine.build_mp.pystill fetches each toolchain on its first build, intodeps/. Each config keepsdeps/in a named volume, so rebuilding a container doesn't fetch the toolchain again.onCreateCommand, so a Codespaces prebuild of that config does the slow part ahead of time. Its compilers go into the volume throughIDF_TOOLS_PATH.scripts/serve_workbench.shdownloads the newest workbench release, swaps in your build'smicropython.mjsandmicropython.wasm, and serves it on port 8000. The config forwards that port and opens it in your browser.Dev containersworkflow builds each config from a clean image and runs one real build in it: unix and webassembly with every module (each then runs a script that importsdisplaydev), rp2RPI_PICO2, windows, and esp32ESP32_GENERIC_S3. The webassembly job also checks that workbench serves the build it just made. It runs when a config changes, and weekly.docs/newcomers.mdgains "In a codespace", the README gets the Codespaces badge, and the roadmap gains "Install from a file".