Meson Build #615
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 clang git imagemagick libfltk1.3-dev libssl-dev lld meson ninja-build x11-apps x11-utils xvfb | |
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="-Denable-html-tests=true" | |
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.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 | |
meson dist -C build | |
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 |