1version: 2.1 2 3executors: 4 win32-executor: 5 docker: 6 - image: cimg/base:edge-20.04 7 autotools-executor: 8 docker: 9 - image: cimg/base:edge-20.04 10 11jobs: 12 13 macos-10_14_4-aat-fonts: 14 macos: 15 xcode: "11.1.0" 16 steps: 17 - checkout 18 - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 icu4c graphite2 ninja 19 - run: pip3 install meson --upgrade 20 - run: PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig" meson build -Dcoretext=enabled 21 - run: meson compile -Cbuild 22 - run: meson test -Cbuild --print-errorlogs 23 - store_artifacts: 24 path: build/meson-logs/ 25 26 macos-10_15_3-aat-fonts: 27 macos: 28 xcode: "11.4.0" 29 steps: 30 - checkout 31 - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 icu4c graphite2 gobject-introspection gtk-doc ninja 32 - run: pip3 install meson --upgrade 33 - 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 34 - run: meson compile -Cbuild 35 - run: meson test -Cbuild --print-errorlogs 36 - store_artifacts: 37 path: build/meson-logs/ 38 39 # will be dropped with autotools removal 40 distcheck: 41 executor: autotools-executor 42 steps: 43 - checkout 44 - 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 45 - run: pip3 install fonttools meson --upgrade 46 - run: ./autogen.sh 47 - run: make -j2 distcheck 48 - run: rm harfbuzz-* && make distdir 49 - run: cd harfbuzz-* && meson build && ninja -j2 -Cbuild test 50 - run: make dist 51 - persist_to_workspace: 52 root: . 53 paths: harfbuzz-*.tar.xz 54 55 publish-dist: 56 executor: autotools-executor 57 steps: 58 - checkout 59 - attach_workspace: 60 at: . 61 - run: | 62 .ci/publish_release_artifact.sh harfbuzz-$CIRCLE_TAG.tar.xz 63 64 fedora-valgrind: 65 docker: 66 - image: fedora:33 67 steps: 68 - checkout 69 - 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 70 - run: meson build --buildtype=debugoptimized 71 - run: ninja -Cbuild -j9 72 # TOOD: increase timeouts and remove --no-suite=slow 73 - run: RUN_VALGRIND=1 meson test -Cbuild --no-suite=slow --wrap='valgrind --leak-check=full --error-exitcode=1' --print-errorlogs 74 75 alpine: 76 docker: 77 - image: alpine 78 steps: 79 - checkout 80 - run: apk update && apk add ragel gcc g++ glib-dev freetype-dev cairo-dev git py3-pip ninja 81 - run: pip3 install meson==0.47.0 82 - run: meson build --buildtype=minsize 83 - run: ninja -Cbuild -j9 84 - run: meson test -Cbuild --print-errorlogs 85 86 archlinux: 87 docker: 88 - image: archlinux/base 89 steps: 90 - checkout 91 - 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 92 - run: pip install flake8 fonttools 93 - run: flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics 94 - run: meson build -Dgraphite=enabled -Dauto_features=enabled -Dexperimental_api=true 95 - run: meson compile -Cbuild -j9 96 - run: meson test -Cbuild --print-errorlogs 97 - run: meson dist -Cbuild 98 - run: clang -c src/harfbuzz.cc -DHB_NO_MT 99 - run: clang -c src/hb-*.cc -DHB_NO_MT -DHB_TINY -DHB_NO_OT_FONT 100 101 sanitizers: 102 docker: 103 - image: ubuntu:20.04 104 steps: 105 - checkout 106 - run: apt update || true 107 - 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 108 # asan+ubsan 109 - run: rm -rf build && meson build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true 110 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt 111 # tsan 112 - run: rm -rf build && meson build --default-library=static -Db_sanitize=thread --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true 113 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt 114 # msan, needs --force-fallback-for=glib,freetype2 also which doesn't work yet but runs fuzzer cases at least 115 - run: rm -rf build && meson build --default-library=static -Db_sanitize=memory --buildtype=debugoptimized --wrap-mode=nodownload -Dauto_features=disabled -Dtests=enabled -Dexperimental_api=true 116 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt 117 - run: clang -c src/harfbuzz.cc src/hb-subset*.cc -DHB_NO_MT -Werror -std=c++2a 118 119 crossbuild-win32: 120 executor: win32-executor 121 steps: 122 - checkout 123 - run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y ninja-build binutils 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 124 - run: pip3 install meson==0.56.0 --upgrade 125 - run: .ci/build-win32.sh 126 - store_artifacts: 127 path: harfbuzz-win32.zip 128 - persist_to_workspace: 129 root: . 130 paths: harfbuzz-win32.zip 131 132 publish-win32: 133 executor: win32-executor 134 steps: 135 - checkout 136 - attach_workspace: 137 at: . 138 - run: | 139 mv harfbuzz-win32{,-$CIRCLE_TAG}.zip 140 .ci/publish_release_artifact.sh harfbuzz-win32-$CIRCLE_TAG.zip 141 142workflows: 143 version: 2 144 145 build: 146 jobs: 147 - macos-10_14_4-aat-fonts 148 - macos-10_15_3-aat-fonts 149 - distcheck: # will be dropped with autotools removal 150 filters: 151 tags: 152 only: /^\d+.\d+.\d+$/ 153 - publish-dist: 154 requires: 155 - distcheck 156 filters: 157 tags: 158 only: /^\d+\.\d+\.\d+$/ 159 branches: 160 ignore: /.*/ 161 - fedora-valgrind 162 - alpine 163 #- archlinux 164 - sanitizers 165 - crossbuild-win32: 166 filters: 167 tags: 168 only: /^\d+.\d+.\d+$/ 169 - publish-win32: 170 requires: 171 - crossbuild-win32 172 filters: 173 tags: 174 only: /^\d+\.\d+\.\d+$/ 175 branches: 176 ignore: /.*/ 177