add initial version of devcontainer (#7071)
This commit is contained in:
parent
9adc38d6d9
commit
44f24671b8
|
@ -0,0 +1,10 @@
|
|||
# syntax=docker/dockerfile:1
|
||||
# base image from ggrouv: https://github.com/ggurov/rusefibuildcontainer
|
||||
FROM ubuntu:mantic
|
||||
RUN apt-get -y update
|
||||
RUN apt-get -y install make automake autoconf gcc-12-arm-linux-gnueabi gcc-12-arm-linux-gnueabi-base gcc-arm-none-eabi binutils-arm-none-eabi git nano openjdk-21-jdk-headless mtools dosfstools xxd
|
||||
RUN apt-get -y install openssh-server cmake rsync gdb-multiarch build-essential g++-12 gcc-12-multilib g++-12-multilib zip zsh
|
||||
# used for remote non-devcontainer use ex: (https://blog.jetbrains.com/clion/2020/01/using-docker-with-clion/) [also on vscode: https://code.visualstudio.com/remote/advancedcontainers/develop-remote-host]
|
||||
RUN useradd -m rusefi && yes password | passwd rusefi
|
||||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12 --slave /usr/bin/g++ g++ /usr/bin/g++-12 --slave /usr/bin/gcov gcov /usr/bin/gcov-12
|
||||
CMD service ssh start && /bin/bash
|
|
@ -0,0 +1,44 @@
|
|||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||
{
|
||||
"name": "rusEFI-devcontainer",
|
||||
"build": {
|
||||
// Path is relative to the devcontainer.json file.
|
||||
"dockerfile": "Dockerfile"
|
||||
},
|
||||
// Features to add to the dev container. More info: https://containers.dev/features.
|
||||
// "features": {},
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
"forwardPorts": [
|
||||
"2222:22", // ssh on container
|
||||
29002 // simulator
|
||||
],
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "git submodule update --init",
|
||||
// Configure tool-specific properties.
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"eamodio.gitlens",
|
||||
"marus25.cortex-debug",
|
||||
"Gruntfuggly.todo-tree",
|
||||
"ms-vscode.cpptools",
|
||||
"vadimcn.vscode-lldb"
|
||||
],
|
||||
"settings": {
|
||||
"editor.tabSize": 4,
|
||||
"terminal.integrated.defaultProfile.linux": "zsh",
|
||||
"terminal.integrated.profiles.linux": {
|
||||
"bash": {
|
||||
"path": "bash",
|
||||
"icon": "terminal-bash"
|
||||
},
|
||||
"zsh": {
|
||||
"path": "zsh"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||
// "remoteUser": "root"
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
## devcontainer 101
|
||||
|
||||
#### why use this?:
|
||||
A development container is a Docker container that vsCode, through an extension [(Visual Studio Code Dev Containers)](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers), uses to set up a development environment isolated from the host.
|
||||
|
||||
A more nerdy explanation is available at: https://code.visualstudio.com/docs/devcontainers/containers
|
||||
|
||||
In the case of rusefi, it is used to set up the relatively complicated toolset as an alternative to [setup_linux_environment.sh](https://github.com/rusefi/rusefi/blob/master/firmware/setup_linux_environment.sh),Since the script, in addition to only working on Linux, only works for installations that use APT as a package manager (ie any Debian/Ubuntu derivative), and would only work to build the firmware (a couple of extra dependencies are used for tests and the simulator)
|
||||
|
||||
|
||||
#### System requirements:
|
||||
|
||||
Linux:
|
||||
- Docker CE with Docker Compose, also vscode
|
||||
|
||||
macOS:
|
||||
- Docker Desktop 2.0+.
|
||||
|
||||
Windows:
|
||||
- Docker Desktop 2.0 and up
|
||||
- WSL 2
|
||||
|
||||
for WSL 2:
|
||||
- Windows 10 version 2004 and higher (Build 19041 and higher) or Windows 11
|
||||
|
||||
howto install WSL2: https://learn.microsoft.com/en-us/windows/wsl/install
|
||||
|
||||
|
||||
|
||||
in case of a error similar to:
|
||||
|
||||
| Unable to detect if server is already installed: Error: Failed to probe if server is already installed: code: Failed to probe if server is already installed: code: 4294967295, , Unsupported console settings. In order to use this feature, the legacy console must be disabled.
|
||||
|
||||
https://learn.microsoft.com/en-us/windows/wsl/troubleshooting#error-0x80040306-on-installation
|
||||
> This has to do with the fact that we do not support legacy console. To turn off legacy console:
|
||||
>
|
||||
> Open cmd.exe
|
||||
> Right click title bar -> Properties -> Uncheck Use legacy console
|
||||
> Click OK
|
||||
|
||||
In addition, on Windows you have to clone the repository inside WSL, otherwise you will have performance problems since the container will have a longer bind (having to go from the docker container to WSL and from WSL to Windows)
|
||||
|
||||
Once the container creation is complete, you will be able to compile the firmware or the simulator or the tests.
|
||||
For the firmware you will want to use (firmware/bin/compile.sh) instead of make to be able to select the variant of your board.
|
||||
|
||||
note:
|
||||
This still needs a little testing and feedback to see if this same readme or the docker image needs to be improved. If you have any questions, ask the Discord server or personally to @derek_boom (Diego)
|
Loading…
Reference in New Issue