From b65f2509a2859a2f1cfb9c718aa320150accc7f5 Mon Sep 17 00:00:00 2001 From: Stefan Wallentowitz Date: Tue, 12 Dec 2023 08:46:25 +0100 Subject: [PATCH] Devcontainer support (#4748) devcontainers are a convenient way to provide users a reproducible build environment. It is currently supported by Visual Studio Code, Visual Studio and IntelliJ. When the user opens the verilator repo in VSCode with the standard devcontainer extension installed, VSCode will ask the user if they want to reopen in the devcontainer, then build the Docker image as per our definition and then restart VSCode 'remotely' attached to the Docker container. More information: https://code.visualstudio.com/docs/devcontainers/containers Also: - zlibc is missing on Debian-based systems now - Add non-root user to Dockerfile and make default --- .devcontainer/devcontainer.json | 8 ++++++++ ci/docker/buildenv/Dockerfile | 13 ++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..c2235983d --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,8 @@ +{ + "name": "Verilator Build Environment", + + "build": { + "dockerfile": "../ci/docker/buildenv/Dockerfile" + } + +} diff --git a/ci/docker/buildenv/Dockerfile b/ci/docker/buildenv/Dockerfile index 3e3fbe177..385e0b088 100644 --- a/ci/docker/buildenv/Dockerfile +++ b/ci/docker/buildenv/Dockerfile @@ -8,6 +8,16 @@ FROM ubuntu:22.04 +# Create the user +RUN groupadd verilator \ + && useradd -g verilator -m verilator -s /bin/bash \ + && apt-get update \ + && apt-get install --no-install-recommends -y sudo \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* \ + && echo verilator ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/verilator \ + && chmod 0440 /etc/sudoers.d/verilator + RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive \ apt-get install --no-install-recommends -y \ @@ -33,7 +43,6 @@ RUN apt-get update \ perl \ python3 \ wget \ - zlibc \ zlib1g \ zlib1g-dev \ && apt-get clean \ @@ -52,6 +61,8 @@ COPY build.sh /tmp/build.sh ENV VERILATOR_AUTHOR_SITE=1 +USER verilator + WORKDIR /work ENTRYPOINT [ "/tmp/build.sh" ]