Meson Build #643
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: CI | |
on: [push, pull_request] | |
jobs: | |
Linux: | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.os == 'alpine' && 'alpine:latest' || matrix.os == 'ubuntu-20.04' && 'ubuntu:20.04' || 'ubuntu:latest' }} | |
strategy: | |
matrix: | |
os: [ubuntu, ubuntu-20.04, alpine] | |
build-system: [autotools, meson] | |
compiler: [gcc, clang] | |
tls: [openssl, mbedtls, none] | |
html-tests: [true, false] | |
exclude: | |
- os: ubuntu | |
html-tests: false | |
- os: ubuntu-20.04 | |
html-tests: true | |
- os: alpine | |
html-tests: true | |
- os: alpine | |
tls: none | |
- os: ubuntu-20.04 | |
tls: none | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
if [ "${{ matrix.os }}" = "ubuntu" ] || [ "${{ matrix.os }}" = "ubuntu-20.04" ]; then | |
apt-get update | |
export DEBIAN_FRONTEND=noninteractive | |
apt-get install -y autotools-dev autoconf automake clang git imagemagick libfltk1.3-dev libmbedtls-dev libpng-dev libssl-dev libturbojpeg0-dev lld make meson ninja-build pkg-config x11-apps x11-utils xvfb zlib1g-dev | |
else | |
apk add build-base autoconf automake clang fltk-dev git libpng-dev libjpeg-turbo-dev lld mbedtls-dev meson ninja-build openssl-dev | |
fi | |
- name: Set git safe directory | |
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
- name: Prepare Autotools | |
run: | | |
if [ ${{ matrix.build-system }} = "autotools" ]; then | |
./autogen.sh | |
mkdir install build | |
fi | |
- name: Configure Build | |
run: | | |
HTML_TESTS_OPT="" | |
if [ "${{matrix.compiler}}" = "clang" ]; then | |
export CC=clang CXX=clang++ LDFLAGS="-fuse-ld=lld -Wl,--as-needed" | |
else | |
# Enable LTO and strict aliasing warnings for GCC | |
export CFLAGS="-flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing" | |
fi | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
if [ "${{ matrix.tls }}" = "none" ]; then | |
export TLS_OPT="--disable-tls" | |
elif [ "${{ matrix.tls }}" = "mbedtls" ]; then | |
export TLS_OPT="--disable-openssl" | |
else | |
export TLS_OPT="--disable-mbedtls" | |
fi | |
if [ "${{ matrix.html-tests }}" = "true" ]; then | |
export HTML_TESTS_OPT="--enable-html-tests" | |
fi | |
else | |
if [ "${{ matrix.tls }}" = "none" ]; then | |
export TLS_OPT="-Dtls=disabled -Dopenssl=false -Dmbedtls=false" | |
elif [ "${{ matrix.tls }}" = "mbedtls" ]; then | |
export TLS_OPT="-Dmbedtls=true -Dopenssl=false" | |
else | |
export TLS_OPT="-Dopenssl=true -Dmbedtls=false" | |
fi | |
if [ "${{ matrix.html-tests }}" = "true" ]; then | |
export HTML_TESTS_OPT="-Dhtml-tests=enabled" | |
fi | |
fi | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
cd build | |
../configure --prefix=$(readlink -f ../install) ${TLS_OPT} ${HTML_TESTS_OPT} ${{ matrix.os == 'ubuntu-20.04' && '--disable-dependency-tracking' || '' }} | |
else | |
meson setup build --prefix="$(pwd)/install" ${TLS_OPT} ${HTML_TESTS_OPT} | |
fi | |
- name: Build Dillo for ${{ matrix.os }} with ${{ matrix.build-system }} and ${{ matrix.compiler }} | |
run: | | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
cd build | |
make && make install | |
mkdir -p ~/.dillo/ | |
cp ../install/etc/dillo/* ~/.dillo/ | |
else | |
ninja -C build | |
fi | |
- name: Run tests | |
run: | | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
cd build | |
export DILLOBIN=$(readlink -f bin/dillo) | |
make check || (cat test/html/test-suite.log; false) | |
export DILLOBIN= | |
else | |
meson test -C build | |
fi | |
- name: Check release fits in a floppy disk of 1.44 MB | |
run: | | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
cd build | |
make dist-gzip | |
size=$(stat -c %s dillo-*.tar.gz) | |
floppy=$((1474560 - 32*1024)) # Leave room for FAT table | |
echo "Floppy occupation: $(($size * 100 / $floppy)) %" | |
if [ $size -lt $floppy ]; then | |
echo 'OK: Fits in floopy disk' | |
else | |
echo "FAIL: Release size too big: $size / $floppy" | |
exit 1 | |
fi | |
else | |
echo "Skipping floppy disk check for Meson build; not yet implemented" | |
fi | |
- name: Run distcheck | |
run: | | |
HTML_TESTS_OPT="" | |
if [ "${{ matrix.html-tests }}" = "true" ]; then | |
HTML_TESTS_OPT="--enable-html-tests" | |
fi | |
if [ "${{ matrix.os}}" = "ubuntu" ]; then | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
mkdir build-distcheck install-distcheck | |
cd build-distcheck && ../configure --prefix=$(readlink -f ../install-distcheck) ${HTML_TESTS_OPT} | |
make distcheck DISTCHECK_CONFIGURE_FLAGS="${HTML_TESTS_OPT}" | |
else | |
echo "TODO: run \`meson dist -C build\`; currently errors out" | |
fi | |
else | |
echo "Skipping distcheck for OS ${{ matrix.os }}" | |
fi | |
macOS-13: | |
runs-on: macos-13 | |
strategy: | |
matrix: | |
build-system: [autotools, meson] | |
tls: [openssl-1.1, openssl-3, mbedtls] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Install dependencies | |
run: | | |
tls_lib="" | |
if [ "${{ matrix.tls }}" = "mbedtls" ]; then | |
tls_lib="mbedtls" | |
elif [ "${{ matrix.tls }}" = "openssl-3" ]; then | |
brew uninstall [email protected] | |
tls_lib="openssl@3" | |
fi | |
brew install autoconf automake fltk meson ${tls_lib} | |
- if: matrix.build-system == 'autotools' | |
name: Prepare Build | |
run: ./autogen.sh | |
- name: Configure Build | |
run: | | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
if [ "${{ matrix.tls }}" = "mbedtls" ]; then | |
./configure --disable-openssl | |
else | |
./configure --disable-mbedtls | |
fi | |
else | |
if [ "${{ matrix.tls }}" = "mbedtls" ]; then | |
meson setup build --buildtype=release --prefix=$(pwd)/install -Dmbedtls=true -Dopenssl=false | |
else | |
meson setup build --buildtype=release --prefix=$(pwd)/install -Dmbedtls=false -Dopenssl=true | |
fi | |
fi | |
- name: Build Dillo for macOS-13 with ${{ matrix.build-system }} and ${{ matrix.compiler }} | |
run: | | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
make | |
else | |
ninja -C build | |
fi | |
- name: Run tests | |
run: | | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
make check | |
else | |
meson test -C build | |
fi | |
- name: Run distcheck | |
run: | | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
make distcheck | |
else | |
echo "TODO: run \`meson dist -C build\`; currently errors out" | |
fi | |
FreeBSD-14: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build-system: [autotools, meson] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: FreeBSD VM build | |
id: test | |
uses: vmactions/freebsd-vm@v1 | |
with: | |
release: "14.0" | |
usesh: true | |
prepare: | | |
set -x | |
pkg install -y automake fltk meson ninja | |
run: | | |
set -x | |
pwd | |
freebsd-version | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
./autogen.sh | |
./configure CPPFLAGS='-I/usr/local/include' LDFLAGS='-L/usr/local/lib' | |
cat config.log | |
make | |
make check | |
ldd src/dillo | |
else | |
CPPFLAGS='-I/usr/local/include' LDFLAGS='-L/usr/local/lib' meson setup build | |
ninja -C build | |
ninja -C build test | |
ldd build/src/dillo | |
fi | |
Windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
build-system: [autotools, meson] | |
steps: | |
- run: git config --global core.autocrlf input | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- uses: cygwin/cygwin-install-action@master | |
with: | |
packages: autoconf automake gcc-core gcc-g++ libfltk-devel libgif-devel libiconv-devel libjpeg-devel libpng-devel libssl-devel make mbedtls-devel meson ninja zlib-devel | |
- shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}' | |
run: | | |
set -x | |
cd ${GITHUB_WORKSPACE} | |
pwd | |
ls -l | |
if [ "${{ matrix.build-system }}" = "autotools" ]; then | |
./autogen.sh | |
./configure --disable-openssl | |
make | |
make check | |
ls -l src/dillo | |
else | |
# Cygwin doesn't currently package a version of mbedtls that has a pkgconfig file | |
meson setup build -Dmbedtls=false -Dopenssl=true | |
ninja -C build | |
ninja -C build test | |
ls -l build/src/dillo | |
fi |