Updated build scripts #132
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Build on various Operating Systems | |
on: | |
push: | |
branches: [devel, master] | |
pull_request: | |
branches: [devel, master] | |
env: | |
ARTIFACT: lsp-common-lib | |
VALGRIND_ARGS: --error-exitcode=255 --leak-check=full --track-origins=yes --keep-debuginfo=yes --suppressions=.github/workflows/valgrind.supp | |
jobs: | |
arch_linux: | |
runs-on: ubuntu-latest | |
container: | |
image: archlinux:latest | |
steps: | |
- name: Add debug repositories | |
run: | | |
printf "[core-debug]\nInclude = /etc/pacman.d/mirrorlist\n[extra-debug]\nInclude = /etc/pacman.d/mirrorlist\n[multilib-debug]\nInclude = /etc/pacman.d/mirrorlist" >> /etc/pacman.conf | |
printf 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch\n%s\n' "$(cat /etc/pacman.d/mirrorlist)" > /etc/pacman.d/mirrorlist | |
- name: Install dependencies | |
run: pacman --noconfirm -Syu base-devel glibc-debug git valgrind | |
- uses: actions/checkout@v3 | |
- name: Configure project | |
run: make config TEST=1 STRICT=1 | |
- name: Fetch project dependencies | |
run: make fetch | |
- name: Build project | |
run: make VERBOSE=1 | |
- name: Run unit tests | |
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 | |
- name: Run unit tests with memcheck | |
run: | | |
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \ | |
echo "***** MEMCHECK $test *****"; \ | |
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \ | |
done | |
arch_linux_asan: | |
runs-on: ubuntu-latest | |
container: | |
image: archlinux:latest | |
steps: | |
- name: Add debug repositories | |
run: | | |
printf "[core-debug]\nInclude = /etc/pacman.d/mirrorlist\n[extra-debug]\nInclude = /etc/pacman.d/mirrorlist\n[multilib-debug]\nInclude = /etc/pacman.d/mirrorlist" >> /etc/pacman.conf | |
printf 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch\n%s\n' "$(cat /etc/pacman.d/mirrorlist)" > /etc/pacman.d/mirrorlist | |
- name: Install dependencies | |
run: pacman --noconfirm -Syu base-devel glibc-debug git | |
- uses: actions/checkout@v3 | |
- name: Configure project | |
run: make config TEST=1 STRICT=1 DEBUG=1 ASAN=1 | |
- name: Fetch project dependencies | |
run: make fetch | |
- name: Build project | |
run: make VERBOSE=1 | |
- name: Run unit tests | |
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 | |
- name: Run unit tests with memcheck | |
run: | | |
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \ | |
echo "***** MEMCHECK $test *****"; \ | |
.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \ | |
done | |
arch_linux_valgrind: | |
runs-on: ubuntu-latest | |
container: | |
image: archlinux:latest | |
steps: | |
- name: Add debug repositories | |
run: | | |
printf "[core-debug]\nInclude = /etc/pacman.d/mirrorlist\n[extra-debug]\nInclude = /etc/pacman.d/mirrorlist\n[multilib-debug]\nInclude = /etc/pacman.d/mirrorlist" >> /etc/pacman.conf | |
printf 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch\n%s\n' "$(cat /etc/pacman.d/mirrorlist)" > /etc/pacman.d/mirrorlist | |
- name: Install dependencies | |
run: pacman --noconfirm -Syu base-devel glibc-debug git valgrind | |
- uses: actions/checkout@v3 | |
- name: Configure project | |
run: make config TEST=1 STRICT=1 DEBUG=1 | |
- name: Fetch project dependencies | |
run: make fetch | |
- name: Build project | |
run: make VERBOSE=1 | |
- name: Run unit tests | |
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 | |
- name: Run unit tests with memcheck | |
run: | | |
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \ | |
echo "***** MEMCHECK $test *****"; \ | |
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \ | |
done | |
opensuse_leap: | |
runs-on: ubuntu-latest | |
container: | |
image: opensuse/leap:latest | |
steps: | |
- name: Install dependencies | |
run: zypper --non-interactive --no-gpg-checks in tar gzip git make valgrind gcc gcc-c++ | |
- uses: actions/checkout@v3 | |
- name: Configure project | |
run: make config TEST=1 STRICT=1 | |
- name: Fetch project dependencies | |
run: make fetch | |
- name: Build project | |
run: make VERBOSE=1 | |
- name: Run unit tests | |
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 | |
- name: Run unit tests with memcheck | |
run: | | |
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \ | |
echo "***** MEMCHECK $test *****"; \ | |
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \ | |
done | |
opensuse_tumbleweed_clang: | |
runs-on: ubuntu-latest | |
container: | |
image: opensuse/tumbleweed:latest | |
steps: | |
- name: Install dependencies | |
run: zypper --non-interactive --no-gpg-checks in tar gzip git make valgrind gcc gcc-c++ libstdc++-devel clang | |
- uses: actions/checkout@v3 | |
- name: Configure project | |
run: make config TEST=1 STRICT=1 CC=clang CXX=clang++ | |
- name: Fetch project dependencies | |
run: make fetch | |
- name: Build project | |
run: make VERBOSE=1 | |
- name: Run unit tests | |
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 | |
- name: Run unit tests with memcheck | |
run: | | |
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \ | |
echo "***** MEMCHECK $test *****"; \ | |
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \ | |
done | |
debian_stable: | |
runs-on: ubuntu-latest | |
container: | |
image: debian:stable | |
steps: | |
- name: Update repositories | |
run: apt-get update | |
- name: Install dependencies | |
run: apt-get -y install git make pkg-config valgrind gcc g++ | |
- uses: actions/checkout@v3 | |
- name: Configure project | |
run: make config TEST=1 STRICT=1 | |
- name: Fetch project dependencies | |
run: make fetch | |
- name: Build project | |
run: make VERBOSE=1 | |
- name: Run unit tests | |
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 | |
- name: Run unit tests with memcheck | |
run: | | |
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \ | |
echo "***** MEMCHECK $test *****"; \ | |
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \ | |
done | |
windows_mingw64: | |
runs-on: windows-2022 | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- name: Setup MSYS2 and install dependencies | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
release: false | |
update: false | |
install: >- | |
base-devel | |
git | |
mingw-w64-x86_64-gcc | |
- uses: actions/checkout@v3 | |
- name: Configure project | |
shell: msys2 {0} | |
run: make config TEST=1 STRICT=1 | |
- name: Fetch project dependencies | |
shell: msys2 {0} | |
run: make fetch | |
- name: Build project | |
shell: msys2 {0} | |
run: make VERBOSE=1 | |
- name: Run unit tests | |
shell: msys2 {0} | |
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test.exe utest --verbose --jobs 1 |