3163e9fedb
meson is passing it itself Fortunately oss-fuzz has its own timeout value, I just like to be conservative here and not involve outsiders with flakiness of tests specially as meson which runs them concurrently so consuming more time is expected on meson.
159 lines
7.7 KiB
YAML
159 lines
7.7 KiB
YAML
version: 2
|
|
|
|
jobs:
|
|
|
|
macos-10.12.6-aat-fonts:
|
|
macos:
|
|
xcode: "9.0.1"
|
|
steps:
|
|
- checkout
|
|
- run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 ninja
|
|
- run: pip3 install meson --upgrade
|
|
- run: meson build
|
|
- run: meson compile -Cbuild # or ninja -Cbuild
|
|
- run: meson test -Cbuild --print-errorlogs
|
|
|
|
macos-10.13.6-aat-fonts:
|
|
macos:
|
|
xcode: "10.1.0"
|
|
steps:
|
|
- checkout
|
|
- run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 ninja
|
|
- run: pip3 install meson --upgrade
|
|
- run: meson build
|
|
- run: meson compile -Cbuild
|
|
- run: meson test -Cbuild --print-errorlogs
|
|
|
|
macos-10.14.4-aat-fonts:
|
|
macos:
|
|
xcode: "11.1.0"
|
|
steps:
|
|
- checkout
|
|
- run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 icu4c graphite2 ninja
|
|
- run: pip3 install meson --upgrade
|
|
- run: PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig" meson build -Dcoretext=enabled
|
|
- run: meson compile -Cbuild
|
|
- run: meson test -Cbuild --print-errorlogs
|
|
|
|
macos-10.15.3-aat-fonts:
|
|
macos:
|
|
xcode: "11.4.0"
|
|
steps:
|
|
- checkout
|
|
- run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 icu4c graphite2 gobject-introspection gtk-doc ninja
|
|
- run: pip3 install meson --upgrade
|
|
- run: PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig" meson build -Dcoretext=enabled -Dgraphite=enabled -Dauto_features=enabled
|
|
- run: meson compile -Cbuild
|
|
- run: meson test -Cbuild --print-errorlogs
|
|
|
|
# will be dropped with autotools removal
|
|
distcheck:
|
|
docker:
|
|
- image: ubuntu:20.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update && DEBIAN_FRONTEND=noninteractive apt install -y git ninja-build binutils libtool autoconf automake make gcc g++ pkg-config ragel gtk-doc-tools libfontconfig1-dev libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python3 python3-pip cmake
|
|
- run: pip3 install fonttools meson --upgrade
|
|
- run: ./autogen.sh
|
|
- run: make -j32
|
|
- run: make distcheck || .ci/fail.sh
|
|
- run: rm harfbuzz-* && make distdir
|
|
- run: cd harfbuzz-* && meson build && ninja -Cbuild test
|
|
- run: cd harfbuzz-* && cmake -Bcmakebuild -H. && cmake --build cmakebuild
|
|
|
|
fedora-valgrind:
|
|
docker:
|
|
- image: fedora
|
|
steps:
|
|
- checkout
|
|
- run: dnf install -y pkg-config ragel valgrind gcc gcc-c++ meson git glib2-devel freetype-devel cairo-devel libicu-devel gobject-introspection-devel graphite2-devel redhat-rpm-config python python-pip || true
|
|
- run: meson build --buildtype=debugoptimized
|
|
- run: ninja -Cbuild -j9
|
|
# TOOD: increase timeouts and remove --no-suite=slow
|
|
- run: RUN_VALGRIND=1 HB_TEST_SHAPE_FUZZER_TIMEOUT=5 meson test -Cbuild --no-suite=slow --wrap='valgrind --leak-check=full --error-exitcode=1' --print-errorlogs
|
|
|
|
alpine:
|
|
docker:
|
|
- image: alpine
|
|
steps:
|
|
- checkout
|
|
- run: apk update && apk add ragel meson gcc g++ glib-dev freetype-dev cairo-dev git
|
|
- run: meson build --buildtype=minsize
|
|
- run: ninja -Cbuild -j9
|
|
- run: meson test -Cbuild --print-errorlogs
|
|
|
|
archlinux:
|
|
docker:
|
|
- image: archlinux/base
|
|
steps:
|
|
- checkout
|
|
- run: pacman --noconfirm -Syu freetype2 meson git clang cairo icu gettext gobject-introspection gcc gcc-libs glib2 graphite pkg-config ragel python python-pip base-devel gtk-doc
|
|
- run: pip install flake8 fonttools
|
|
- run: flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
|
|
- run: meson build -Dgraphite=enabled -Dauto_features=enabled
|
|
- run: meson compile -Cbuild -j9
|
|
- run: meson test -Cbuild --print-errorlogs
|
|
- run: meson dist -Cbuild
|
|
- run: clang -c src/harfbuzz.cc -DHB_NO_MT
|
|
- run: clang -c src/hb-*.cc -DHB_NO_MT -DHB_TINY -DHB_NO_OT_FONT
|
|
|
|
sanitizers:
|
|
docker:
|
|
- image: ubuntu:20.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true; DEBIAN_FRONTEND=noninteractive apt install -y wget gnupg
|
|
- run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
|
- run: echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" > /etc/apt/sources.list.d/llvmdev.list
|
|
- run: echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main" > /etc/apt/sources.list.d/llvmdevsrc.list
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y clang lld git binutils meson pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
|
|
# asan+ubsan
|
|
- run: rm -rf build && meson build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload
|
|
- run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
|
|
# tsan
|
|
- run: rm -rf build && meson build --default-library=static -Db_sanitize=thread --buildtype=debugoptimized --wrap-mode=nodownload
|
|
- run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
|
|
# msan, needs --force-fallback-for=glib,freetype2 also which doesn't work yet but runs fuzzer cases at least
|
|
- run: rm -rf build && meson build --default-library=static -Db_sanitize=memory --buildtype=debugoptimized --wrap-mode=nodownload -Dauto_features=disabled -Dtests=enabled
|
|
- run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
|
|
# test -std=c++2a and -Weverything of nightly clang builds
|
|
- run: clang -c src/harfbuzz.cc src/hb-subset*.cc -DHB_NO_MT -Werror -std=c++2a
|
|
- run: clang -c src/hb-*.cc -DHB_NO_MT -Werror -Weverything -Wno-old-style-cast -Wno-documentation -Wno-documentation-unknown-command -Wno-c++98-compat -Wno-cast-qual -Wno-c++98-compat-pedantic -Wno-sign-conversion -Wno-padded -Wno-shorten-64-to-32 -Wno-reserved-id-macro -Wno-float-conversion -Wno-format-pedantic -Wno-shadow -Wno-conversion -Wno-zero-as-null-pointer-constant -Wno-missing-field-initializers -Wno-used-but-marked-unused -Wno-unused-macros -Wno-comma -Wno-float-equal -Wno-disabled-macro-expansion -Wno-weak-vtables -Wno-unused-parameter -Wno-covered-switch-default -Wno-unreachable-code -Wno-unused-template -DHB_WITH_WIN1256
|
|
|
|
meson-gcc-mingw:
|
|
docker:
|
|
- image: ubuntu:20.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update && DEBIAN_FRONTEND=noninteractive apt install -y ninja-build binutils meson gcc g++ pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python3 python3-pip git g++-mingw-w64-i686 zip
|
|
- run: pip3 install fonttools --upgrade
|
|
- run: pip3 install git+https://github.com/mesonbuild/meson # use C linker, remove when meson 0.55 is released
|
|
# a regular meson run
|
|
- run: meson build && ninja -j9 -Cbuild test
|
|
# test a meson based dist
|
|
- run: meson dist -Cbuild && rm -rf build
|
|
# test experimental APIs
|
|
- run: meson build -Dexperimental_api=true -Doptimization=2 && ninja -j9 -Cbuild test # or meson test -Cbuild
|
|
# run benchmarks
|
|
- run: build/perf/perf && meson test -Cbuild --benchmark && rm -rf build # or ninja -Cbuild benchmark
|
|
# mingw
|
|
- run: .ci/build-win32.sh
|
|
- store_artifacts:
|
|
path: harfbuzz-win32.zip
|
|
|
|
workflows:
|
|
version: 2
|
|
build:
|
|
jobs:
|
|
- macos-10.12.6-aat-fonts
|
|
- macos-10.13.6-aat-fonts
|
|
- macos-10.14.4-aat-fonts
|
|
- macos-10.15.3-aat-fonts
|
|
- distcheck # will be dropped with autotools removal
|
|
- fedora-valgrind
|
|
- alpine
|
|
- archlinux
|
|
- sanitizers
|
|
- meson-gcc-mingw
|