|
2 | 2 | # SPDX-License-Identifier: Apache-2.0 |
3 | 3 | # hadolint global ignore=DL3041,DL3040 |
4 | 4 |
|
5 | | -FROM fedora:42@sha256:ee88ab8a5c8bf78687ddcecadf824767e845adc19d8cdedb56f48521eb162b43 |
| 5 | +FROM fedora:42@sha256:ee88ab8a5c8bf78687ddcecadf824767e845adc19d8cdedb56f48521eb162b43 AS tsffs-base |
6 | 6 |
|
7 | 7 | # Download links can be obtained from: |
8 | 8 | # https://lemcenter.intel.com/productDownload/?Product=256660e5-a404-4390-b436-f64324d94959 |
9 | | -ENV PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" |
10 | | -ENV PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" |
11 | | -ENV PUBLIC_SIMICS_PACKAGE_VERSION_1000="6.0.185" |
| 9 | +ARG PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" |
| 10 | +ARG PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" |
| 11 | +ARG PUBLIC_SIMICS_PACKAGE_VERSION_1000="6.0.185" |
12 | 12 | ENV SIMICS_BASE="/workspace/simics/simics-${PUBLIC_SIMICS_PACKAGE_VERSION_1000}/" |
13 | 13 | # Add cargo and ispm to the path |
14 | 14 | ENV PATH="/root/.cargo/bin:/workspace/simics/ispm:${PATH}" |
@@ -124,3 +124,49 @@ RUN ispm projects /workspace/projects/example/ --create \ |
124 | 124 | ninja |
125 | 125 |
|
126 | 126 | RUN echo 'echo "To run the demo, run ./simics -no-gui --no-win fuzz.simics"' >> /root/.bashrc |
| 127 | + |
| 128 | +FROM tsffs-base AS tsffs-dev |
| 129 | +ARG USER_UID=1000 |
| 130 | +ARG USERNAME=vscode |
| 131 | + |
| 132 | +# To build and run the dev image: |
| 133 | +# docker build --build-arg USER_UID=$(id -u) --target tsffs-dev -t tsffs:dev . |
| 134 | +# docker run --rm -ti -v .:/workspace/tsffs tsffs:dev |
| 135 | + |
| 136 | +# hadolint ignore=DL3004,SC3009 |
| 137 | +RUN <<EOF |
| 138 | +set -e |
| 139 | +# create group for developers |
| 140 | +groupadd dev |
| 141 | +# Create group and user with a home at /home/vscode |
| 142 | +useradd \ |
| 143 | + --create-home \ |
| 144 | + --uid $USER_UID \ |
| 145 | + --user-group \ |
| 146 | + --groups dev \ |
| 147 | + --shell /bin/bash \ |
| 148 | + $USERNAME \ |
| 149 | + && echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/$USERNAME |
| 150 | + |
| 151 | +# set /workspace/simics permissions to root:dev |
| 152 | +chown -R root:dev /workspace/{simics,projects} && chmod -R g+w /workspace/{simics,projects} |
| 153 | + |
| 154 | +# install Rust nightly for the user |
| 155 | +sudo -E -u $USERNAME bash -c 'curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain none' |
| 156 | + |
| 157 | +# copy Simics ISPM config |
| 158 | +mkdir -p /home/$USERNAME/.config |
| 159 | +cp -r "/root/.config/Intel Simics Package Manager/" "/home/$USERNAME/.config/" |
| 160 | +chown -R $USERNAME:$USERNAME "/home/$USERNAME/.config/" |
| 161 | +EOF |
| 162 | + |
| 163 | +WORKDIR /workspace/tsffs |
| 164 | + |
| 165 | +FROM fedora:42@sha256:ee88ab8a5c8bf78687ddcecadf824767e845adc19d8cdedb56f48521eb162b43 AS tsffs-prod |
| 166 | + |
| 167 | +COPY --from=tsffs-base /workspace/projects /workspace/projects |
| 168 | +COPY --from=tsffs-base /workspace/simics /workspace/simics |
| 169 | +COPY --from=tsffs-base /root/.bashrc /root/.bashrc |
| 170 | +COPY --from=tsffs-base /root/.cargo /root/.cargo |
| 171 | + |
| 172 | +WORKDIR /workspace/projects/example |
0 commit comments