mirror of
https://github.com/harfbuzz/harfbuzz.git
synced 2025-04-21 12:39:35 +00:00
The default --num-processes is the number of CPUs multiplied by 5, which seems to give this VM a hard-time. Even the number of CPUs is too much, so lets use half of that (I’m adding one just in case the division gives zero).
229 lines
8.2 KiB
YAML
229 lines
8.2 KiB
YAML
version: 2.1
|
|
|
|
executors:
|
|
win32-executor:
|
|
docker:
|
|
- image: cimg/base:edge-20.04
|
|
win64-executor:
|
|
docker:
|
|
- image: cimg/base:edge-20.04
|
|
autotools-executor:
|
|
docker:
|
|
- image: cimg/base:edge-20.04
|
|
|
|
jobs:
|
|
|
|
macos-aat-fonts:
|
|
macos:
|
|
xcode: "12.5.1"
|
|
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 -Dchafa=disabled
|
|
- run: meson compile -Cbuild
|
|
- run: meson test -Cbuild --print-errorlogs
|
|
- store_artifacts:
|
|
path: build/meson-logs/
|
|
|
|
# will be dropped with autotools removal
|
|
distcheck:
|
|
executor: autotools-executor
|
|
steps:
|
|
- checkout
|
|
- run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y git ninja-build binutils libtool autoconf automake make gcc g++ pkg-config ragel gtk-doc-tools gobject-introspection libfreetype6-dev libglib2.0-dev libgirepository1.0-dev libcairo2-dev libicu-dev libgraphite2-dev python3 python3-pip
|
|
- run: pip3 install fonttools meson --upgrade
|
|
- run: ./autogen.sh
|
|
- run: make -j2 distcheck
|
|
- run: rm harfbuzz-* && make distdir
|
|
- run: cd harfbuzz-* && meson build && ninja -j2 -Cbuild test
|
|
- run: make dist
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths: harfbuzz-*.tar.xz
|
|
|
|
publish-dist:
|
|
executor: autotools-executor
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run: |
|
|
.ci/publish_release_artifact.sh harfbuzz-$CIRCLE_TAG.tar.xz
|
|
|
|
fedora-valgrind:
|
|
docker:
|
|
- image: fedora:33
|
|
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 meson test -Cbuild --no-suite=slow --wrap='valgrind --leak-check=full --error-exitcode=1' --print-errorlogs --num-processes=$(($(nproc)/2 + 1))
|
|
|
|
alpine:
|
|
docker:
|
|
- image: alpine
|
|
steps:
|
|
- checkout
|
|
- run: apk update && apk add ragel gcc g++ glib-dev freetype-dev cairo-dev git py3-pip ninja
|
|
- run: pip3 install meson==0.56.0
|
|
- 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 -Dexperimental_api=true
|
|
- 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
|
|
|
|
asan-ubsan:
|
|
docker:
|
|
- image: ubuntu:20.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
|
|
- run: pip3 install meson==0.56.0
|
|
- run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
|
|
- run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
|
|
|
|
tsan:
|
|
docker:
|
|
- image: ubuntu:20.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
|
|
- run: pip3 install meson==0.56.0
|
|
- run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=thread --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
|
|
- run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
|
|
|
|
msan:
|
|
docker:
|
|
- image: ubuntu:20.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
|
|
- run: pip3 install meson==0.56.0
|
|
# msan, needs --force-fallback-for=glib,freetype2 also which doesn't work yet but runs fuzzer cases at least
|
|
- run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=memory --buildtype=debugoptimized --wrap-mode=nodownload -Dauto_features=disabled -Dtests=enabled -Dexperimental_api=true
|
|
- run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
|
|
|
|
clang-cxx2a:
|
|
docker:
|
|
- image: ubuntu:20.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y clang lld git binutils
|
|
- run: clang -c src/harfbuzz.cc src/hb-subset*.cc -DHB_NO_MT -Werror -std=c++2a
|
|
|
|
crossbuild-win32:
|
|
executor: win32-executor
|
|
steps:
|
|
- checkout
|
|
- run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y ninja-build gtk-doc-tools python3 python3-pip git g++-mingw-w64-i686 zip
|
|
- run: pip3 install meson==0.56.0 --upgrade
|
|
- run: .ci/build-win32.sh
|
|
- store_artifacts:
|
|
path: harfbuzz-win32.zip
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths: harfbuzz-win32.zip
|
|
|
|
publish-win32:
|
|
executor: win32-executor
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run: |
|
|
mv harfbuzz-win32{,-$CIRCLE_TAG}.zip
|
|
.ci/publish_release_artifact.sh harfbuzz-win32-$CIRCLE_TAG.zip
|
|
|
|
crossbuild-win64:
|
|
executor: win64-executor
|
|
steps:
|
|
- checkout
|
|
- run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y ninja-build gtk-doc-tools python3 python3-pip git g++-mingw-w64-x86-64 zip
|
|
- run: pip3 install meson==0.56.0 --upgrade
|
|
- run: bash .ci/build-win64.sh
|
|
- store_artifacts:
|
|
path: harfbuzz-win64.zip
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths: harfbuzz-win64.zip
|
|
|
|
publish-win64:
|
|
executor: win64-executor
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run: |
|
|
mv harfbuzz-win64{,-$CIRCLE_TAG}.zip
|
|
.ci/publish_release_artifact.sh harfbuzz-win64-$CIRCLE_TAG.zip
|
|
|
|
|
|
workflows:
|
|
version: 2
|
|
|
|
build:
|
|
jobs:
|
|
- macos-aat-fonts
|
|
- distcheck:
|
|
filters: # must have filter or won't work as a dependency
|
|
tags:
|
|
only: /.*/
|
|
- publish-dist:
|
|
requires:
|
|
- distcheck
|
|
filters:
|
|
tags:
|
|
only: /^\d+\.\d+\.\d+$/
|
|
branches:
|
|
ignore: /.*/
|
|
- fedora-valgrind
|
|
- alpine
|
|
#- archlinux
|
|
- asan-ubsan
|
|
- tsan
|
|
- msan
|
|
- clang-cxx2a
|
|
- crossbuild-win32:
|
|
filters: # must have filter or won't work as a dependency
|
|
tags:
|
|
only: /.*/
|
|
- crossbuild-win64:
|
|
filters: # must have filter or won't work as a dependency
|
|
tags:
|
|
only: /.*/
|
|
- publish-win32:
|
|
requires:
|
|
- crossbuild-win32
|
|
filters:
|
|
tags:
|
|
only: /^\d+\.\d+\.\d+$/
|
|
branches:
|
|
ignore: /.*/
|
|
- publish-win64:
|
|
requires:
|
|
- crossbuild-win64
|
|
filters:
|
|
tags:
|
|
only: /^\d+\.\d+\.\d+$/
|
|
branches:
|
|
ignore: /.*/
|