Fix memory leak on unclosed folders in Compass MAK file #148
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: CI | |
# Controls when the workflow will run | |
on: | |
# Triggers the workflow on push, or for pull requests against master | |
push: | |
paths-ignore: | |
- NEWS | |
pull_request: | |
branches: [ master ] | |
paths-ignore: | |
- NEWS | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
linux: | |
runs-on: 'ubuntu-20.04' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
gettext \ | |
libwxgtk3.0-gtk3-dev \ | |
libavcodec-dev \ | |
libavformat-dev \ | |
libproj-dev \ | |
libswscale-dev \ | |
mesa-common-dev \ | |
libglu1-mesa-dev \ | |
libx11-dev \ | |
libxext-dev \ | |
ghostscript \ | |
netpbm \ | |
x11proto-core-dev \ | |
liblocale-po-perl \ | |
unifont \ | |
docbook \ | |
docbook-utils \ | |
w3m | |
- name: bootstrap source tree | |
run: | | |
autoreconf -fiv | |
git checkout INSTALL | |
- name: configure | |
run: ./configure CC='ccache gcc' CXX='ccache g++' | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make check VERBOSE=1 | |
- name: Check generated files are in .gitignore | |
# grep '^' passes through all input while giving a non-zero exit status | |
# if that input is empty. | |
run: | | |
printf '%s\n' .ccache > ".git/info/exclude" | |
git status --porcelain|grep '^' && { echo "The generated files listed above are not in .gitignore" ; exit 1; }; true | |
valgrind: | |
runs-on: 'ubuntu-22.04' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
gettext \ | |
libwxgtk3.0-gtk3-dev \ | |
libavcodec-dev \ | |
libavformat-dev \ | |
libproj-dev \ | |
libswscale-dev \ | |
mesa-common-dev \ | |
libglu1-mesa-dev \ | |
libx11-dev \ | |
libxext-dev \ | |
ghostscript \ | |
netpbm \ | |
x11proto-core-dev \ | |
liblocale-po-perl \ | |
unifont \ | |
docbook \ | |
docbook-utils \ | |
w3m | |
sudo apt-get install valgrind | |
- name: bootstrap source tree | |
run: | | |
autoreconf -fiv | |
git checkout INSTALL | |
- name: configure | |
run: ./configure CC='ccache gcc' CXX='ccache g++' | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: VALGRIND=valgrind make check VERBOSE=1 | |
- name: Check generated files are in .gitignore | |
# grep '^' passes through all input while giving a non-zero exit status | |
# if that input is empty. | |
run: | | |
printf '%s\n' .ccache > ".git/info/exclude" | |
git status --porcelain|grep '^' && { echo "The generated files listed above are not in .gitignore" ; exit 1; }; true | |
# Debian stable has wxWidgets 3.2. | |
debian-stable: | |
runs-on: 'ubuntu-latest' | |
container: debian:stable | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Install package dependencies | |
run: | | |
apt-get update | |
apt-get install -y \ | |
autoconf \ | |
automake \ | |
gcc \ | |
g++ \ | |
make \ | |
pkg-config \ | |
gettext \ | |
libwxgtk3.2-dev \ | |
libavcodec-dev \ | |
libavformat-dev \ | |
libproj-dev \ | |
libswscale-dev \ | |
mesa-common-dev \ | |
libglu1-mesa-dev \ | |
libx11-dev \ | |
libxext-dev \ | |
ghostscript \ | |
netpbm \ | |
x11proto-core-dev \ | |
liblocale-po-perl \ | |
unifont \ | |
docbook \ | |
docbook-utils \ | |
w3m | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: bootstrap source tree | |
run: | | |
ln INSTALL INSTALL-save | |
autoreconf -fiv | |
mv -f INSTALL-save INSTALL | |
- name: configure | |
run: ./configure CC='ccache gcc' CXX='ccache g++' | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make check VERBOSE=1 | |
clang-sanitisers: | |
runs-on: 'ubuntu-latest' | |
container: debian:stable | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Install package dependencies | |
run: | | |
apt-get update | |
apt-get install -y \ | |
autoconf \ | |
automake \ | |
clang-16 \ | |
make \ | |
pkg-config \ | |
gettext \ | |
libwxgtk3.2-dev \ | |
libavcodec-dev \ | |
libavformat-dev \ | |
libproj-dev \ | |
libswscale-dev \ | |
mesa-common-dev \ | |
libglu1-mesa-dev \ | |
libx11-dev \ | |
libxext-dev \ | |
ghostscript \ | |
netpbm \ | |
x11proto-core-dev \ | |
liblocale-po-perl \ | |
unifont \ | |
docbook \ | |
docbook-utils \ | |
w3m | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: bootstrap source tree | |
run: | | |
ln INSTALL INSTALL-save | |
autoreconf -fiv | |
mv -f INSTALL-save INSTALL | |
- name: configure | |
run: | | |
# We use clang here because (at least currently) it supports a few | |
# extra sanitiser checks compared to GCC. | |
export CC='ccache clang-16' | |
export CXX='ccache clang++-16' | |
# float-divide-by-zero, nullability and unsigned-overflow aren't | |
# undefined behaviour checks, but they catch for things we don't expect | |
# our code to do. | |
export CFLAGS='-fsanitize=address,undefined,float-divide-by-zero,local-bounds,nullability,unsigned-integer-overflow -fsanitize-address-use-after-scope -fsanitize-recover=all -g -O2 -fno-omit-frame-pointer' | |
export CXXFLAGS='-fsanitize=address,undefined,float-divide-by-zero,local-bounds,nullability,unsigned-integer-overflow -fsanitize-address-use-after-scope -fsanitize-recover=all -g -O2 -fno-omit-frame-pointer' | |
./configure | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make check VERBOSE=1 | |
- name: Check generated files are in .gitignore | |
# grep '^' passes through all input while giving a non-zero exit status | |
# if that input is empty. | |
run: | | |
printf '%s\n' .ccache > ".git/info/exclude" | |
git status --porcelain|grep '^' && { echo "The generated files listed above are not in .gitignore" ; exit 1; }; true | |
linux-latest: | |
runs-on: 'ubuntu-latest' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
gettext \ | |
libwxgtk3.0-gtk3-dev \ | |
libavcodec-dev \ | |
libavformat-dev \ | |
libproj-dev \ | |
libswscale-dev \ | |
mesa-common-dev \ | |
libglu1-mesa-dev \ | |
libx11-dev \ | |
libxext-dev \ | |
ghostscript \ | |
netpbm \ | |
x11proto-core-dev \ | |
liblocale-po-perl \ | |
unifont \ | |
docbook \ | |
docbook-utils \ | |
w3m | |
- name: bootstrap source tree | |
run: | | |
autoreconf -fiv | |
git checkout INSTALL | |
- name: configure | |
run: ./configure CC='ccache gcc' CXX='ccache g++' | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make check VERBOSE=1 | |
- name: Check generated files are in .gitignore | |
# grep '^' passes through all input while giving a non-zero exit status | |
# if that input is empty. | |
run: | | |
printf '%s\n' .ccache > ".git/info/exclude" | |
git status --porcelain|grep '^' && { echo "The generated files listed above are not in .gitignore" ; exit 1; }; true | |
macos: | |
runs-on: 'macos-latest' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Install package dependencies | |
run: | | |
# Workaround apparent homebrew bug 2024-03-05 | |
rm -f /usr/local/bin/2to3-3.* /usr/local/bin/idle3.* /usr/local/bin/pydoc3.* /usr/local/bin/python3.* /usr/local/bin/python3.*-config | |
rm -f /usr/local/bin/2to3 /usr/local/bin/idle3 /usr/local/bin/pydoc3 /usr/local/bin/python3 /usr/local/bin/python3-config | |
brew update | |
brew install \ | |
automake \ | |
ffmpeg \ | |
gettext \ | |
gnu-tar \ | |
netpbm \ | |
proj \ | |
wxwidgets | |
brew link --force gettext | |
cpan -T -i local::lib < /dev/null | |
cpan -I -T -i Locale::PO < /dev/null | |
- name: bootstrap source tree | |
run: | | |
autoreconf -fiv | |
git checkout INSTALL | |
V=`sed -e 's/^AC_INIT[^,]*, *\[\([^]]*\)\].*/\1/p;d' configure.ac` ; curl https://survex.com/software/$V/survex-$V.tar.gz | gtar --strip-components=1 --skip-old-files --wildcards -zxf - '*/lib' '*/doc'; ls -lrt lib ; touch lib/unifont.pixelfont lib/preload_font.h; echo ; ls -lrt doc; touch doc/*.1 doc/manual.txt doc/manual.pdf doc/manual/stampfile | |
- name: configure | |
run: ./configure CC='ccache gcc' CXX='ccache g++' | |
- name: make | |
run: | | |
eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)" | |
make -j3 | |
- name: Run tests | |
run: make check VERBOSE=1 | |
- name: Check generated files are in .gitignore | |
# grep '^' passes through all input while giving a non-zero exit status | |
# if that input is empty. | |
run: | | |
printf '%s\n' .ccache > ".git/info/exclude" | |
git status --porcelain|grep '^' && { echo "The generated files listed above are not in .gitignore" ; exit 1; }; true |