Skip to content

Meson Build

Meson Build #631

Workflow file for this run

name: CI
on: [push, pull_request]
jobs:
build-test-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 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"
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}
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-openssl-1-1:
runs-on: macos-13
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Install dependencies
run: brew install autoconf automake fltk
- name: autogen
run: ./autogen.sh
- name: configure
run: ./configure --disable-mbedtls
- name: make
run: make
- name: make check
run: make check
- name: make distcheck
run: make distcheck
macOS-13-openssl-3:
runs-on: macos-13
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Remove old OpenSSL 1.1
run: brew uninstall [email protected]
- name: Install dependencies
run: brew install autoconf automake fltk openssl@3
- name: autogen
run: ./autogen.sh
- name: configure
run: ./configure --disable-mbedtls
- name: make
run: make
- name: make check
run: make check
- name: make distcheck
run: make distcheck
freebsd-14-openssl-3:
runs-on: ubuntu-latest
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
run: |
set -x
pwd
freebsd-version
./autogen.sh
./configure CPPFLAGS='-I/usr/local/include' LDFLAGS='-L/usr/local/lib'
cat config.log
make
make check
ldd src/dillo
windows-mbedtls:
runs-on: windows-latest
steps:
- run: git config --global core.autocrlf input
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: cygwin/cygwin-install-action@master
with:
packages: gcc-core gcc-g++ autoconf automake make zlib-devel mbedtls-devel libfltk-devel libiconv-devel libpng-devel libjpeg-devel libgif-devel
- shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
run: |
set -x
cd ${GITHUB_WORKSPACE}
pwd
ls -l
./autogen.sh
./configure
make
make check
ls -l src/dillo