Skip to content

Commit

Permalink
add recent compilers and new builds for updated CI jobs
Browse files Browse the repository at this point in the history
  • Loading branch information
phlptp committed May 3, 2024
1 parent 32ddae5 commit 79c1c1a
Show file tree
Hide file tree
Showing 19 changed files with 277 additions and 15 deletions.
2 changes: 1 addition & 1 deletion clang-extra-tools/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ RUN apk add --no-cache \
zeromq-dev

LABEL maintainer="[email protected]"
LABEL date="2023-03-03"
LABEL date="2024-05-03"
3 changes: 3 additions & 0 deletions clang-format/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@ RUN apk add --no-cache \
build-base \
cmake \
clang

LABEL maintainer="[email protected]"
LABEL date="2024-05-03"
21 changes: 21 additions & 0 deletions clang15-builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM ubuntu:24.04 as clang15-builder

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y \
default-jdk python3-dev python3-pip libzmq5-dev build-essential \
clang-15 clang-tidy-15 libc++-15-dev libc++abi-15-dev libstdc++-13-dev \
libsodium-dev libssl-dev openssl \
cmake git wget swig mpich libboost-dev ca-certificates \
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
&& pip3 install pytest \
&& ln -s /usr/bin/llvm-symbolizer-15 /usr/bin/llvm-symbolizer \
&& ln -s /usr/bin/clang++-15 /usr/bin/clang++ \
&& ln -s /usr/bin/clang-15 /usr/bin/clang \
&& ln -s /usr/bin/clang-tidy-15 /usr/bin/clang-tidy

ENV CC=/usr/bin/clang
ENV CXX=/usr/bin/clang++

LABEL maintainer="[email protected]"
LABEL date="2024-05-03"
21 changes: 21 additions & 0 deletions clang16-builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM ubuntu:22.04 as clang14-builder

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y \
default-jdk python3-dev python3-pip libzmq5-dev build-essential \
clang-16 clang-tidy-16 libc++-16-dev libc++abi-16-dev libstdc++-13-dev \
libsodium-dev libssl-dev openssl \
cmake git wget swig mpich libboost-dev ca-certificates \
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
&& pip3 install pytest \
&& ln -s /usr/bin/llvm-symbolizer-16 /usr/bin/llvm-symbolizer \
&& ln -s /usr/bin/clang++-16 /usr/bin/clang++ \
&& ln -s /usr/bin/clang-16 /usr/bin/clang \
&& ln -s /usr/bin/clang-tidy-16 /usr/bin/clang-tidy

ENV CC=/usr/bin/clang
ENV CXX=/usr/bin/clang++

LABEL maintainer="[email protected]"
LABEL date="2024-05-03"
21 changes: 21 additions & 0 deletions clang17-builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM ubuntu:24.04 as clang14-builder

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y \
default-jdk python3-dev python3-pip libzmq5-dev build-essential \
clang-17 clang-tidy-17 libc++-17-dev libc++abi-17-dev libstdc++-13-dev \
libsodium-dev libssl-dev openssl \
cmake git wget swig mpich libboost-dev ca-certificates \
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
&& pip3 install pytest \
&& ln -s /usr/bin/llvm-symbolizer-17 /usr/bin/llvm-symbolizer \
&& ln -s /usr/bin/clang++-17 /usr/bin/clang++ \
&& ln -s /usr/bin/clang-17 /usr/bin/clang \
&& ln -s /usr/bin/clang-tidy-17 /usr/bin/clang-tidy

ENV CC=/usr/bin/clang
ENV CXX=/usr/bin/clang++

LABEL maintainer="[email protected]"
LABEL date="2024-05-03"
21 changes: 21 additions & 0 deletions clang18-builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM ubuntu:24.04 as clang14-builder

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y \
default-jdk python3-dev python3-pip libzmq5-dev build-essential \
clang-18 clang-tidy-18 libc++-18-dev libc++abi-18-dev libstdc++-13-dev \
libsodium-dev libssl-dev openssl \
cmake git wget swig mpich libboost-dev ca-certificates \
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
&& pip3 install pytest \
&& ln -s /usr/bin/llvm-symbolizer-18 /usr/bin/llvm-symbolizer \
&& ln -s /usr/bin/clang++-18 /usr/bin/clang++ \
&& ln -s /usr/bin/clang-18 /usr/bin/clang \
&& ln -s /usr/bin/clang-tidy-18 /usr/bin/clang-tidy

