This commit is contained in:
		
							parent
							
								
									3a7b42445e
								
							
						
					
					
						commit
						ccf503f44b
					
				
					 1 changed files with 292 additions and 90 deletions
				
			
		|  | @ -1,44 +1,77 @@ | ||||||
| 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 \ |  | ||||||
| && pacman -Syyu --noconfirm --needed --disable-download-timeout \ |  | ||||||
|     afl++ \ |     afl++ \ | ||||||
|     afl-utils \ |     afl-utils \ | ||||||
|     base-devel \ |     base-devel \ | ||||||
|     bash \ |     bash \ | ||||||
|  |     cbindgen \ | ||||||
|     clang \ |     clang \ | ||||||
|     cmake \ |     cmake \ | ||||||
|     curl \ |     curl \ | ||||||
|  |     debuginfod \ | ||||||
|  |     directx-headers \ | ||||||
|  |     elfutils \ | ||||||
|     expat \ |     expat \ | ||||||
|     gcc \ |     gcc \ | ||||||
|  |     gcc-libs \ | ||||||
|     gdb \ |     gdb \ | ||||||
|     git \ |     git \ | ||||||
|  |     glibc \ | ||||||
|     glm \ |     glm \ | ||||||
|  |     glslang \ | ||||||
|     libc++ \ |     libc++ \ | ||||||
|  |     libclc \ | ||||||
|  |     libdrm \ | ||||||
|  |     libelf \ | ||||||
|  |     libglvnd \ | ||||||
|     libinput \ |     libinput \ | ||||||
|     libpciaccess \ |     libpciaccess \ | ||||||
|     libpng \ |     libpng \ | ||||||
|     libunwind \ |     libunwind \ | ||||||
|  |     libva \ | ||||||
|     libx11 \ |     libx11 \ | ||||||
|     libxcb \ |     libxcb \ | ||||||
| libxcursor \ |     libxdamage \ | ||||||
|  |     libxext \ | ||||||
|  |     libxfixes \ | ||||||
|     libxi \ |     libxi \ | ||||||
|     libxinerama \ |     libxinerama \ | ||||||
|  |     libxml2 \ | ||||||
|     libxpresent \ |     libxpresent \ | ||||||
|     libxrandr \ |     libxrandr \ | ||||||
|  |     libxshmfence \ | ||||||
|  |     libxxf86vm \ | ||||||
|  |     lm_sensors \ | ||||||
|  |     llvm \ | ||||||
|     lz4 \ |     lz4 \ | ||||||
| mesa \ |     meson \ | ||||||
|     mold \ |     mold \ | ||||||
|     ninja \ |     ninja \ | ||||||
|     python \ |     python \ | ||||||
|     python-distlib \ |     python-distlib \ | ||||||
|     python-distutils-extra \ |     python-distutils-extra \ | ||||||
|     python-jsonschema \ |     python-jsonschema \ | ||||||
|  |     python-mako \ | ||||||
|  |     python-packaging \ | ||||||
|  |     python-ply \ | ||||||
|  |     python-pyaml \ | ||||||
|     qt5-base \ |     qt5-base \ | ||||||
|     qt6-base \ |     qt6-base \ | ||||||
|  |     rust \ | ||||||
|  |     rust-bindgen \ | ||||||
|  |     spirv-llvm-translator \ | ||||||
|  |     spirv-tools \ | ||||||
|  |     systemd-libs \ | ||||||
|     valgrind \ |     valgrind \ | ||||||
|     vulkan-headers \ |     vulkan-headers \ | ||||||
|     vulkan-icd-loader \ |     vulkan-icd-loader \ | ||||||
|  | @ -47,53 +80,222 @@ vulkan-validation-layers \ | ||||||
|     wayland \ |     wayland \ | ||||||
|     wayland-protocols \ |     wayland-protocols \ | ||||||
|     wget \ |     wget \ | ||||||
|  |     xcb-proto \ | ||||||
|     xcb-util \ |     xcb-util \ | ||||||
|     xcb-util-cursor \ |     xcb-util-cursor \ | ||||||
|     xcb-util-keysyms \ |     xcb-util-keysyms \ | ||||||
|     xcb-util-wm \ |     xcb-util-wm \ | ||||||
|     xorg-server-xvfb \ |     xorg-server-xvfb \ | ||||||
|     xorg-util-macros \ |     xorg-util-macros \ | ||||||
|  |     xorgproto \ | ||||||
|     xtrans \ |     xtrans \ | ||||||
|     zlib \ |     zlib \ | ||||||
|     zstd \ |     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 \ | ||||||
|  |     -G Ninja \ | ||||||
|     -D CMAKE_LINKER_TYPE="MOLD" \ |     -D CMAKE_LINKER_TYPE="MOLD" \ | ||||||
|  |     -D CMAKE_BUILD_TYPE=Release \ | ||||||
|     -D CMAKE_INSTALL_PREFIX=/libcxx_lsan \ |     -D CMAKE_INSTALL_PREFIX=/libcxx_lsan \ | ||||||
|   -DCMAKE_C_COMPILER=clang \ |     -D CMAKE_C_COMPILER=$(which clang) \ | ||||||
|   -DCMAKE_CXX_COMPILER=clang++ \ |     -D CMAKE_CXX_COMPILER=$(which clang++) \ | ||||||
|  |     -D LLVM_ENABLE_PROJECTS="clang;compiler-rt" \ | ||||||
|     -D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ |     -D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ | ||||||
|  |     -D LLVM_TARGETS_TO_BUILD="X86;SPIRV" \ | ||||||
|     -D LLVM_ENABLE_PIC=ON \ |     -D LLVM_ENABLE_PIC=ON \ | ||||||
|     -D LIBCXX_INSTALL_MODULES=ON \ |     -D LIBCXX_INSTALL_MODULES=ON \ | ||||||
|     -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \ |     -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \ | ||||||
|     -D LLVM_USE_SANITIZER=Leaks \ |     -D LLVM_USE_SANITIZER=Leaks \ | ||||||
|   ../runtimes \ | && cd ./build-lsan/ && ninja cxx cxxabi && ninja install-cxx install-cxxabi && cd ../ \ | ||||||
| && ninja cxx cxxabi \ |  | ||||||
| && ninja install-cxx install-cxxabi \ |  | ||||||
| \ | \ | ||||||
| && cd ../build-msan \ | && cmake \ | ||||||
| && cmake -G Ninja \ |     -S ./runtimes \ | ||||||
|   -DCMAKE_BUILD_TYPE=Release \ |     -B ./build-msan \ | ||||||
|  |     -G Ninja \ | ||||||
|     -D CMAKE_LINKER_TYPE="MOLD" \ |     -D CMAKE_LINKER_TYPE="MOLD" \ | ||||||
|  |     -D CMAKE_BUILD_TYPE=Release \ | ||||||
|     -D CMAKE_INSTALL_PREFIX=/libcxx_msan \ |     -D CMAKE_INSTALL_PREFIX=/libcxx_msan \ | ||||||
|   -DCMAKE_C_COMPILER=clang \ |     -D CMAKE_C_COMPILER=$(which clang) \ | ||||||
|   -DCMAKE_CXX_COMPILER=clang++ \ |     -D CMAKE_CXX_COMPILER=$(which clang++) \ | ||||||
|  |     -D LLVM_ENABLE_PROJECTS="clang;compiler-rt" \ | ||||||
|     -D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ |     -D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ | ||||||
|  |     -D LLVM_TARGETS_TO_BUILD="X86;SPIRV" \ | ||||||
|     -D LLVM_ENABLE_PIC=ON \ |     -D LLVM_ENABLE_PIC=ON \ | ||||||
|     -D LIBCXX_INSTALL_MODULES=ON \ |     -D LIBCXX_INSTALL_MODULES=ON \ | ||||||
|     -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \ |     -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \ | ||||||
|     -D LLVM_USE_SANITIZER=MemoryWithOrigins \ |     -D LLVM_USE_SANITIZER=MemoryWithOrigins \ | ||||||
|   ../runtimes \ | && cd ./build-msan/ && ninja cxx cxxabi && ninja install-cxx install-cxxabi && cd ../ | ||||||
| && ninja cxx cxxabi \ | 
 | ||||||
| && ninja install-cxx install-cxxabi \ | ## libxcb ## | ||||||
| \ | RUN \ | ||||||
| && cd ../.. \ | wget https://x.org/releases/individual/lib/libxcb-1.17.0.tar.xz  \ | ||||||
| && rm -rf llvm-project | && 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 | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue