@@ -12,6 +12,7 @@ ARG PIP_DOWNLOAD_CACHE=/.cache/pip
1212ARG UV_CACHE_DIR=/.cache/uv
1313# UV Cache directory. Change this only if you need to override the default location.
1414
15+ FROM ghcr.io/astral-sh/uv:latest AS uv_builder
1516
1617FROM ubuntu:22.04 AS base_image
1718RUN rm -f /etc/apt/apt.conf.d/docker-clean
@@ -37,7 +38,7 @@ RUN --mount=type=cache,target=/var/cache/apt \
3738 rm -rf /var/lib/apt/lists/*
3839
3940# ==============================================================================
40- FROM base_image AS DR_MEMORY_BUILDER
41+ FROM base_image AS dr_memory_builder
4142RUN apt-get update && \
4243 apt-get install -y --no-install-recommends wget
4344
@@ -48,7 +49,7 @@ RUN wget --no-verbose https://github.com/DynamoRIO/drmemory/releases/download/re
4849 drmemory -version
4950
5051
51- FROM base_image AS SONAR_BUILDER
52+ FROM base_image AS sonar_builder
5253
5354RUN case $(uname -m) in \
5455 x86_64) URL=https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip ;; \
@@ -70,30 +71,30 @@ ARG PIP_INDEX_URL
7071ARG UV_EXTRA_INDEX_URL
7172ARG UV_INDEX_URL
7273
73- COPY conanfile.py /tmp/conanfile.py
74+ COPY --from=uv_builder /uv /uvx /bin/
7475COPY ci/docker/linux/shared/ensure_compiler_support_by_conan.py /tmp/ensure_compiler_support_by_conan.py
75- COPY requirements-dev.txt /tmp/requirements-dev.txt
7676ARG UV_CACHE_DIR
7777ARG PIP_DOWNLOAD_CACHE
7878ARG CONAN_CENTER_PROXY_V2_URL
7979ARG CONAN_HOME
80- ENV UV_CONSTRAINT =/tmp/requirements-dev.txt
81-
80+ ENV UV_PROJECT =/tmp/uv
81+ ENV UV_FROZEN=1
8282COPY ci/docker/linux/jenkins/conan/profile.ini ${CONAN_HOME}/profiles/default
8383COPY ci/docker/shared/conan/remotes.json ${CONAN_HOME}/remotes.json
8484RUN --mount=type=cache,target=${PIP_DOWNLOAD_CACHE} \
8585 --mount=type=cache,target=${UV_CACHE_DIR} \
86- python3 -m venv venv && \
87- venv/bin/pip install --no-cache --disable-pip-version-check uv && \
88- venv/bin/uvx --with cmake conan profile detect --exist-ok && \
89- python3 /tmp/ensure_compiler_support_by_conan.py $(venv/bin/uvx --with cmake conan config home)/settings.yml 11.4 && \
86+ --mount=type=bind,source=pyproject.toml,target=${UV_PROJECT}/pyproject.toml \
87+ --mount=type=bind,source=uv.lock,target=${UV_PROJECT}/uv.lock \
88+ --mount=type=bind,source=conanfile.py,target=/tmp/conanfile.py \
89+ uv run --only-group=conan conan profile detect --exist-ok && \
90+ python3 /tmp/ensure_compiler_support_by_conan.py $(uv run --only-group=conan conan config home)/settings.yml 11.4 && \
9091 if [ "$(jq -r '.remotes[0].url' ${CONAN_HOME}/remotes.json )" != "${CONAN_CENTER_PROXY_V2_URL}" ]; then \
9192 echo "Setting the conan center url for building cache: ${CONAN_CENTER_PROXY_V2_URL}" && \
9293 cp ${CONAN_HOME}/remotes.json /tmp/remotes.json && \
93- ./venv/bin/uvx --with cmake conan remote update conan-center --url ${CONAN_CENTER_PROXY_V2_URL}; \
94+ uv run --only-group=conan conan remote update conan-center --url ${CONAN_CENTER_PROXY_V2_URL}; \
9495 fi && \
95- venv/bin/uvx --with cmake conan install /tmp --build missing -pr:b=default && \
96- venv/bin/uvx --with cmake conan cache clean "*" -b --source --build --temp && \
96+ uv run --only-group=conan conan install /tmp --build missing -pr:b=default && \
97+ uv run --only-group=conan conan cache clean "*" -b --source --build --temp && \
9798 rm -rf venv && \
9899 if [ "$(jq -r '.remotes[0].url' ${CONAN_HOME}/remotes.json )" != "${CONAN_CENTER_PROXY_V2_URL}" ]; then \
99100 mv -f /tmp/remotes.json ${CONAN_HOME}/remotes.json; \
@@ -108,7 +109,7 @@ FROM base_image
108109# Install sonar build-wrapper
109110# -----------------------------------------------------------------------------
110111
111- COPY --from=SONAR_BUILDER /opt/build-wrapper-linux /opt/build-wrapper-linux/
112+ COPY --from=sonar_builder /opt/build-wrapper-linux /opt/build-wrapper-linux/
112113
113114RUN case $(uname -m) in \
114115 x86_64) ln -s /opt/build-wrapper-linux/build-wrapper-linux-x86/build-wrapper-linux-x86-64 /usr/local/bin/build-wrapper-linux ;; \
@@ -120,7 +121,7 @@ ENV SONAR_SCANNER_OPTS="-server"
120121# -----------------------------------------------------------------------------
121122# Install Doctor memory
122123# -----------------------------------------------------------------------------
123- COPY --from=DR_MEMORY_BUILDER /opt/drmemory /opt/drmemory/
124+ COPY --from=dr_memory_builder /opt/drmemory /opt/drmemory/
124125RUN ln -s /opt/drmemory/bin64/drmemory /usr/local/bin/drmemory && \
125126 drmemory -version
126127
@@ -132,6 +133,5 @@ ARG CONAN_USER_HOME
132133ENV CONAN_USER_HOME=${CONAN_USER_HOME}
133134ARG CONAN_HOME
134135ENV CONAN_HOME=${CONAN_HOME}
135- COPY --from=conan_builder ${CONAN_HOME} ${CONAN_HOME}
136- RUN chmod -R 777 ${CONAN_HOME}
136+ COPY --from=conan_builder --chmod=777 ${CONAN_HOME} ${CONAN_HOME}
137137ENV TZ=UTC
0 commit comments