CI: Replace fuzzing with asan mode

This commit is contained in:
Lynix 2022-03-19 17:48:03 +01:00
parent d853741f6f
commit f3eeace359
7 changed files with 3 additions and 135 deletions

View File

@ -5,7 +5,7 @@ on:
push:
paths-ignore:
- '.github/workflows/linux-build.yml'
- '.github/workflows/linux-build-sanitizer.yml'
- '.github/workflows/macos-build.yml'
- '.github/workflows/msys2-build.yml'
- '.github/workflows/windows-build.yml'
- '.gitignore'

View File

@ -1,87 +0,0 @@
name: Sanitizer and fuzzing
on:
pull_request:
push:
paths-ignore:
- '.github/workflows/coverage.yml'
- '.github/workflows/linux-build.yml'
- '.github/workflows/msys2-build.yml'
- '.github/workflows/windows-build.yml'
- '.gitignore'
- 'LICENSE'
- 'CHANGELOG.md'
- 'README.md'
- 'README_en.md'
- 'README_fr.md'
jobs:
build:
strategy:
matrix:
os: [ubuntu-20.04]
arch: [x86_64]
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci skip')"
steps:
- uses: actions/checkout@v2
# Install system dependencies
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get -y install mesa-common-dev libwayland-dev uuid-dev
sudo apt-get -y install libunwind-dev binutils-dev clang-11
# Install Honggfuzz
- name: Build and install Hongfuzz
run: |
wget https://github.com/google/honggfuzz/archive/refs/tags/2.5.tar.gz -O honggfuzz.tar.gz
tar -xzvf honggfuzz.tar.gz
cd honggfuzz-*/
make
sudo make install
# Force xmake to a specific folder (for cache)
- name: Set xmake env
run: echo "XMAKE_GLOBALDIR=${{ runner.workspace }}/xmake-global" >> $GITHUB_ENV
# Install xmake
- name: Setup xmake
uses: xmake-io/github-action-setup-xmake@v1
with:
xmake-version: branch@dev
# Update xmake repository (in order to have the file that will be cached)
- name: Update xmake repository
run: xmake repo --update
# Fetch xmake dephash
- name: Retrieve dependencies hash
id: dep_hash
run: echo "::set-output name=hash::$(xmake l utils.ci.packageskey)"
# Cache xmake dependencies
- name: Retrieve cached xmake dependencies
uses: actions/cache@v2
with:
path: ${{ env.XMAKE_GLOBALDIR }}/.xmake/packages
key: Linux-${{ matrix.arch }}-${{ matrix.mode }}-${{ steps.dep_hash.outputs.hash }}-r4
# Setup compilation mode and install project dependencies
- name: Configure xmake and install dependencies
run: xmake config --shadernodes=y --tests=y --arch=${{ matrix.arch }} --mode=fuzz --yes
# Configure xmake with honggfuzz to build the engine
- name: Configure xmake with honggfuzz
run: xmake config --shadernodes=y --tests=y --unitybuild=y --arch=${{ matrix.arch }} --mode=fuzz --toolchain=hfuzz-clang
# Build the engine
- name: Build Nazara
run: xmake
# Run unit tests
- name: Run unit tests
run: xmake run NazaraUnitTests

View File

@ -5,7 +5,6 @@ on:
push:
paths-ignore:
- '.github/workflows/coverage.yml'
- '.github/workflows/linux-build-sanitizer.yml'
- '.github/workflows/msys2-build.yml'
- '.github/workflows/windows-build.yml'
- '.gitignore'
@ -21,7 +20,7 @@ jobs:
matrix:
os: [ubuntu-20.04]
arch: [x86_64]
mode: [debug, releasedbg]
mode: [asan, debug, releasedbg]
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci skip')"

View File

@ -5,7 +5,6 @@ on:
push:
paths-ignore:
- '.github/workflows/coverage.yml'
- '.github/workflows/linux-build-sanitizer.yml'
- '.github/workflows/linux-build.yml'
- '.github/workflows/windows-build.yml'
- '.gitignore'

View File

@ -5,7 +5,6 @@ on:
push:
paths-ignore:
- '.github/workflows/coverage.yml'
- '.github/workflows/linux-build-sanitizer.yml'
- '.github/workflows/linux-build.yml'
- '.github/workflows/msys2-build.yml'
- '.gitignore'

View File

@ -133,7 +133,7 @@ add_requires("libvorbis", { configs = { with_vorbisenc = false } })
add_requires("openal-soft", { configs = { shared = true }})
add_requires("newtondynamics", { debug = is_plat("windows") and is_mode("debug") }) -- Newton doesn't like compiling in Debug on Linux
add_rules("mode.asan", "mode.debug", "mode.releasedbg")
add_rules("mode.asan", "mode.coverage", "mode.debug", "mode.releasedbg")
add_rules("plugin.vsxmake.autoupdate")
add_rules("build_rendererplugins")
@ -142,18 +142,10 @@ set_allowedarchs("windows|x64", "mingw|x86_64", "linux|x86_64", "macosx|x86_64")
set_allowedmodes("debug", "releasedbg", "asan", "coverage", "fuzz")
set_defaultmode("debug")
if not is_plat("windows") then
add_rules("mode.coverage")
add_rules("mode.fuzz")
end
if is_mode("debug") then
add_rules("debug_suffix")
elseif is_mode("asan") then
set_optimize("none") -- by default xmake will optimize asan builds
elseif is_mode("fuzz") then
-- we don't want packages to require compilation with fuzz toolchain
set_policy("package.inherit_external_configs", false)
elseif is_mode("coverage") then
if not is_plat("windows") then
add_links("gcov")

View File

@ -1,34 +0,0 @@
toolchain("hfuzz-clang")
set_homepage("https://honggfuzz.dev")
set_description("Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)")
set_kind("standalone")
set_toolset("cc", "hfuzz-clang")
set_toolset("cxx", "hfuzz-clang++")
set_toolset("ld", "hfuzz-clang++", "hfuzz-clang")
set_toolset("sh", "hfuzz-clang++", "hfuzz-clang")
set_toolset("ar", "ar")
set_toolset("strip", "strip")
set_toolset("mm", "hfuzz-clang")
set_toolset("mxx", "hfuzz-clang++")
set_toolset("as", "hfuzz-clang")
on_check(function (toolchain)
return import("lib.detect.find_tool")("hfuzz-clang")
end)
on_load(function (toolchain)
local march
if toolchain:is_arch("x86_64", "x64") then
march = "-m64"
elseif toolchain:is_arch("i386", "x86") then
march = "-m32"
end
if march then
toolchain:add("cxflags", march)
toolchain:add("ldflags", march)
toolchain:add("shflags", march)
end
end)