ENV CC=/usr/bin/clang
ENV CXX=/usr/bin/clang++

LABEL maintainer="[email protected]"
LABEL date="2024-05-03"
6 changes: 3 additions & 3 deletions cppcheck2/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This Dockerfile creates an image with cppcheck2.0

FROM ubuntu:22.04 as builder
FROM ubuntu:24.04 as builder

# Installs dependencies needed for building, with headers needed for development
ENV DEBIAN_FRONTEND=noninteractive
Expand All @@ -19,14 +19,14 @@ RUN make -j4 && make install


# Create an image for generating HELICS interfaces
FROM ubuntu:22.04 as Hbase
FROM ubuntu:24.04 as Hbase

# Install the tools for building
RUN apt update && apt install -y libz3-4 libpcre3 \
&& apt-get clean && rm -rf /var/lib/apt/lists/*

LABEL maintainer="[email protected]"
LABEL date="2022-05-16"
LABEL date="2024-05-03"

# Copy cppcheck to the install location
COPY --from=builder /usr/local/share/Cppcheck /usr/local/share/Cppcheck
Expand Down
2 changes: 1 addition & 1 deletion cpplint/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
FROM python

LABEL maintainer="[email protected]"
LABEL date="2023-03-07"
LABEL date="2024-05-03"

# currently version 1.6.1
RUN pip install cpplint
20 changes: 20 additions & 0 deletions gcc14-builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
FROM ubuntu:24.04 as builder

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y \
default-jdk python3-dev python3-pip python3-pytest libzmq5-dev libboost-filesystem-dev \
libboost-system-dev libboost-test-dev libboost-date-time-dev \
g++-14 gcc-14 mpi-default-dev libsuitesparse-dev \
libsodium-dev libssl-dev openssl \
cmake git wget swig && apt-get install -y --no-install-recommends \
pkg-config libboost-dev make && apt-get clean && rm -rf /var/lib/apt/lists/*

RUN rm /usr/bin/gcc && ln -s /usr/bin/gcc-14 /usr/bin/gcc \
&& rm /usr/bin/g++ && ln -s /usr/bin/g++-14 /usr/bin/g++ \
&& rm /usr/bin/gcc-ar && ln -s /usr/bin/gcc-ar-14 /usr/bin/gcc-ar \
&& rm /usr/bin/gcc-nm && ln -s /usr/bin/gcc-nm-14 /usr/bin/gcc-nm \
&& rm /usr/bin/gcc-ranlib && ln -s /usr/bin/gcc-ranlib-14 /usr/bin/gcc-ranlib

LABEL maintainer="[email protected]"
LABEL date="2024-05-03"
12 changes: 12 additions & 0 deletions octave-8/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Used for valgrind runs
FROM helics/buildenv:ubuntu24.04-default-builder as builder

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y --no-install-recommends \
libzmq5 octave liboctave-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

LABEL maintainer="[email protected]"
LABEL date="2024-05-03"
60 changes: 60 additions & 0 deletions sanitizers-18/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
FROM helics/buildenv:clang18-builder as builder

WORKDIR /root/develop

RUN apt update && apt install -y ninja-build

RUN git clone https://github.com/llvm/llvm-project.git

# Sets the number of threads for make to use
ARG MAKE_PARALLEL

# Build the Memory sanitizer libraries
RUN mkdir libcxx_msan_build && mkdir libcxx_msan_install && cd libcxx_msan_build && cmake -GNinja -S runtimes ../llvm-project/runtimes -DCMAKE_INSTALL_PREFIX=/root/develop/libcxx_msan_install -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DLLVM_USE_SANITIZER=MemoryWithOrigins -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
RUN cd libcxx_msan_build && cmake --build . -j 3 -- cxx cxxabi
RUN cd libcxx_msan_build && ninja install-cxx install-cxxabi

RUN mkdir -p /root/develop/libcxx_msan/include && cp -r /root/develop/libcxx_msan_install/include/* /root/develop/libcxx_msan/include/
RUN mkdir -p /root/develop/libcxx_msan/lib && cp -r /root/develop/libcxx_msan_install/lib/* /root/develop/libcxx_msan/lib/

# Build the ASAN libraries
COPY asan_suppression.txt .
ENV ASAN_OPTIONS="detect_odr_violation=0"
RUN mkdir libcxx_asan_build && mkdir libcxx_asan_install && cd libcxx_asan_build && cmake -GNinja -S runtimes ../llvm-project/runtimes -DCMAKE_INSTALL_PREFIX=/root/develop/libcxx_asan_install -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-fsanitize-ignorelist=/root/develop/asan_suppression.txt" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DLLVM_USE_SANITIZER=Address -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
RUN cd libcxx_asan_build && cmake --build . -j 3 -- cxx cxxabi
RUN cd libcxx_asan_build && ninja install-cxx install-cxxabi

RUN mkdir -p /root/develop/libcxx_asan/include && cp -r /root/develop/libcxx_asan_install/include/* /root/develop/libcxx_asan/include/
RUN mkdir -p /root/develop/libcxx_asan/lib && cp -r /root/develop/libcxx_asan_install/lib/* /root/develop/libcxx_asan/lib/

# Build the tsan libraries
RUN mkdir libcxx_tsan_build && mkdir libcxx_tsan_install&& cd libcxx_tsan_build && cmake -GNinja -S runtimes ../llvm-project/runtimes -DCMAKE_INSTALL_PREFIX=/root/develop/libcxx_tsan_install -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DLLVM_USE_SANITIZER=Thread -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
RUN cd libcxx_tsan_build && cmake --build . -j 2 -- cxx cxxabi
RUN cd libcxx_tsan_build && ninja install-cxx install-cxxabi

RUN mkdir -p /root/develop/libcxx_tsan/include && cp -r /root/develop/libcxx_tsan_install/include/* /root/develop/libcxx_tsan/include/
RUN mkdir -p /root/develop/libcxx_tsan/lib && cp -r /root/develop/libcxx_tsan_install/lib/* /root/develop/libcxx_tsan/lib/

FROM helics/buildenv:clang18-builder

ENV DEBIAN_FRONTEND=noninteractive

# last updated 2024-05-03

# Copy the built libraries from the builder images
COPY --from=builder /root/develop/libcxx_asan /root/develop/libcxx_asan
COPY --from=builder /root/develop/libcxx_tsan /root/develop/libcxx_tsan
COPY --from=builder /root/develop/libcxx_msan /root/develop/libcxx_msan

# Copy scripts to build and run HELICS with the sanitizers
COPY helics_build_run_*.sh /root/develop/

ENV ASAN_CFLAGS="-fsanitize=undefined,address -nostdinc++ -nostdlib++ -L/root/develop/libcxx_asan/lib -lc++ -lc++abi -I/root/develop/libcxx_asan/include -fsanitize-address-use-after-scope -Wno-unused-command-line-argument -fno-omit-frame-pointer -g -O1 -Wl,-rpath,/root/develop/libcxx_asan/lib"

ENV ASAN_OPTIONS="detect_odr_violation=0"
ENV MSAN_CFLAGS="-fsanitize=memory -nostdinc++ -nostdlib++ -L/root/develop/libcxx_msan/lib -lc++ -lc++abi -I/root/develop/libcxx_msan/include -I/root/develop/libcxx_msan/include/c++/v1 -Wno-unused-command-line-argument -fno-omit-frame-pointer -g -O1 -Wl,-rpath,/root/develop/libcxx_msan/lib"

ENV TSAN_CFLAGS="-fsanitize=thread -nostdinc++ -nostdlib++ -L/root/develop/libcxx_tsan/lib -lc++ -lc++abi -I/root/develop/libcxx_tsan/include -I/root/develop/libcxx_tsan/include/c++/v1 -Wno-unused-command-line-argument -fno-omit-frame-pointer -g -O2 -Wl,-rpath,/root/develop/libcxx_tsan/lib"

LABEL maintainer="[email protected]"
LABEL date="2024-05-03"
22 changes: 22 additions & 0 deletions sanitizers-18/asan_suppression.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Lines starting with # are ignored.
# Turn off checks for the source file (use absolute path or path relative
# to the current working directory):
src:*functional.cpp
# Turn off checks for a particular functions (use mangled names):
#fun:MyFooBar
#fun:_Z8MyFooBarv
# Extended regular expressions are supported:
#fun:bad_(foo|bar)
#src:bad_source[1-9].c
# Shell like usage of * is supported (* is treated as .*):
#src:bad/sources/*
#fun:*BadFunction*
# Specific sanitizer tools may introduce categories.
#src:/special/path/*=special_sources
# Sections can be used to limit ignorelist entries to specific sanitizers
#[address]
#fun:*BadASanFunc*
# Section names are regular expressions
#[cfi-vcall|cfi-icall]
#fun:*BadCfiCall
# Entries without sections are placed into [*] and apply to all sanitizers
10 changes: 10 additions & 0 deletions sanitizers-18/helics_build_run_asan.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/bash
git clone https://github.com/GMLC-TDC/HELICS.git
cd HELICS
mkdir build-asan
cd build-asan
cmake .. -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_FLAGS="${ASAN_CFLAGS}" -DHELICS_BUILD_TESTS=ON -DHELICS_ZMQ_SUBPROJECT=ON -DHELICS_ZMQ_FORCE_SUBPROJECT=ON
cd /root/develop/HELICS/build-asan
make -j2

./sanitizer_tests.sh
10 changes: 10 additions & 0 deletions sanitizers-18/helics_build_run_msan.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/bash
git git clone --recurse-submodules --branch develop https://github.com/GMLC-TDC/HELICS.git
cd HELICS
mkdir build-msan
cd build-msan
cmake .. -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_FLAGS="${MSAN_CFLAGS}" -DHELICS_BUILD_TESTS=ON -DHELICS_ZMQ_SUBPROJECT=ON -DHELICS_ZMQ_FORCE_SUBPROJECT=ON
cd /root/develop/HELICS/build-msan
make -j2

./sanitizer_tests.sh
10 changes: 10 additions & 0 deletions sanitizers-18/helics_build_run_tsan.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/bash
git clone --recurse-submodules --branch develop https://github.com/GMLC-TDC/HELICS.git
cd HELICS
mkdir build-tsan
cd build-tsan
cmake .. -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_FLAGS="${TSAN_CFLAGS}" -DHELICS_BUILD_TESTS=ON -DHELICS_ZMQ_SUBPROJECT=ON -DHELICS_ZMQ_FORCE_SUBPROJECT=ON
cd /root/develop/HELICS/build-tsan
make -j2

./sanitizer_tests.sh
19 changes: 19 additions & 0 deletions sanitizers-18/sanitizer_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash
tests=(
tests/helics/core/core-tests
tests/helics/common/common-tests
"tests/helics/system_tests/system-tests --gtest_filter=-*realtime*"
build/tests/helics/apps/helics_apps-tests
)

SUMRESULT=0
for test in "${tests[@]}"; do
echo "${test}"
eval "${test}"
RESULT=$?
echo "***Latest test result: "${RESULT}
SUMRESULT=$(( SUMRESULT + RESULT ))
done
# Return 0 or a positive integer for failure
exit ${SUMRESULT}

4 changes: 2 additions & 2 deletions tumbleweed-builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
FROM opensuse/tumbleweed:latest

# 2022-05-21
# 2024-05-03
LABEL maintainer="[email protected]"
LABEL date="2022-05-21"
LABEL date="2024-05-03"

#install the required components for building HELICS
RUN zypper mr -d openSUSE-Tumbleweed-Update && zypper install -y make gcc-c++ boost-devel cmake git libzmq5 zeromq-devel && zypper clean -a
Expand Down
17 changes: 17 additions & 0 deletions ubuntu24.04-default-builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM ubuntu:24.04 as builder

ENV DEBIAN_FRONTEND=noninteractive

ENV PYTHONPATH /usr/local/python

RUN apt update && apt install -y \
default-jdk python3-full python3-dev python3-pip libzmq5-dev libboost-filesystem-dev \
libboost-system-dev libboost-test-dev libboost-date-time-dev \
g++ gcc cmake git curl wget swig lcov mpi-default-dev \
libsodium-dev libssl-dev openssl python3-pytest \
&& apt-get install -y --no-install-recommends \
pkg-config libboost-dev make \
&& apt-get clean && rm -rf /var/lib/apt/lists/*

LABEL maintainer="[email protected]"
LABEL date="2024-05-04"
11 changes: 3 additions & 8 deletions valgrind-builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
# Used for valgrind runs
FROM ubuntu:22.04 as builder
FROM helics/buildenv:ubuntu24.04-default-builder as builder

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y \
default-jdk python3-dev python3-pip libzmq5-dev libboost-filesystem-dev \
libboost-system-dev libboost-test-dev libboost-date-time-dev \
g++ gcc cmake git wget swig mpi-default-dev valgrind \
&& apt-get install -y --no-install-recommends \
pkg-config libboost-dev make \
valgrind \
&& apt-get clean \
&& pip3 install pytest \
&& rm -rf /var/lib/apt/lists/*

LABEL maintainer="[email protected]"
LABEL date="2022-03-16"
LABEL date="2024-05-03"

0 comments on commit 79c1c1a

Please sign in to comment.