mirror of
https://github.com/harfbuzz/harfbuzz.git
synced 2025-04-21 12:39:35 +00:00
GitHub actions will start failing jobs using Ubuntu 20.04 images, so switch to 24.04. Switch also on CircleCI while at it.
230 lines
7.8 KiB
YAML
230 lines
7.8 KiB
YAML
version: 2.1
|
|
|
|
executors:
|
|
win32-executor:
|
|
docker:
|
|
- image: cimg/base:2023.10
|
|
win64-executor:
|
|
docker:
|
|
- image: cimg/base:2023.10
|
|
dist-executor:
|
|
docker:
|
|
- image: cimg/base:2023.10
|
|
|
|
jobs:
|
|
|
|
macos-aat-fonts:
|
|
macos:
|
|
xcode: "15.3.0"
|
|
steps:
|
|
- checkout
|
|
- run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 icu4c graphite2 gobject-introspection ninja
|
|
- run: pip3 install meson --upgrade
|
|
- run: brew link --force icu4c
|
|
- run: PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig" meson setup build -Dcoretext=enabled -Dgraphite=enabled -Dauto_features=enabled -Dchafa=disabled -Ddocs=disabled
|
|
- run: meson compile -Cbuild
|
|
- run: meson test -Cbuild --print-errorlogs
|
|
- store_artifacts:
|
|
path: build/meson-logs/
|
|
|
|
dist:
|
|
executor: dist-executor
|
|
steps:
|
|
- checkout
|
|
- run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y git ninja-build binutils 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: meson setup build
|
|
- run: meson dist --no-tests -Cbuild
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths: build/meson-dist/harfbuzz-*.tar.xz
|
|
|
|
publish-dist:
|
|
executor: dist-executor
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run: |
|
|
.ci/publish_release_artifact.sh build/meson-dist/harfbuzz-$CIRCLE_TAG.tar.xz
|
|
|
|
fedora-valgrind:
|
|
docker:
|
|
- image: fedora:36
|
|
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 setup build --buildtype=debugoptimized
|
|
- run: meson compile -Cbuild -j9
|
|
- run: RUN_VALGRIND=1 meson test -Cbuild -t 10 --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: |
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip3 install meson==0.56.0
|
|
meson setup build --buildtype=minsize
|
|
meson compile -Cbuild -j9
|
|
meson test -Cbuild --print-errorlogs
|
|
|
|
asan-ubsan:
|
|
docker:
|
|
- image: ubuntu
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip python3-venv ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
|
|
- run: |
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip3 install meson==0.56.0
|
|
CC=clang CXX=clang++ meson setup build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
|
|
meson compile -Cbuild -j9
|
|
meson test -Cbuild -t 10 --print-errorlogs | asan_symbolize | c++filt
|
|
|
|
tsan:
|
|
docker:
|
|
- image: ubuntu:24.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip python3-venv ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
|
|
- run: |
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip3 install meson==0.56.0
|
|
CC=clang CXX=clang++ meson setup build --default-library=static -Db_sanitize=thread --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
|
|
meson compile -Cbuild -j9
|
|
meson test -Cbuild -t 10 --print-errorlogs | asan_symbolize | c++filt
|
|
|
|
msan:
|
|
docker:
|
|
- image: ubuntu:24.04
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip python3-venv ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
|
|
- run: |
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
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
|
|
CC=clang CXX=clang++ meson setup build --default-library=static -Db_sanitize=memory --buildtype=debugoptimized --wrap-mode=nodownload -Dauto_features=disabled -Dtests=enabled -Dexperimental_api=true
|
|
meson compile -Cbuild -j9
|
|
meson test -Cbuild -t 10 --print-errorlogs | asan_symbolize | c++filt
|
|
|
|
clang-cxx2a:
|
|
docker:
|
|
- image: ubuntu
|
|
steps:
|
|
- checkout
|
|
- run: apt update || true
|
|
- run: DEBIAN_FRONTEND=noninteractive apt install -y clang lld git binutils
|
|
- run: clang -c src/harfbuzz-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 python3 python3-pip python3-venv git g++-mingw-w64-i686 zip
|
|
- run: |
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip3 install meson==1.6.0
|
|
bash .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 python3 python3-pip python3-venv git g++-mingw-w64-x86-64 zip
|
|
- run: |
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip3 install meson==1.6.0
|
|
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
|
|
- dist:
|
|
filters: # must have filter or won't work as a dependency
|
|
tags:
|
|
only: /.*/
|
|
- publish-dist:
|
|
requires:
|
|
- dist
|
|
filters:
|
|
tags:
|
|
only: /^\d+\.\d+\.\d+$/
|
|
branches:
|
|
ignore: /.*/
|
|
- fedora-valgrind
|
|
- alpine
|
|
- 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: /.*/
|