Skip to content

Commit b328da2

Browse files
committed
Updated exactly .sync dockerfile
1 parent b950bc3 commit b328da2

File tree

1 file changed

+143
-100
lines changed

1 file changed

+143
-100
lines changed

.sync/containers/Ubuntu-22/Dockerfile

+143-100
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,24 @@
2525
FROM ubuntu:22.04 AS build
2626

2727
# Versions
28-
ARG GCC_MAJOR_VERSION=12
29-
ARG NASM_VERSION=2.16.01
30-
ARG CSPELL_VERSION=5.20.0
31-
ARG MARKDOWNLINT_VERSION=0.32.2
32-
3328
# Visit this NuGet package version page to see the latest version available
3429
# https://dev.azure.com/projectmu/acpica/_artifacts/feed/mu_iasl/NuGet/edk2-acpica-iasl/versions
35-
ARG IASL_VERSION=20210105.0.6
36-
37-
# Set environment variable to avoid interaction.
38-
ENV DEBIAN_FRONTEND=noninteractive
39-
ENV TZ=UTC
30+
ARG GCC_MAJOR_VERSION=12 \
31+
NASM_VERSION=2.16.01 \
32+
CSPELL_VERSION=5.20.0 \
33+
MARKDOWNLINT_VERSION=0.32.2 \
34+
IASL_VERSION=20210105.0.6
4035

4136
# Work-around for azure pipelines adding the vsts_azpcontainer user, but not adding
4237
# the .local/bin directory to the path which will be used by pip.
43-
ENV PATH $PATH:/home/vsts_azpcontainer/.local/bin
38+
# Set environment variable to avoid interaction.
39+
ENV DEBIAN_FRONTEND=noninteractive \
40+
TZ=UTC \
41+
PATH=$PATH:/home/vsts_azpcontainer/.local/bin
4442

