From 04d0d95b8a0d28a44afe448fb278ce5e8bf57327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 17 Mar 2020 11:53:18 +0000 Subject: [PATCH] [GITPOD]Add gitpod config this commit adds support for Gitpod.io, a free automated dev environment that makes contributing and generally working on GitHub projects much easier. It allows anyone to start a ready-to-code dev environment for any branch, issue and pull request with a single click. --- .gitpod.Dockerfile | 23 +++++++++++ .gitpod.yml | 18 +++++++++ .theia/launch.json | 29 ++++++++++++++ .theia/settings.json | 10 +++++ .theia/tasks.json | 91 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 171 insertions(+) create mode 100644 .gitpod.Dockerfile create mode 100644 .gitpod.yml create mode 100644 .theia/launch.json create mode 100644 .theia/settings.json create mode 100644 .theia/tasks.json diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile new file mode 100644 index 00000000000..5e090eb7cdf --- /dev/null +++ b/.gitpod.Dockerfile @@ -0,0 +1,23 @@ +FROM gitpod/workspace-full-vnc + +USER gitpod + +# Install custom tools, runtime, etc. using apt-get +# For example, the command below would install "bastet" - a command line tetris clone: +# +# RUN sudo apt-get -q update && # sudo apt-get install -yq bastet && # sudo rm -rf /var/lib/apt/lists/* +# +# More information: https://www.gitpod.io/docs/config-docker/ +RUN sudo apt-get -q update && \ + sudo apt-get -yq upgrade && \ + sudo apt-get -yq install qemu-system-x86 qemu-utils gdb-mingw-w64 && \ + sudo rm -rf /var/lib/apt/lists/* + +RUN wget https://svn.reactos.org/amine/RosBEBinFull.tar.gz && \ + sudo tar -xzf RosBEBinFull.tar.gz -C /usr/local && \ + sudo mv /usr/local/RosBEBinFull /usr/local/RosBE && \ + rm -f RosBEBinFull.tar.gz + +RUN echo 'export PATH=/usr/local/RosBE/i386/bin:$PATH' >> /home/gitpod/.profile + +RUN qemu-img create -f qcow2 reactos_hdd.qcow 10G diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 00000000000..9eb9fb144fc --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,18 @@ +tasks: + - before: > + brew install cmake ninja + init: > + mkdir -p /workspace/reactos/build && + cd /workspace/reactos/build && + cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DGDB:BOOL=TRUE -DSEPARATE_DBG:BOOL=TRUE -D_WINKD_:BOOL=TRUE -DKDBG:BOOL=FALSE -DENABLE_ROSTESTS:BOOL=TRUE -DCMAKE_TOOLCHAIN_FILE=toolchain-gcc.cmake -G "Ninja" && + ninja xdk psdk + command: > + cd /workspace/reactos/build && + ninja all + +image: + file: .gitpod.Dockerfile + +vscode: + extensions: + - ms-vscode.cpptools@0.27.0-insiders3:Djj3Csw0GXjmueWAPWvTsg== diff --git a/.theia/launch.json b/.theia/launch.json new file mode 100644 index 00000000000..8a7abb7111b --- /dev/null +++ b/.theia/launch.json @@ -0,0 +1,29 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + "version": "0.2.0", + "configurations": [ + { + "type": "cppdbg", + "request": "launch", + "name": "livecd (qemu)", + "preLaunchTask": "launch livecd", + "miDebuggerServerAddress": "localhost:9091", + "miDebuggerArgs": "-l 15 -ex 'set sysroot ${workspaceRoot}/build/symbols'", + "program": "${workspaceRoot}/build/ntoskrnl/ntoskrnl.exe", + "cwd": "${workspaceRoot}/build", + "miDebuggerPath": "i686-w64-mingw32-gdb" + }, + { + "type": "cppdbg", + "request": "launch", + "name": "bootcd (qemu)", + "preLaunchTask": "launch bootcd", + "miDebuggerServerAddress": "localhost:9091", + "miDebuggerArgs": "-l 15 -ex 'set sysroot ${workspaceRoot}/build/symbols'", + "program": "${workspaceRoot}/build/ntoskrnl/ntoskrnl.exe", + "cwd": "${workspaceRoot}/build", + "miDebuggerPath": "i686-w64-mingw32-gdb" + } + ] +} diff --git a/.theia/settings.json b/.theia/settings.json new file mode 100644 index 00000000000..4f270f4945c --- /dev/null +++ b/.theia/settings.json @@ -0,0 +1,10 @@ +{ + "cpp.buildConfigurations": [ + { + "name": "build", + "directory": "${workspaceFolder}/build" + } + ], + "cpp.clangdArgs": "--background-index", + "C_Cpp.intelliSenseEngine": "Disabled", +} diff --git a/.theia/tasks.json b/.theia/tasks.json new file mode 100644 index 00000000000..58d78516f95 --- /dev/null +++ b/.theia/tasks.json @@ -0,0 +1,91 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "build livecd", + "type": "shell", + "command": "ninja livecd", + "options": { + "cwd": "${workspaceFolder}/build" + }, + "group": "build", + "problemMatcher": [ + { + "owner": "cpp", + "fileLocation": ["relative", "${workspaceFolder}/build"], + "pattern": { + "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + } + ] + }, + { + "label": "build bootcd", + "type": "shell", + "command": "ninja bootcd", + "options": { + "cwd": "${workspaceFolder}/build" + }, + "group": "build", + "problemMatcher": [ + { + "base": "$gcc", + "fileLocation": ["relative", "${workspaceFolder}/build"], + }, + ] + }, + { + "label": "launch livecd", + "type": "process", + "options": { + "cwd": "${workspaceFolder}/build" + }, + "dependsOn": [ + "build livecd" + ], + "dependsOrder": "sequence", + "command": "qemu-system-i386", + "args": [ + "-cdrom", "livecd.iso", + "-chardev", "socket,port=9091,host=localhost,server,nowait,id=char0", + "-serial", "chardev:char0", + "-nic", "user,model=e1000", + "-boot", "d", + "-chardev", "socket,path=/tmp/livecd_dbg,server,nowait,id=char1", "-serial", "chardev:char1", + "-daemonize" + ], + "problemMatcher": [] + }, + { + "label": "launch bootcd", + "type": "process", + "options": { + "cwd": "${workspaceFolder}/build" + }, + "dependsOn": [ + "build bootcd" + ], + "dependsOrder": "sequence", + "command": "qemu-system-i386", + "args": [ + "-cdrom", "bootcd.iso", + "-hda", "${env:HOME}/reactos_hdd.qcow", + "-boot", "d", + "-m", "1024", + "-chardev", "socket,port=9091,host=localhost,server,nowait,id=char0", + "-serial", "chardev:char0", + "-nic", "user,model=e1000", + "-chardev", "socket,path=/tmp/bootcd_dbg,server,nowait,id=char1", "-serial", "chardev:char1", + "-daemonize" + ], + "problemMatcher": [] + }, + ], +}