Ubuntu ASAN Dockerfile

This commit is contained in:
Johannes Altmanninger 2024-01-12 12:18:27 +01:00
parent e89a4f6cb4
commit 26d359b071
3 changed files with 56 additions and 43 deletions

View File

@ -1,42 +0,0 @@
FROM ubuntu:18.04
LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN apt-get update \
&& apt-get -y install \
build-essential \
cmake \
clang-9 \
gettext \
git \
libncurses5-dev \
libpcre2-dev \
locales \
ninja-build \
python3 \
python3-pexpect \
sudo \
&& locale-gen en_US.UTF-8 \
&& apt-get clean
RUN groupadd -g 1000 fishuser \
&& useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \
&& adduser fishuser sudo \
&& mkdir -p /home/fishuser/fish-build \
&& mkdir /fish-source \
&& chown -R fishuser:fishuser /home/fishuser /fish-source
USER fishuser
WORKDIR /home/fishuser
COPY fish_run_tests.sh /
ENV CXXFLAGS="-fno-omit-frame-pointer -fsanitize=undefined -fsanitize=address" \
CC=clang-9 \
CXX=clang++-9 \
ASAN_OPTIONS=check_initialization_order=1:detect_stack_use_after_return=1:detect_leaks=1 \
UBSAN_OPTIONS=print_stacktrace=1:report_error_type=1
CMD /fish_run_tests.sh

View File

@ -4,7 +4,7 @@
# It is the entry point for running Docker-based tests.
cd ~/fish-build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug /fish-source
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug /fish-source "$@"
# Spawn a shell if FISH_RUN_SHELL_BEFORE_TESTS is set.
if test -n "$FISH_RUN_SHELL_BEFORE_TESTS"

View File

@ -0,0 +1,55 @@
FROM ubuntu:jammy
LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN apt-get update \
&& apt-get -y install \
build-essential \
cmake \
clang \
gettext \
git \
libncurses5-dev \
libpcre2-dev \
locales \
ninja-build \
python3 \
python3-pexpect \
tmux \
rustc \
sudo \
&& locale-gen en_US.UTF-8 \
&& apt-get clean
RUN groupadd -g 1000 fishuser \
&& useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \
&& adduser fishuser sudo \
&& mkdir -p /home/fishuser/fish-build \
&& mkdir /fish-source \
&& chown -R fishuser:fishuser /home/fishuser /fish-source
RUN llvm_version=$(clang --version | awk 'NR==1 { split($NF, version, "."); print version[1] }') \
&& echo "$llvm_version" >/.llvm-version
USER fishuser
WORKDIR /home/fishuser
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh \
&& sh /tmp/rustup.sh -y --default-toolchain nightly --component rust-src
COPY fish_run_tests.sh /
ENV \
RUSTFLAGS=-Zsanitizer=address \
CC=clang \
CXX=clang++ \
CXXFLAGS="-fno-omit-frame-pointer -fsanitize=undefined -fsanitize=address -DFISH_CI_SAN" \
ASAN_OPTIONS=check_initialization_order=1:detect_stack_use_after_return=1:detect_leaks=1 \
LSAN_OPTIONS=verbosity=0:log_threads=0:use_tls=1:print_suppressions=0:suppressions=/fish-source/build_tools/lsan_suppressions.txt \
FISH_CI_SAN=1
CMD . ~/.cargo/env \
&& ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-$(cat /.llvm-version) \
/fish_run_tests.sh -DASAN=1 -DRust_CARGO_TARGET=x86_64-unknown-linux-gnu