Meson Build #629
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: | |
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 | |
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 |