45-
RUN apt-get update && \
46-
apt-get install --yes --no-install-recommends \
43+
RUN echo "Installing needed system packages" \
44+
&& apt-get update \
45+
&& apt-get install --yes --no-install-recommends \
4746
bison \
4847
ca-certificates \
4948
curl \
@@ -62,13 +61,15 @@ RUN apt-get update && \
6261
sudo \
6362
unzip \
6463
uuid-dev \
65-
wget \
66-
&& \
67-
apt-get update && \
68-
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F23C5A6CF475977595C89F51BA6932366A755776 && \
69-
add-apt-repository ppa:deadsnakes/ppa -y && \
70-
apt-get update && \
71-
apt-get install --yes --no-install-recommends \
64+
wget && \
65+
echo "\n\n Adding keys, repos" \
66+
&& apt-get update \
67+
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F23C5A6CF475977595C89F51BA6932366A755776 \
68+
&& add-apt-repository ppa:deadsnakes/ppa -y && \
69+
70+
echo "\n\n Installing python/gcc" \
71+
&& apt-get update \
72+
&& apt-get install --yes --no-install-recommends \
7273
{% endraw %}python{{ sync_version.python_version }}{% raw %} \
7374
{% endraw %}python{{ sync_version.python_version }}{% raw %}-distutils \
7475
{% endraw %}python{{ sync_version.python_version }}{% raw %}-venv \
@@ -77,113 +78,141 @@ RUN apt-get update && \
7778
gcc-${GCC_MAJOR_VERSION}-aarch64-linux-gnu \
7879
gcc-${GCC_MAJOR_VERSION}-riscv64-linux-gnu \
7980
gcc-${GCC_MAJOR_VERSION}-arm-linux-gnueabi \
80-
gcc-${GCC_MAJOR_VERSION}-arm-linux-gnueabihf \
81-
&& \
82-
curl -O https://bootstrap.pypa.io/get-pip.py && \
83-
{% endraw %}python{{ sync_version.python_version }}{% raw %} get-pip.py && \
84-
{% endraw %}python{{ sync_version.python_version }}{% raw %} -m pip install --upgrade setuptools && \
85-
rm get-pip.py && \
86-
apt-get upgrade -y && \
87-
apt-get clean && \
88-
rm -rf /var/lib/apt/lists/*
89-
90-
ENV GCC5_AARCH64_PREFIX /usr/bin/aarch64-linux-gnu-
91-
ENV GCC5_ARM_PREFIX /usr/bin/arm-linux-gnueabi-
92-
ENV GCC5_RISCV64_PREFIX /usr/bin/riscv64-linux-gnu-
93-
94-
RUN pip install pip lcov_cobertura --upgrade
95-
96-
# RUN npm install -g npm
97-
RUN npm install -g \
81+
gcc-${GCC_MAJOR_VERSION}-arm-linux-gnueabihf && \
82+
&& curl -O https://bootstrap.pypa.io/get-pip.py \
83+
&& {% endraw %}python{{ sync_version.python_version }}{% raw %} get-pip.py \
84+
&& {% endraw %}python{{ sync_version.python_version }}{% raw %} -m pip install --upgrade setuptools \
85+
&& rm get-pip.py \
86+
&& apt-get upgrade -y && \
87+
88+
echo "\n\n Cleaning cache" \
89+
&& apt-get autoremove \
90+
&& apt-get clean \
91+
&& rm -rf /var/lib/apt/lists/*
92+
93+
ENV GCC5_AARCH64_PREFIX /usr/bin/aarch64-linux-gnu- \
94+
GCC5_ARM_PREFIX /usr/bin/arm-linux-gnueabi- \
95+
GCC5_RISCV64_PREFIX /usr/bin/riscv64-linux-gnu-
96+
97+
RUN echo "Upgrading pip/lcov_cobertura" \
98+
&& pip install pip lcov_cobertura --upgrade && \
99+
100+
echo "\n\n npm packages" \
101+
&& npm install -g \
98102
cspell@${CSPELL_VERSION} \
99-
markdownlint-cli@${MARKDOWNLINT_VERSION}
103+
markdownlint-cli@${MARKDOWNLINT_VERSION} && \
100104

101-
RUN wget -O - https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/nasm-${NASM_VERSION}.tar.gz | \
102-
tar xz && cd nasm-${NASM_VERSION} && \
103-
./autogen.sh && ./configure && make -j $(nproc) && make install && \
104-
cd .. && rm -rf nasm-${NASM_VERSION}
105+
echo "\n\n Building nasm" \
106+
&& wget -O - https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/nasm-${NASM_VERSION}.tar.gz | tar xz \
107+
&& cd nasm-${NASM_VERSION} \
108+
&& ./autogen.sh \
109+
&& ./configure \
110+
&& make -j $(nproc) \
111+
&& make install \
112+
&& cd .. \
113+
&& rm -rf nasm-${NASM_VERSION} && \
105114

106-
RUN mkdir -p iasl_temp && cd iasl_temp && \
107-
wget -O iasl_${IASL_VERSION}.nupkg "https://pkgs.dev.azure.com/projectmu/acpica/_apis/packaging/feeds/mu_iasl/nuget/packages/edk2-acpica-iasl/versions/${IASL_VERSION}/content?api-version=6.0-preview.1" && \
108-
unzip iasl_${IASL_VERSION}.nupkg -d /iasl_pkg_contents && \
109-
find /iasl_pkg_contents -type f -name "iasl" -exec cp {} /usr/bin \; && chmod +x /usr/bin/iasl && \
110-
cd .. && rm -rf iasl_temp
115+
echo "\n\n Iasl_temp" \
116+
&& mkdir -p iasl_temp \
117+
&& cd iasl_temp \
118+
&& wget -O iasl_${IASL_VERSION}.nupkg "https://pkgs.dev.azure.com/projectmu/acpica/_apis/packaging/feeds/mu_iasl/nuget/packages/edk2-acpica-iasl/versions/${IASL_VERSION}/content?api-version=6.0-preview.1" \
119+
&& unzip iasl_${IASL_VERSION}.nupkg -d /iasl_pkg_contents \
120+
&& find /iasl_pkg_contents -type f -name "iasl" -exec cp {} /usr/bin \; \
121+
&& chmod +x /usr/bin/iasl \
122+
&& cd .. \
123+
&& rm -rf iasl_temp && \
111124

112-
RUN wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb" && \
113-
dpkg -i packages-microsoft-prod.deb && rm packages-microsoft-prod.deb && \
114-
apt-get update && apt-get install -y powershell && apt-get clean
125+
echo "\n\n Installing microsoft-prod packages" \
126+
&& wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb" \
127+
&& dpkg -i packages-microsoft-prod.deb \
128+
&& rm packages-microsoft-prod.deb \
129+
&& apt-get update \
130+
&& apt-get install -y powershell && \
115131

132+
echo "\n\n Cleaning cache" \
133+
&& apt-get autoremove \
134+
&& apt-get clean \
135+
&& rm -rf /var/lib/apt/lists/*
136+
116137
#
117138
# Rust support
118139
#
119140

120-
ENV CARGO_HOME="$HOME/.cargo"
121-
ENV RUSTUP_HOME="$HOME/.rustup"
122-
ENV PATH="$CARGO_HOME/bin:$PATH"
141+
ENV CARGO_HOME="$HOME/.cargo" \
142+
RUSTUP_HOME="$HOME/.rustup" \
143+
PATH="$CARGO_HOME/bin:$PATH"
123144

124145
# Install Rust/Cargo and extras (rust-src, rust fmt, cargo-make, cargo-tarpaulin)
125-
RUN VERSION_URL="https://raw.githubusercontent.com/microsoft/mu_devops/main/.sync/Version.njk" && \
126-
RUST_VERSION=$(curl -s ${VERSION_URL} | grep -oP '(?<=rust_toolchain = ").*(?=")') && \
127-
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${RUST_VERSION} --profile minimal && \
128-
rustup component add rustfmt rust-src --toolchain ${RUST_VERSION}-x86_64-unknown-linux-gnu
129-
130-
RUN mkdir cargo_downloads && \
131-
cd cargo_downloads && \
132-
TAG_NAME=$(curl -s https://api.github.com/repos/sagiegurari/cargo-make/releases/latest | jq -r '.tag_name') && \
133-
DOWNLOAD_URL="https://github.com/sagiegurari/cargo-make/releases/download/$TAG_NAME/cargo-make-v$TAG_NAME-x86_64-unknown-linux-gnu.zip" && \
134-
curl -L -o cargo-make.zip "$DOWNLOAD_URL" && \
135-
unzip cargo-make.zip && \
136-
mv cargo-make-v$TAG_NAME-x86_64-unknown-linux-gnu/cargo-make $CARGO_HOME/bin/ && \
137-
TAG_NAME=$(curl -s https://api.github.com/repos/xd009642/tarpaulin/releases/latest | jq -r '.tag_name') && \
138-
DOWNLOAD_URL="https://github.com/xd009642/tarpaulin/releases/download/$TAG_NAME/cargo-tarpaulin-x86_64-unknown-linux-gnu.tar.gz" && \
139-
curl -L -o cargo-tarpaulin.tar.gz "$DOWNLOAD_URL" && \
140-
tar -xzvf cargo-tarpaulin.tar.gz && \
141-
mv cargo-tarpaulin $CARGO_HOME/bin/ && \
142-
cd .. && \
143-
rm -r cargo_downloads
146+
RUN echo "Installing Rust/Cargo and extras (rust-src, rust fmt)" \
147+
&& VERSION_URL="https://raw.githubusercontent.com/microsoft/mu_devops/main/.sync/Version.njk" \
148+
&& RUST_VERSION=$(curl -s ${VERSION_URL} | grep -oP '(?<=rust_toolchain = ").*(?=")') \
149+
&& curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${RUST_VERSION} --profile minimal \
150+
&& . /.cargo/env \
151+
&& rustup component add rustfmt rust-src --toolchain ${RUST_VERSION}-x86_64-unknown-linux-gnu && \
152+
153+
echo "\n\n Installing cargo-make, cargo-tarpaulin" \
154+
&& mkdir cargo_downloads \
155+
&& cd cargo_downloads \
156+
&& TAG_NAME=$(curl -s https://api.github.com/repos/sagiegurari/cargo-make/releases/latest | jq -r '.tag_name') \
157+
&& DOWNLOAD_URL="https://github.com/sagiegurari/cargo-make/releases/download/$TAG_NAME/cargo-make-v$TAG_NAME-x86_64-unknown-linux-gnu.zip" \
158+
&& curl -L -o cargo-make.zip "$DOWNLOAD_URL" \
159+
&& unzip cargo-make.zip \
160+
&& mv cargo-make-v$TAG_NAME-x86_64-unknown-linux-gnu/cargo-make $CARGO_HOME/bin/ \
161+
&& TAG_NAME=$(curl -s https://api.github.com/repos/xd009642/tarpaulin/releases/latest | jq -r '.tag_name') \
162+
&& DOWNLOAD_URL="https://github.com/xd009642/tarpaulin/releases/download/$TAG_NAME/cargo-tarpaulin-x86_64-unknown-linux-gnu.tar.gz" \
163+
&& curl -L -o cargo-tarpaulin.tar.gz "$DOWNLOAD_URL" \
164+
&& tar -xzvf cargo-tarpaulin.tar.gz \
165+
&& mv cargo-tarpaulin $CARGO_HOME/bin/ \
166+
&& cd .. \
167+
&& rm -r cargo_downloads
144168

145169
#
146170
# Alternatives
147171
#
148172
{% endraw %}
149173

150174
RUN update-alternatives \
151-
--install /usr/bin/python python /usr/bin/python{{ sync_version.python_version }} 1 && \
152-
update-alternatives \
153-
--install /usr/bin/python3 python3 /usr/bin/python{{ sync_version.python_version }} 1 && \
154-
update-alternatives \
175+
--install /usr/bin/python python /usr/bin/python{{ sync_version.python_version }} 1 \
176+
&& update-alternatives \
177+
--install /usr/bin/python3 python3 /usr/bin/python{{ sync_version.python_version }} 1 \
178+
&& update-alternatives \
155179
--install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_MAJOR_VERSION} 100 \
156180
--slave /usr/bin/g++ g++ /usr/bin/g++-${GCC_MAJOR_VERSION} \
157181
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-${GCC_MAJOR_VERSION} \
158182
--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-${GCC_MAJOR_VERSION} \
159183
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-${GCC_MAJOR_VERSION} \
160-
--slave /usr/bin/gcov gcov /usr/bin/gcov-${GCC_MAJOR_VERSION} && \
161-
update-alternatives \
162-
--install /usr/bin/cpp cpp /usr/bin/cpp-${GCC_MAJOR_VERSION} 100 && \
163-
update-alternatives \
184+
--slave /usr/bin/gcov gcov /usr/bin/gcov-${GCC_MAJOR_VERSION} \
185+
&& update-alternatives \
186+
--install /usr/bin/cpp cpp /usr/bin/cpp-${GCC_MAJOR_VERSION} 100 \
187+
&& update-alternatives \
164188
--install /usr/bin/aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc-${GCC_MAJOR_VERSION} 100 \
165189
--slave /usr/bin/aarch64-linux-gnu-cpp aarch64-linux-gnu-cpp /usr/bin/aarch64-linux-gnu-cpp-${GCC_MAJOR_VERSION} \
166190
--slave /usr/bin/aarch64-linux-gnu-g++ aarch64-linux-gnu-g++ /usr/bin/aarch64-linux-gnu-g++-${GCC_MAJOR_VERSION} \
167191
--slave /usr/bin/aarch64-linux-gnu-gcc-ar aarch64-linux-gnu-gcc-ar /usr/bin/aarch64-linux-gnu-gcc-ar-${GCC_MAJOR_VERSION} \
168192
--slave /usr/bin/aarch64-linux-gnu-gcc-nm aarch64-linux-gnu-gcc-nm /usr/bin/aarch64-linux-gnu-gcc-nm-${GCC_MAJOR_VERSION} \
169193
--slave /usr/bin/aarch64-linux-gnu-gcc-ranlib aarch64-linux-gnu-gcc-ranlib /usr/bin/aarch64-linux-gnu-gcc-ranlib-${GCC_MAJOR_VERSION} \
170-
--slave /usr/bin/aarch64-linux-gnu-gcov aarch64-linux-gnu-gcov /usr/bin/aarch64-linux-gnu-gcov-${GCC_MAJOR_VERSION} && \
171-
update-alternatives \
194+
--slave /usr/bin/aarch64-linux-gnu-gcov aarch64-linux-gnu-gcov /usr/bin/aarch64-linux-gnu-gcov-${GCC_MAJOR_VERSION} \
195+
&& update-alternatives \
172196
--install /usr/bin/arm-linux-gnueabi-gcc arm-linux-gnueabi-gcc /usr/bin/arm-linux-gnueabi-gcc-${GCC_MAJOR_VERSION} 100 \
173197
--slave /usr/bin/arm-linux-gnueabi-cpp arm-linux-gnueabi-cpp /usr/bin/arm-linux-gnueabi-cpp-${GCC_MAJOR_VERSION} \
174198
--slave /usr/bin/arm-linux-gnueabi-g++ arm-linux-gnueabi-g++ /usr/bin/arm-linux-gnueabi-g++-${GCC_MAJOR_VERSION} \
175199
--slave /usr/bin/arm-linux-gnueabi-gcc-ar arm-linux-gnueabi-gcc-ar /usr/bin/arm-linux-gnueabi-gcc-ar-${GCC_MAJOR_VERSION} \
176200
--slave /usr/bin/arm-linux-gnueabi-gcc-nm arm-linux-gnueabi-gcc-nm /usr/bin/arm-linux-gnueabi-gcc-nm-${GCC_MAJOR_VERSION} \
177201
--slave /usr/bin/arm-linux-gnueabi-gcc-ranlib arm-linux-gnueabi-gcc-ranlib /usr/bin/arm-linux-gnueabi-gcc-ranlib-${GCC_MAJOR_VERSION} \
178-
--slave /usr/bin/arm-linux-gnueabi-gcov arm-linux-gnueabi-gcov /usr/bin/arm-linux-gnueabi-gcov-${GCC_MAJOR_VERSION} && \
179-
update-alternatives \
202+
--slave /usr/bin/arm-linux-gnueabi-gcov arm-linux-gnueabi-gcov /usr/bin/arm-linux-gnueabi-gcov-${GCC_MAJOR_VERSION} \
203+
&& update-alternatives \
180204
--install /usr/bin/riscv64-linux-gnu-gcc riscv64-linux-gnu-gcc /usr/bin/riscv64-linux-gnu-gcc-${GCC_MAJOR_VERSION} 100 \
181205
--slave /usr/bin/riscv64-linux-gnu-cpp riscv64-linux-gnu-cpp /usr/bin/riscv64-linux-gnu-cpp-${GCC_MAJOR_VERSION} \
182206
--slave /usr/bin/riscv64-linux-gnu-g++ riscv64-linux-gnu-g++ /usr/bin/riscv64-linux-gnu-g++-${GCC_MAJOR_VERSION} \
183207
--slave /usr/bin/riscv64-linux-gnu-gcc-ar riscv64-linux-gnu-gcc-ar /usr/bin/riscv64-linux-gnu-gcc-ar-${GCC_MAJOR_VERSION} \
184208
--slave /usr/bin/riscv64-linux-gnu-gcc-nm riscv64-linux-gnu-gcc-nm /usr/bin/riscv64-linux-gnu-gcc-nm-${GCC_MAJOR_VERSION} \
185209
--slave /usr/bin/riscv64-linux-gnu-gcc-ranlib riscv64-linux-gnu-gcc-ranlib /usr/bin/riscv64-linux-gnu-gcc-ranlib-${GCC_MAJOR_VERSION} \
186-
--slave /usr/bin/riscv64-linux-gnu-gcov riscv64-linux-gnu-gcov /usr/bin/riscv64-linux-gnu-gcov-${GCC_MAJOR_VERSION}
210+
--slave /usr/bin/riscv64-linux-gnu-gcov riscv64-linux-gnu-gcov /usr/bin/riscv64-linux-gnu-gcov-${GCC_MAJOR_VERSION} && \
211+
212+
echo "\n\n\n Cleaning cache" \
213+
&& apt-get autoremove \
214+
&& apt-get clean \
215+
&& rm -rf /var/lib/apt/lists/*
187216

188217
{% raw %}
189218
#
@@ -192,10 +221,12 @@ RUN update-alternatives \
192221
#
193222
FROM build AS test
194223

195-
ARG QEMU_URL="https://gitlab.com/qemu-project/qemu.git"
196-
ARG QEMU_BRANCH="v9.0.0"
224+
ARG QEMU_URL="https://gitlab.com/qemu-project/qemu.git" \
225+
QEMU_BRANCH="v9.0.0"
197226

198-
RUN apt-get update && apt-get install --yes --no-install-recommends \
227+
RUN echo "Installing needed software" \
228+
&& apt-get update \
229+
&& apt-get install --yes --no-install-recommends \
199230
autoconf \
200231
automake \
201232
autotools-dev \
@@ -211,25 +242,37 @@ RUN apt-get update && apt-get install --yes --no-install-recommends \
211242
ninja-build \
212243
tar \
213244
&& \
214-
git clone "${QEMU_URL}" --branch "${QEMU_BRANCH}" --depth 1 qemu && \
215-
cd qemu && \
216-
./configure --target-list=x86_64-softmmu,aarch64-softmmu --enable-gtk && \
217-
make install -j $(nproc) && \
218-
cd .. && \
219-
rm -rf qemu && \
220-
apt remove --yes ninja-build && \
221-
apt-get clean
245+
246+
echo "\n\n Installing/Building qemu" \
247+
&& git clone "${QEMU_URL}" --branch "${QEMU_BRANCH}" --depth 1 qemu \
248+
&& cd qemu \
249+
&& ./configure --target-list=x86_64-softmmu,aarch64-softmmu --enable-gtk \
250+
&& make install -j $(nproc) \
251+
&& cd .. \
252+
&& rm -rf qemu \
253+
&& apt-get remove --yes ninja-build && \
254+
255+
echo "\n\n Cleaning cache" \
256+
&& apt-get autoremove \
257+
&& apt-get clean \
258+
&& rm -rf /var/lib/apt/lists/*
222259

223260
#
224261
# The dev container layer is intended for local use and has more robust tooling
225262
# and environment configurations for developers.
226263
#
227264
FROM test AS dev
228265

229-
RUN apt-get update && \
230-
apt-get install --yes --no-install-recommends \
266+
RUN echo "Installing nano/less" \
267+
&& apt-get update \
268+
&& apt-get install --yes --no-install-recommends \
231269
nano \
232270
less \
233271
&& \
234-
apt-get clean
272+
273+
echo "\n\n Cleaning cache" \
274+
&& apt-get autoremove \
275+
&& apt-get clean \
276+
&& rm -rf /var/lib/apt/lists/*
277+
235278
{% endraw %}

0 commit comments

Comments
 (0)