Skip to content

Commit bf26740

Browse files
authored
Upgrade Docker build process to work with mitsuba2-next on a local dev env (eradiate#165)
* Upgrade the docker build process to the latest mitsuba2 kernel * Remove docker build schedule. Build docker image on tags and manual triggers only * Add environment variable to configure Mitsuba2 compilation parallelism, 4 cores by default * Add documentation on docker compilation parallelism control * Docker: Fix Mitsuba build not using Eradiate presets * Upgrade cmake * Add missing libLLVM
1 parent f82d666 commit bf26740

File tree

6 files changed

+21
-27
lines changed

6 files changed

+21
-27
lines changed

.github/workflows/docker.yml

+1-5
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@ name: Docker build
66
on:
77
# Triggers the workflow on push or pull request events but only for the main branch
88
push:
9-
tags: [ v*.*.* ]
10-
11-
# Trigger every day at 23:42
12-
schedule:
13-
- cron: '42 23 * * *'
9+
tags: [ 'v*.*.*', 'build_*' ]
1410

1511
# Allows you to run this workflow manually from the Actions tab
1612
workflow_dispatch:

docker-build.yml

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ services:
2424
BASE_IMAGE: ${REGISTRY:-rayference}/eradiate-base
2525
BASE_IMAGE_VERSION: ${VERSION:-dirty}
2626
ERADIATE_KERNEL_VERSION: ${VERSION:-dirty}
27+
NUM_CORES: ${NUM_CORES:-4}
2728

2829
# Contains a properly configured Eradiate kernel
2930
eradiate-kernel:

docker/eradiate-kernel-builder/Dockerfile

+8-7
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,29 @@ ARG BASE_IMAGE_VERSION
44
FROM ${BASE_IMAGE}:${BASE_IMAGE_VERSION}
55

66
ARG ERADIATE_KERNEL_VERSION
7+
ARG NUM_CORES=4
78

89
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
9-
cmake \
1010
git \
1111
ninja-build \
1212
clang-9 \
1313
libc++-9-dev \
1414
libc++abi-9-dev \
1515
libpng-dev \
1616
zlib1g-dev \
17+
build-essential \
1718
libjpeg-dev
1819

20+
RUN conda install -y cmake
21+
1922
ENV CC=clang-9
2023
ENV CXX=clang++-9
2124

2225
COPY . /sources/eradiate
2326
WORKDIR /sources/eradiate
2427
RUN make conda-init
25-
RUN git submodule update --init --recursive
2628

27-
RUN mkdir -p /build/eradiate-kernel \
28-
&& cd /build/eradiate-kernel \
29-
&& cmake -GNinja -DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)") /sources/eradiate/ext/mitsuba2 \
30-
&& ninja \
31-
&& tar -cvf eradiate-kernel-dist_${ERADIATE_KERNEL_VERSION}.tar ./dist
29+
WORKDIR /build/eradiate-kernel
30+
RUN cmake --preset default -S /sources/eradiate -B .
31+
RUN cmake --build . -j${NUM_CORES}
32+

docker/eradiate-kernel/Dockerfile

+5-9
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,14 @@ FROM ${BASE_IMAGE}:${BASE_IMAGE_VERSION}
99

1010
ARG ERADIATE_KERNEL_VERSION
1111

12-
COPY --from=build /build/eradiate-kernel/eradiate-kernel-dist_${ERADIATE_KERNEL_VERSION}.tar /build/mitsuba/
12+
COPY --from=build /build/eradiate-kernel /mitsuba
1313

14-
RUN apt-get update && DEBIAN_FRONTEND="noninteractive" apt-get install -y ninja-build cmake libc++-9-dev libz-dev libpng-dev libjpeg-dev libxrandr-dev libxinerama-dev libxcursor-dev
14+
RUN apt-get update && DEBIAN_FRONTEND="noninteractive" apt-get install -y ninja-build cmake libc++-9-dev libz-dev libpng-dev libjpeg-dev libxrandr-dev libxinerama-dev libxcursor-dev llvm-9
1515

16-
RUN mkdir -p /build/mistuba /mitsuba && cd /build/mitsuba && tar -xf eradiate-kernel-dist_${ERADIATE_KERNEL_VERSION}.tar \
17-
&& mv dist /mitsuba/dist \
18-
&& cd / && rm -rf /build
19-
20-
ENV MITSUBA_DIR=/mitsuba
16+
ENV MITSUBA_DIR=/mitsuba/ext/mitsuba2
2117
WORKDIR /app
2218

23-
ENV PYTHONPATH="$MITSUBA_DIR/dist/python"
24-
ENV PATH="$MITSUBA_DIR/dist:$PATH"
19+
ENV PYTHONPATH="$MITSUBA_DIR/python"
20+
ENV PATH="$MITSUBA_DIR:$PATH"
2521

2622
CMD mitsuba --help

docker/eradiate/Dockerfile

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ COPY --from=build /sources/eradiate /sources/eradiate
1313

1414
WORKDIR /sources/eradiate
1515

16-
RUN wget https://eradiate.eu/data/solid_2017.zip \
17-
&& wget https://eradiate.eu/data/us76_u86_4-spectra.zip \
18-
&& cd resources/data && (unzip ../../solid_2017.zip || true) \
19-
&& (unzip ../../spectra-us76_u86_4.zip || true)
16+
SHELL ["conda", "run", "-n", "docker", "/bin/bash", "-c"]
2017

18+
ENV LD_LIBRARY_PATH=/mitsuba/ext/mitsuba2
2119
ENV ERADIATE_DIR=/sources/eradiate
2220

2321
RUN make conda-init
2422

23+
RUN ertdownload
24+
2525
WORKDIR /app

docs/rst/getting_started/docker.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -207,5 +207,5 @@ A ``docker-compose`` config file named ``docker-build.yml`` is provided at the r
207207

208208
.. code:: bash
209209
210-
# Build all docker images specifying a custom version
211-
VERSION=myLocalVersion docker-compose -f docker-build.yml build
210+
# Build all docker images specifying a custom version, using 16 cores
211+
VERSION=myLocalVersion NUM_CORES=16 docker-compose -f docker-build.yml build

0 commit comments

Comments
 (0)