diff options
| author | BloodStainedCrow <tim.aschhoff@t-online.de> | 2024-03-23 10:45:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-23 10:45:45 +0100 |
| commit | 57e625d4dcb94c4d26a3a65e6738322f172b705b (patch) | |
| tree | 5a0f39f39fc8dc3f617fe8dec16b7e478de6e1ca /doc/usingDevcontainers.md | |
| parent | 9a5f516c427f329bbc161f794bae18908fcd33c5 (diff) | |
Unify docker devcontainer with dockerfile used for CI (#1587)
* Only use one Dockerfile and build.sh script for both docker and devcontainer
* Remove all now unneccessary tasks and scripts
* Update to clang-format-14
* Move devcontainer.json into root folder
* Fix conditional statements in Dockerfile
* Move .devcontainer/README into doc/usingDevcontainers
* Remove obsolete VSCode Task
* Change standard compiler path to the correct compiler
* Set GDB Path for debugging
* Hide broken buttons from CMake Extension
* Refactor .devcontainer
* Remove unneccessary postBuildCommand
* Add devcontainer dependencies to all docker images
* Add Devcontainer Debug launch config
* Add an additional c_cpp_properties config as a fallback for devcontainer
* Remove obsolete Docker Argument
* Fix wrong C/Cpp versions
* Fix silent fail of gdb, add libncurses5
Diffstat (limited to 'doc/usingDevcontainers.md')
| -rw-r--r-- | doc/usingDevcontainers.md | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/doc/usingDevcontainers.md b/doc/usingDevcontainers.md new file mode 100644 index 00000000..fc755ba1 --- /dev/null +++ b/doc/usingDevcontainers.md @@ -0,0 +1,55 @@ +# VS Code Dev Container + +This is a docker-based interactive development environment using VS Code and Docker Dev Containers removing the need to install any tools locally\* + +## Requirements + +- VS Code + - [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension +- Docker +- OpenOCD - For debugging + +## Using + +### Code editing, and building. + +1. Clone InfiniTime and update submodules +2. Launch VS Code +3. Open InfiniTime directory, +4. Allow VS Code to open folder with devcontainer. + +After this the environment will be built if you do not currently have a container setup, it will install all the necessary tools and extra VSCode extensions. + +In order to build InfiniTime we need to run the initial submodule init and CMake commands. + +#### Manually + +You can use the VS Code terminal to run the CMake commands as outlined in the [build instructions](https://github.com/InfiniTimeOrg/InfiniTime/blob/main/doc/buildAndProgram.md) + +#### Script + +The dev environment comes with some scripts to make this easier, They are located in /opt/. + +There are also VS Code tasks provided should you desire to use those. + +The task "update submodules" will update the git submodules + +### Build + +You can use the build.sh script located in /opt/ + +CMake is also configured and controls for the CMake plugin are available in VS Code + +### Debugging + +Docker on windows does not support passing USB devices to the underlying WSL2 subsystem, To get around this we use OpenOCD in server mode running on the host. + +`openocd -f <yourinterface> -f <nrf52.cfg target file>` + +This will launch OpenOCD in server mode and attach it to the MCU. + +The default launch.json file expects OpenOCD to be listening on port 3333, edit if needed + +## Current Issues + +Currently WSL2 Has some real performance issues with IO on a windows host. Accessing files on the virtualized filesystem is much faster. Using VS Codes "clone in container" feature of the Remote - Containers will get around this. After the container is built you will need to update the submodules and follow the build instructions like normal |
