diff --git a/.devcontainer.json b/.devcontainer.json new file mode 100644 index 00000000..e716608c --- /dev/null +++ b/.devcontainer.json @@ -0,0 +1,15 @@ +{ + "build": { "dockerfile": "Dockerfile", "target": "tsffs-dev" }, + "remoteUser": "1003", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspace/tsffs,type=bind", + "workspaceFolder": "/workspace/tsffs", + "customizations": { + "vscode": { + "extensions": [ + "rust-lang.rust-analyzer", + "tamasfe.even-better-toml", + "ms-azuretools.vscode-containers" + ] + } + } +} diff --git a/Dockerfile b/Dockerfile index 261e85db..5aff3e96 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 # hadolint global ignore=DL3041,DL3040 -FROM fedora:38@sha256:b9ff6f23cceb5bde20bb1f79b492b98d71ef7a7ae518ca1b15b26661a11e6a94 +FROM fedora:38@sha256:b9ff6f23cceb5bde20bb1f79b492b98d71ef7a7ae518ca1b15b26661a11e6a94 AS tsffs-base # Download links can be obtained from: # https://lemcenter.intel.com/productDownload/?Product=256660e5-a404-4390-b436-f64324d94959 @@ -123,3 +123,30 @@ RUN ispm projects /workspace/projects/example/ --create \ ninja RUN echo 'echo "To run the demo, run ./simics -no-gui --no-win fuzz.simics"' >> /root/.bashrc + +FROM tsffs-base AS tsffs-dev +# build: +# docker build -t tsffs:dev --target tsffs-dev . +# run: +# docker run --rm -ti -u $(id -u) -v .:/workspace/tsffs tsffs:dev + +RUN < /etc/sudoers.d/sudogrp +# create group for developers +groupadd dev +# set /workspace/simics permissions to root:dev +chown -R root:dev /workspace/{simics,projects} && chmod -R g+w /workspace/{simics,projects} +# create first 5 users +for i in $(seq 5); do + useradd --create-home "docker${i}" --groups dev,wheel + # install Rust nightly + sudo -E -u "docker${i}" bash -c 'curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain none' + # copy Simics ISPM config + mkdir -p /home/docker${i}/.config + cp -r "/root/.config/Intel Simics Package Manager/" "/home/docker${i}/.config/" + chown -R "docker${i}:dev" "/home/docker${i}/.config/" +done +EOF + +WORKDIR /workspace/tsffs