ci: add leak sanitizer ci check (#7)
	
		
			
	
		
	
	
		
	
		
			Some checks reported errors
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build encountered an error
				
			
		
		
	
	
				
					
				
			
		
			Some checks reported errors
		
		
	
	continuous-integration/drone/push Build encountered an error
				
			reviewed-on: #7 Co-authored-by: light7734 <light7734@tuta.io> Co-committed-by: light7734 <light7734@tuta.io>
This commit is contained in:
		
							parent
							
								
									bd5196a9c9
								
							
						
					
					
						commit
						8094f0cf86
					
				
					 2 changed files with 108 additions and 0 deletions
				
			
		
							
								
								
									
										41
									
								
								.drone.yml
									
										
									
									
									
								
							
							
						
						
									
										41
									
								
								.drone.yml
									
										
									
									
									
								
							|  | @ -63,6 +63,47 @@ steps: | |||
| 
 | ||||
|       find ./build -type f -name "*_tests" -executable | xargs -I {} bash -c 'valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --error-exitcode=255 {}' || exit 1 | ||||
| 
 | ||||
| --- | ||||
| kind: pipeline | ||||
| type: docker | ||||
| name: leak sanitizer | ||||
| clone: | ||||
|   recursive: true | ||||
|   submodule_update_remote: true | ||||
| 
 | ||||
| trigger: | ||||
|   branch: | ||||
|   - main | ||||
| 
 | ||||
| steps: | ||||
| - name: leak sanitizer | ||||
|   image: leak_sanitizer:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - | | ||||
|       set -e | ||||
| 
 | ||||
|       git submodule update --init --recursive | ||||
|       conan build . \ | ||||
|         -s build_type=Release \ | ||||
|         -s compiler=clang \ | ||||
|         -s compiler.version=20 \ | ||||
|         -s compiler.libcxx=libc++ \ | ||||
|         -c tools.system.package_manager:mode=install \ | ||||
|         -c tools.cmake.cmaketoolchain:generator=Ninja \ | ||||
|         -c tools.build:cxxflags='["-g", "-fno-omit-frame-pointer", "-nostdinc++", "-isystem", "/libcxx_lsan/include/c++/v1/", "-fsanitize=leak"]' \ | ||||
|         -c tools.build:sharedlinkflags='["-L/libcxx_lsan/lib", "-Wl,-rpath,/libcxx_lsan/lib", "-lc++", "-lc++abi", "-fsanitize=leak"]' \ | ||||
|         -c tools.build:exelinkflags='["-L/libcxx_lsan/lib", "-Wl,-rpath,/libcxx_lsan/lib", "-lc++", "-lc++abi", "-fsanitize=leak"]' \ | ||||
|         -c tools.info.package_id:confs='["tools.build:cxxflags","tools.build:sharedlinkflags","tools.build:exelinkflags"]' \ | ||||
|         -c tools.build:compiler_executables='{"c": "clang", "cpp": "clang++"}' \ | ||||
|         -o enable_static_analysis=False \ | ||||
|         -o enable_tests=True \ | ||||
|         --build=missing | ||||
|       for test in $(find ./build -type f -name '*_tests' -executable); do | ||||
|         echo "Running $test" | ||||
|         "$test" | ||||
|       done | ||||
| 
 | ||||
| --- | ||||
| kind: pipeline | ||||
| type: docker | ||||
|  |  | |||
							
								
								
									
										67
									
								
								tools/ci/images/leak_sanitizer/Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								tools/ci/images/leak_sanitizer/Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,67 @@ | |||
| FROM archlinux:base-devel | ||||
| 
 | ||||
| RUN pacman -Syu --noconfirm && \ | ||||
|     pacman -S --noconfirm \ | ||||
|     bash \ | ||||
|     base-devel \ | ||||
|     clang \ | ||||
|     llvm \ | ||||
|     cmake \ | ||||
|     git \ | ||||
|     python \ | ||||
|     python-pip \ | ||||
|     mesa \ | ||||
|     mold \ | ||||
|     ninja \ | ||||
|     zlib \ | ||||
|     libunwind | ||||
| 
 | ||||
| RUN pip install --no-cache-dir --break-system-packages conan gitpython \ | ||||
|     && conan profile detect | ||||
| 
 | ||||
| RUN clang --version  \ | ||||
|     && conan --version \ | ||||
|     && pip --version \ | ||||
|     && cmake --version \ | ||||
|     && g++ --version \ | ||||
|     && clang --version \ | ||||
|     && ninja --version \ | ||||
|     && mold --version | ||||
| 
 | ||||
| RUN git clone --depth=1 https://github.com/llvm/llvm-project.git -b llvmorg-20.1.8  \ | ||||
|     && cd llvm-project/  \ | ||||
|     && mkdir build/ \ | ||||
|     && cd build/ \ | ||||
|     && cmake \ | ||||
|     -G Ninja \ | ||||
|     -DCMAKE_BUILD_TYPE=Release \ | ||||
|     -DCMAKE_LINKER_TYPE="MOLD" \ | ||||
|     -DCMAKE_INSTALL_PREFIX=/libcxx_lsan \ | ||||
|     -DCMAKE_C_COMPILER=clang \ | ||||
|     -DCMAKE_CXX_COMPILER=clang++ \ | ||||
|     -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ | ||||
|     -DLLVM_ENABLE_PIC=ON \ | ||||
|     -DLIBCXX_INSTALL_MODULES=ON \ | ||||
|     -DLIBCXXABI_USE_LLVM_UNWINDER=OFF \ | ||||
|     -DLLVM_USE_SANITIZER=Leaks \ | ||||
|     ../runtimes \ | ||||
|     && ninja cxx cxxabi \ | ||||
|     && ninja -C . install-cxx install-cxxabi \ | ||||
|     && rm -r /llvm-project/ | ||||
| 
 | ||||
| RUN git clone 'https://git.light7734.com/light7734/light.git' --recursive \ | ||||
|     && cd light \ | ||||
|     && conan install . \ | ||||
|         -s build_type=Release \ | ||||
|         -s compiler=clang \ | ||||
|         -s compiler.version=20 \ | ||||
|         -s compiler.libcxx=libc++ \ | ||||
|         -c tools.system.package_manager:mode=install \ | ||||
|         -c tools.cmake.cmaketoolchain:generator=Ninja \ | ||||
|         -c tools.build:cxxflags='["-g", "-fno-omit-frame-pointer", "-nostdinc++", "-isystem", "/libcxx_lsan/include/c++/v1/", "-fsanitize=leak"]' \ | ||||
|         -c tools.build:sharedlinkflags='["-L/libcxx_lsan/lib", "-Wl,-rpath,/libcxx_lsan/lib", "-lc++", "-lc++abi", "-fsanitize=leak"]' \ | ||||
|         -c tools.build:exelinkflags='["-L/libcxx_lsan/lib", "-Wl,-rpath,/libcxx_lsan/lib", "-lc++", "-lc++abi", "-fsanitize=leak"]' \ | ||||
|         -c tools.info.package_id:confs='["tools.build:cxxflags","tools.build:sharedlinkflags","tools.build:exelinkflags"]' \ | ||||
|         -c tools.build:compiler_executables='{"c": "clang", "cpp": "clang++"}' \ | ||||
|         --build=missing | ||||
|      | ||||
		Loading…
	
	Add table
		
		Reference in a new issue