wip
Some checks reported errors
continuous-integration/drone/pr Build was killed

This commit is contained in:
light7734 2025-10-16 11:48:17 +03:30
parent 3a7b42445e
commit ccf503f44b
Signed by: light7734
GPG key ID: 8C30176798F1A6BA

View file

@ -1,99 +1,301 @@
FROM archlinux:latest FROM archlinux:latest
## Configurations ##
RUN \
mkdir /msan \
&& echo 'src:*' > /msan/ignorelist_all_sources \
&& sed -i 's/^#ParallelDownloads = .*/ParallelDownloads = 8/' /etc/pacman.conf \
&& echo 'NoExtract = usr/share/{man,doc,info}/*' >> /etc/pacman.conf
## Packages ## ## Packages ##
RUN \ RUN \
sed -i 's/^#ParallelDownloads = .*/ParallelDownloads = 8/' /etc/pacman.conf \ pacman -Syyu --noconfirm --needed --disable-download-timeout \
&& echo 'NoExtract = usr/share/{man,doc,info}/*' >> /etc/pacman.conf \ afl++ \
&& pacman -Syyu --noconfirm --needed --disable-download-timeout \ afl-utils \
afl++ \ base-devel \
afl-utils \ bash \
base-devel \ cbindgen \
bash \ clang \
clang \ cmake \
cmake \ curl \
curl \ debuginfod \
expat \ directx-headers \
gcc \ elfutils \
gdb \ expat \
git \ gcc \
glm \ gcc-libs \
libc++ \ gdb \
libinput \ git \
libpciaccess \ glibc \
libpng \ glm \
libunwind \ glslang \
libx11 \ libc++ \
libxcb \ libclc \
libxcursor \ libdrm \
libxi \ libelf \
libxinerama \ libglvnd \
libxpresent \ libinput \
libxrandr \ libpciaccess \
lz4 \ libpng \
mesa \ libunwind \
mold \ libva \
ninja \ libx11 \
python \ libxcb \
python-distlib \ libxdamage \
python-distutils-extra \ libxext \
python-jsonschema \ libxfixes \
qt5-base \ libxi \
qt6-base \ libxinerama \
valgrind \ libxml2 \
vulkan-headers \ libxpresent \
vulkan-icd-loader \ libxrandr \
vulkan-tools \ libxshmfence \
vulkan-validation-layers \ libxxf86vm \
wayland \ lm_sensors \
wayland-protocols \ llvm \
wget \ lz4 \
xcb-util \ meson \
xcb-util-cursor \ mold \
xcb-util-keysyms \ ninja \
xcb-util-wm \ python \
xorg-server-xvfb \ python-distlib \
xorg-util-macros \ python-distutils-extra \
xtrans \ python-jsonschema \
zlib \ python-mako \
zstd \ python-packaging \
python-ply \
python-pyaml \
qt5-base \
qt6-base \
rust \
rust-bindgen \
spirv-llvm-translator \
spirv-tools \
systemd-libs \
valgrind \
vulkan-headers \
vulkan-icd-loader \
vulkan-tools \
vulkan-validation-layers \
wayland \
wayland-protocols \
wget \
xcb-proto \
xcb-util \
xcb-util-cursor \
xcb-util-keysyms \
xcb-util-wm \
xorg-server-xvfb \
xorg-util-macros \
xorgproto \
xtrans \
zlib \
zstd \
&& pacman -Scc --noconfirm && pacman -Scc --noconfirm
## Sanitizers ## ## Libc++ ##
RUN \ RUN \
git clone --depth=1 https://github.com/llvm/llvm-project.git -b llvmorg-20.1.8 \ git clone \
&& mkdir llvm-project/build-lsan llvm-project/build-msan \ --branch llvmorg-20.1.8 \
--depth=1 \
https://github.com/llvm/llvm-project.git
RUN cd llvm-project/ \
\ \
&& cd llvm-project/build-lsan \ && cmake \
&& cmake -G Ninja \ -S ./runtimes \
-DCMAKE_BUILD_TYPE=Release \ -B ./build-lsan \
-DCMAKE_LINKER_TYPE="MOLD" \ -G Ninja \
-DCMAKE_INSTALL_PREFIX=/libcxx_lsan \ -D CMAKE_LINKER_TYPE="MOLD" \
-DCMAKE_C_COMPILER=clang \ -D CMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_COMPILER=clang++ \ -D CMAKE_INSTALL_PREFIX=/libcxx_lsan \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ -D CMAKE_C_COMPILER=$(which clang) \
-DLLVM_ENABLE_PIC=ON \ -D CMAKE_CXX_COMPILER=$(which clang++) \
-DLIBCXX_INSTALL_MODULES=ON \ -D LLVM_ENABLE_PROJECTS="clang;compiler-rt" \
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \ -D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
-DLLVM_USE_SANITIZER=Leaks \ -D LLVM_TARGETS_TO_BUILD="X86;SPIRV" \
../runtimes \ -D LLVM_ENABLE_PIC=ON \
&& ninja cxx cxxabi \ -D LIBCXX_INSTALL_MODULES=ON \
&& ninja install-cxx install-cxxabi \ -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \
-D LLVM_USE_SANITIZER=Leaks \
&& cd ./build-lsan/ && ninja cxx cxxabi && ninja install-cxx install-cxxabi && cd ../ \
\ \
&& cd ../build-msan \ && cmake \
&& cmake -G Ninja \ -S ./runtimes \
-DCMAKE_BUILD_TYPE=Release \ -B ./build-msan \
-DCMAKE_LINKER_TYPE="MOLD" \ -G Ninja \
-DCMAKE_INSTALL_PREFIX=/libcxx_msan \ -D CMAKE_LINKER_TYPE="MOLD" \
-DCMAKE_C_COMPILER=clang \ -D CMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_COMPILER=clang++ \ -D CMAKE_INSTALL_PREFIX=/libcxx_msan \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ -D CMAKE_C_COMPILER=$(which clang) \
-DLLVM_ENABLE_PIC=ON \ -D CMAKE_CXX_COMPILER=$(which clang++) \
-DLIBCXX_INSTALL_MODULES=ON \ -D LLVM_ENABLE_PROJECTS="clang;compiler-rt" \
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \ -D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
-DLLVM_USE_SANITIZER=MemoryWithOrigins \ -D LLVM_TARGETS_TO_BUILD="X86;SPIRV" \
../runtimes \ -D LLVM_ENABLE_PIC=ON \
&& ninja cxx cxxabi \ -D LIBCXX_INSTALL_MODULES=ON \
&& ninja install-cxx install-cxxabi \ -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \
\ -D LLVM_USE_SANITIZER=MemoryWithOrigins \
&& cd ../.. \ && cd ./build-msan/ && ninja cxx cxxabi && ninja install-cxx install-cxxabi && cd ../
&& rm -rf llvm-project
## libxcb ##
RUN \
wget https://x.org/releases/individual/lib/libxcb-1.17.0.tar.xz \
&& tar xf libxcb-1.17.0.tar.xz \
&& cd libxcb-1.17.0 \
&& export CC=clang \
&& export CFLAGS=" \
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fsanitize-ignorelist=/msan/ignorelist_all_sources \
-fno-omit-frame-pointer \
-g \
-fPIC" \
&& export LDFLAGS=" \
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fsanitize-ignorelist=/msan/ignorelist_all_sources \
-fno-omit-frame-pointer \
-g \
-fPIC" \
&& ./configure \
--prefix=/msan \
--disable-static \
--without-doxygen \
&& make && make install \
&& cd .. && rm -rf libxcb-1.17.0 libxcb-1.17.0.tar.xz
## libx11 ##
RUN \
wget https://x.org/releases/individual/lib/libX11-1.8.12.tar.xz \
&& tar xf libX11-1.8.12.tar.xz \
&& cd libX11-1.8.12 \
&& export CC=clang \
&& export CFLAGS=" \
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fsanitize-ignorelist=/msan/ignorelist_all_sources \
-fno-omit-frame-pointer \
-g \
-fPIC" \
&& export LDFLAGS=" \
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fsanitize-ignorelist=/msan/ignorelist_all_sources \
-fno-omit-frame-pointer \
-g \
-fPIC" \
&& export PKG_CONFIG_PATH=/msan/lib/pkgconfig:$PKG_CONFIG_PATH \
&& ./configure \
--prefix=/msan \
--disable-static \
&& make && make install \
&& cd .. && rm -rf libX11-1.8.12 libX11-1.8.12.tar.xz
RUN wget 'https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz'
RUN tar xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz
## Vulkan SDK ##
RUN \
cd /1.4.328.1 \
&& chmod +x ./vulkansdk \
&& chmod +x ./setup-env.sh \
&& export CC="$(which clang)" \
&& export CXX="$(which clang++)" \
&& export CXXFLAGS="\
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fsanitize-ignorelist=/msan/ignorelist_all_sources \
-fno-omit-frame-pointer \
-g \
-std=c++23 \
-nostdinc++ \
-isystem /libcxx_msan/include/c++/v1/"\
&& export CFLAGS="\
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fno-omit-frame-pointer \
-g" \
&& export LDFLAGS="\
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fsanitize-ignorelist=/msan/ignorelist_all_sources \
-g \
-std=c++23 \
-L/msan/lib -Wl,-rpath,/msan/lib \
-L/libcxx_msan/lib -Wl,-rpath,/libcxx_msan/lib \
-lc++ \
-lc++abi" \
&& ./vulkansdk \
--debug \
--numjobs `nproc` \
vulkan-loader
## Mesa ##
RUN git clone \
--branch='25.2'\
--depth=1 \
https://gitlab.freedesktop.org/mesa/mesa.git
RUN \
export CXX=$(which clang++) \
&& export CC=$(which clang) \
&& export CXXFLAGS="\
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fno-omit-frame-pointer \
-g \
-nostdinc++ \
-isystem /libcxx_msan/include/c++/v1/"\
&& export CFLAGS="\
-fsanitize=memory \
-fsanitize-memory-track-origins \
-fno-omit-frame-pointer \
-g" \
&& export LDFLAGS="\
-fsanitize=memory \
-fsanitize-memory-track-origins \
-g \
-L/msan/lib -Wl,-rpath,/msan/lib \
-L/libcxx_msan/lib -Wl,-rpath,/libcxx_msan/lib \
-lc++ \
-lc++abi" \
&& meson setup ./ _build \
-D build-tests=false \
-D enable-glcpp-tests=false \
-D build-radv-tests=false \
-D build-aco-tests=false \
-D install-intel-gpu-tests=false \
-D gallium-mediafoundation-test=false \
-D android-libbacktrace=disabled \
-D split-debug=disabled \
-D b_ndebug=true \
-D b_lto=false \
-D egl=enabled \
-D gallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,softpipe,llvmpipe,i915,iris,crocus,zink \
-D gallium-extra-hud=true \
-D gallium-rusticl=true \
-D gallium-va=enabled \
-D gbm=enabled \
-D gles1=disabled \
-D gles2=enabled \
-D glvnd=enabled \
-D glx=dri \
-D libunwind=enabled \
-D llvm=enabled \
-D lmsensors=disabled \
-D microsoft-clc=disabled \
-D platforms=x11,wayland \
-D valgrind=disabled \
-D video-codecs=all \
-D vulkan-drivers=amd,intel,intel_hasvk,swrast,virtio,nouveau \
-D vulkan-layers=device-select,intel-nullhw,overlay \
-D tools='' \
-D zstd=enabled \
-D buildtype=plain \
-D prefix=/usr \
-D sysconfdir=/etc \
--wrap-mode=nofallback \
--force-fallback-for=syn,paste,rustc-hash \
&& ninja -C _build