Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/docker-image-upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ jobs:
- name: Build and push build-su2
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 -t ghcr.io/${{ github.repository_owner }}/su2/build-su2:${{ steps.vars.outputs.date_tag }} --push ./build/

- name: Build and push build-su2-tsan
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 -t ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan:${{ steps.vars.outputs.date_tag }} --push --file ./build/Dockerfile.tsan ./build/

test-su2:
needs: [build-su2]
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
Expand Down Expand Up @@ -71,6 +74,9 @@ jobs:
- name: Build and push test-su2
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2:${{ needs.build-su2.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/test-su2:${{ needs.build-su2.outputs.date_tag }} --push ./test/

- name: Build and push test-su2-tsan
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan:${{ needs.build-su2.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/test-su2-tsan:${{ needs.build-su2.outputs.date_tag }} --push ./test/

cross-build-su2-mac:
needs: [build-su2]
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
Expand Down
65 changes: 65 additions & 0 deletions build/Dockerfile.tsan
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
FROM ubuntu:20.04

LABEL org.opencontainers.image.source https://github.com/su2code/Docker-Builds

ENV LANG C.UTF-8
RUN ln -fs /usr/share/zoneinfo/UTC /etc/localtime
RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y \
apt-utils \
python3 \
pkg-config \
python3-pip \
git \
build-essential \
cmake \
python3-numpy \
python3-scipy \
python3-mpi4py \
swig \
libopenmpi-dev \
libopenblas-dev \
openmpi-bin \
ccache \
petsc-dev \
python3-petsc4py \
python3-rtree \
curl \
flex \
&& rm -rf /var/lib/apt/lists/* \
&& update-alternatives --install /usr/bin/python python /usr/bin/python3 10

# Build a gcc suitable for thread sanitizer analysis
RUN cd / \
&& git clone git://gcc.gnu.org/git/gcc.git gcc_sources \
&& cd gcc_sources \
&& git checkout releases/gcc-9.4.0 \
&& ./contrib/download_prerequisites \
&& cd / \
&& mkdir gcc_objdir \
&& cd gcc_objdir \
&& /gcc_sources/configure --prefix=/gcc_install --enable-languages=c,c++ --disable-linux-futex --disable-multilib \
&& make \
&& make install \
&& cd / \
&& rm -rf gcc_sources \
&& rm -rf gcc_objdir \
&& cd /gcc_install/bin \
&& ln -s gcc cc

# Ensure that ccache uses the built gcc
RUN export PATH=/gcc_install/bin:$PATH \
&& /usr/sbin/update-ccache-symlinks

# Configure environment for the built gcc, also enable thread sanitizer
ENV LD_LIBRARY_PATH=/gcc_install/lib64:$LD_LIBRARY_PATH
ENV CXXFLAGS="-I/gcc_install/include/c++/9.4.0 -I/gcc_install/include/c++/9.4.0/x86_64-pc-linux-gnu -fsanitize=thread"
ENV CFLAGS="-I/gcc_install/include/c++/9.4.0 -I/gcc_install/include/c++/9.4.0/x86_64-pc-linux-gnu -fsanitize=thread"
ENV LDFLAGS="-L/gcc_install/lib64 -fsanitize=thread"
ENV PATH=/usr/lib/ccache:/gcc_install/bin:$PATH
ENV TSAN_OPTIONS="history_size=7 halt_on_error=1"

# Copies your code file from your action repository to the filesystem path `/` of the container
COPY compileSU2.sh /compileSU2.sh

# Code file to execute when the docker container starts up (`entrypoint.sh`)
ENTRYPOINT ["/compileSU2.sh"]