Skip to content

More CI fiddling

More CI fiddling #107

Workflow file for this run

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++' CFLAGS='-Werror -O2 -g' CXXFLAGS='-Werror -Wno-error=cast-function-type -Wno-error=deprecated-copy -Wno-error=ignored-qualifiers -O2 -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-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 \
valgrind \
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++' CFLAGS='-Werror -O2 -g' CXXFLAGS='-Werror -Wno-error=cast-function-type -Wno-error=deprecated-copy -Wno-error=ignored-qualifiers -O2 -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 \
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: |
autoreconf -fiv
git checkout INSTALL
- name: configure
run: ./configure CC='ccache gcc' CXX='ccache g++' CFLAGS='-Werror -O2 -g' CXXFLAGS='-Werror -O2 -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
clang-sanitisiers:
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: |
# We use clang here because (at least currently) it supports a few
# extra sanitiser checks compared to GCC.
export CC='ccache clang'
export CXX='ccache clang++'
# 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 -Werror'
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 -Wno-deprecated-copy-with-user-provided-copy -Wno-shadow -Werror'
./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
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