v: fix all memleaks to enable memleak detection #11897
Workflow file for this run
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: C2V apps | |
on: | |
push: | |
paths-ignore: | |
- '**.md' | |
- '**.yml' | |
- '!**/c2v_ci.yml' | |
- 'doc/**' | |
- 'examples/**' | |
- 'tutorials/**' | |
- 'cmd/tools/**' | |
- '!cmd/tools/builders/**.v' | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
- '**.yml' | |
- '!**/c2v_ci.yml' | |
- 'doc/**' | |
- 'examples/**' | |
- 'tutorials/**' | |
- 'cmd/tools/**' | |
- '!cmd/tools/builders/**.v' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-doom: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build V | |
run: make -j4 && ./v symlink | |
- name: Set 8.8.8.8 as dns server | |
run: | | |
sudo sed -i 's/#DNS=/DNS=8.8.8.8 8.8.4.4/g' /etc/systemd/resolved.conf | |
sudo systemctl daemon-reload | |
sudo systemctl restart systemd-networkd | |
sudo systemctl restart systemd-resolved | |
dig distro.ibiblio.org | |
- name: Install C2V | |
run: | | |
v retry -- v install --git https://github.com/vlang/c2v | |
v -g ~/.vmodules/c2v/ || true | |
- name: Install dependencies | |
run: | | |
if [ "${{ runner.os }}" == "Linux" ]; then | |
v retry -- sudo apt update -y -qq | |
v retry -- sudo apt install libsdl2-dev libsdl2-mixer-dev libsdl2-net-dev libpng-dev libsamplerate0-dev | |
else | |
v retry -- brew install sdl2 sdl2_mixer sdl2_net libpng libsamplerate | |
fi | |
- name: Build original Chocolate Doom | |
run: | | |
v retry -- git clone --quiet --depth 1 https://github.com/vlang/doom ~/code/doom | |
cd ~/code/doom/chocolate-doom | |
cmake -DCMAKE_BUILD_TYPE=Debug . | |
make chocolate-doom | |
- name: Translate the whole game in project/folder mode and compile it | |
run: | | |
touch ~/DOOM1.WAD | |
WAD_FILE=~/DOOM1.WAD ~/code/doom/build_whole_project.sh | |
test-regression: | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 20 | |
env: | |
VFLAGS: -cc tcc | |
DISPLAY: :99 | |
LIBGL_ALWAYS_SOFTWARE: true | |
VTMP: /tmp | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build V | |
run: make -j4 && ./v symlink | |
- name: Set 8.8.8.8 as dns server | |
run: | | |
sudo sed -i 's/#DNS=/DNS=8.8.8.8 8.8.4.4/g' /etc/systemd/resolved.conf | |
sudo systemctl daemon-reload | |
sudo systemctl restart systemd-networkd | |
sudo systemctl restart systemd-resolved | |
dig distro.ibiblio.org | |
- name: Install C2V | |
run: | | |
v retry -- v install --git https://github.com/vlang/c2v | |
v -g ~/.vmodules/c2v/ || true | |
- name: Install dependencies | |
run: | | |
v retry -- sudo apt update -y -qq | |
v retry -- sudo apt install libsdl2-dev libsdl2-mixer-dev libsdl2-net-dev libpng-dev libsamplerate0-dev | |
# c2v / DOOM dependencies | |
# vgret dependencies | |
# imagemagick : convert, mogrify, import | |
# xvfb : For starting X11 Virtual FrameBuffers | |
# openimageio-tools : idiff | |
# libgl1-mesa-dri : For headless rendering / software DRI driver (LIBGL_ALWAYS_SOFTWARE=true) | |
# freeglut3-dev : Fixes graphic apps compilation with tcc | |
v retry -- sudo apt install imagemagick openimageio-tools freeglut3-dev libgl1-mesa-dri xvfb xsel xclip | |
- name: Setup test tools | |
run: | | |
# Fetch the free ~4MB DOOM1.WAD from the link at https://doomwiki.org/wiki/DOOM1.WAD | |
v retry -- v download https://distro.ibiblio.org/slitaz/sources/packages/d/doom1.wad | |
mv doom1.wad ~/doom1.wad | |
# Get imgur upload script | |
v retry -- v download https://raw.githubusercontent.com/tremby/imgur.sh/c98345d/imgur.sh | |
chmod +x ./imgur.sh | |
# Get regression images to test against | |
v retry -- git clone https://github.com/Larpon/doom-regression-images | |
- name: Build original Chocolate Doom | |
run: | | |
v retry -- git clone --quiet --depth 1 https://github.com/vlang/doom ~/code/doom | |
cd ~/code/doom/chocolate-doom | |
cmake -DCMAKE_BUILD_TYPE=Debug . | |
make chocolate-doom | |
- name: Translate the whole game in project/folder mode | |
run: WAD_FILE=~/doom1.wad ~/code/doom/build_whole_project.sh | |
- name: Sample and compare with vgret | |
id: compare | |
continue-on-error: true | |
run: | | |
Xvfb $DISPLAY -screen 0 800x600x24 -fbdir /var/tmp/ & | |
sleep 2; while [ ! -f /var/tmp/Xvfb_screen0 ]; do sleep 0.5; done # give xvfb time to start, even on slow CI runs | |
sleep 5; v gret -r ~/code/doom -t ./doom-regression-images/vgret.doom.toml -v ./doom-sample_images ./doom-regression-images | |
- name: Upload regression to imgur | |
if: steps.compare.outcome != 'success' | |
run: | | |
./imgur.sh /tmp/fail.png | |
./imgur.sh /tmp/diff.png | |
exit 1 |