comparison mupdf-source/thirdparty/harfbuzz/.circleci/config.yml @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 version: 2.1
2
3 executors:
4 win32-executor:
5 docker:
6 - image: cimg/base:edge-20.04
7 win64-executor:
8 docker:
9 - image: cimg/base:edge-20.04
10 autotools-executor:
11 docker:
12 - image: cimg/base:edge-20.04
13
14 jobs:
15
16 macos-aat-fonts:
17 macos:
18 xcode: "12.5.1"
19 steps:
20 - checkout
21 - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 icu4c graphite2 gobject-introspection gtk-doc ninja
22 - run: pip3 install meson --upgrade
23 - 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
24 - run: meson compile -Cbuild
25 - run: meson test -Cbuild --print-errorlogs
26 - store_artifacts:
27 path: build/meson-logs/
28
29 # will be dropped with autotools removal
30 distcheck:
31 executor: autotools-executor
32 steps:
33 - checkout
34 - 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
35 - run: pip3 install fonttools meson --upgrade
36 - run: ./autogen.sh
37 - run: make -j2 distcheck
38 - run: rm harfbuzz-* && make distdir
39 - run: cd harfbuzz-* && meson build && ninja -j2 -Cbuild test
40 - run: make dist
41 - persist_to_workspace:
42 root: .
43 paths: harfbuzz-*.tar.xz
44
45 publish-dist:
46 executor: autotools-executor
47 steps:
48 - checkout
49 - attach_workspace:
50 at: .
51 - run: |
52 .ci/publish_release_artifact.sh harfbuzz-$CIRCLE_TAG.tar.xz
53
54 fedora-valgrind:
55 docker:
56 - image: fedora:36
57 steps:
58 - checkout
59 - 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
60 - run: meson build --buildtype=debugoptimized
61 - run: ninja -Cbuild -j9
62 # TOOD: increase timeouts and remove --no-suite=slow
63 - 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))
64
65 alpine:
66 docker:
67 - image: alpine
68 steps:
69 - checkout
70 - run: apk update && apk add ragel gcc g++ glib-dev freetype-dev cairo-dev git py3-pip ninja
71 - run: pip3 install meson==0.56.0
72 - run: meson build --buildtype=minsize
73 - run: ninja -Cbuild -j9
74 - run: meson test -Cbuild --print-errorlogs
75
76 archlinux:
77 docker:
78 - image: archlinux/base
79 steps:
80 - checkout
81 - 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
82 - run: pip install flake8 fonttools
83 - run: flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
84 - run: meson build -Dgraphite=enabled -Dauto_features=enabled -Dexperimental_api=true
85 - run: meson compile -Cbuild -j9
86 - run: meson test -Cbuild --print-errorlogs
87 - run: meson dist -Cbuild
88 - run: clang -c src/harfbuzz.cc -DHB_NO_MT
89 - run: clang -c src/hb-*.cc -DHB_NO_MT -DHB_TINY -DHB_NO_OT_FONT
90
91 asan-ubsan:
92 docker:
93 - image: ubuntu:20.04
94 steps:
95 - checkout
96 - run: apt update || true
97 - 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
98 - run: pip3 install meson==0.56.0
99 - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
100 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
101
102 tsan:
103 docker:
104 - image: ubuntu:20.04
105 steps:
106 - checkout
107 - run: apt update || true
108 - 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
109 - run: pip3 install meson==0.56.0
110 - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=thread --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
111 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
112
113 msan:
114 docker:
115 - image: ubuntu:20.04
116 steps:
117 - checkout
118 - run: apt update || true
119 - 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
120 - run: pip3 install meson==0.56.0
121 # msan, needs --force-fallback-for=glib,freetype2 also which doesn't work yet but runs fuzzer cases at least
122 - 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
123 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
124
125 clang-cxx2a:
126 docker:
127 - image: ubuntu:20.04
128 steps:
129 - checkout
130 - run: apt update || true
131 - run: DEBIAN_FRONTEND=noninteractive apt install -y clang lld git binutils
132 - run: clang -c src/harfbuzz-subset.cc -DHB_NO_MT -Werror -std=c++2a
133
134 crossbuild-win32:
135 executor: win32-executor
136 steps:
137 - checkout
138 - 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
139 - run: pip3 install meson==0.60.0
140 - run: .ci/build-win32.sh
141 - store_artifacts:
142 path: harfbuzz-win32.zip
143 - persist_to_workspace:
144 root: .
145 paths: harfbuzz-win32.zip
146
147 publish-win32:
148 executor: win32-executor
149 steps:
150 - checkout
151 - attach_workspace:
152 at: .
153 - run: |
154 mv harfbuzz-win32{,-$CIRCLE_TAG}.zip
155 .ci/publish_release_artifact.sh harfbuzz-win32-$CIRCLE_TAG.zip
156
157 crossbuild-win64:
158 executor: win64-executor
159 steps:
160 - checkout
161 - 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
162 - run: pip3 install meson==0.60.0
163 - run: bash .ci/build-win64.sh
164 - store_artifacts:
165 path: harfbuzz-win64.zip
166 - persist_to_workspace:
167 root: .
168 paths: harfbuzz-win64.zip
169
170 publish-win64:
171 executor: win64-executor
172 steps:
173 - checkout
174 - attach_workspace:
175 at: .
176 - run: |
177 mv harfbuzz-win64{,-$CIRCLE_TAG}.zip
178 .ci/publish_release_artifact.sh harfbuzz-win64-$CIRCLE_TAG.zip
179
180
181 workflows:
182 version: 2
183
184 build:
185 jobs:
186 - macos-aat-fonts
187 - distcheck:
188 filters: # must have filter or won't work as a dependency
189 tags:
190 only: /.*/
191 - publish-dist:
192 requires:
193 - distcheck
194 filters:
195 tags:
196 only: /^\d+\.\d+\.\d+$/
197 branches:
198 ignore: /.*/
199 - fedora-valgrind
200 - alpine
201 #- archlinux
202 - asan-ubsan
203 - tsan
204 - msan
205 - clang-cxx2a
206 - crossbuild-win32:
207 filters: # must have filter or won't work as a dependency
208 tags:
209 only: /.*/
210 - crossbuild-win64:
211 filters: # must have filter or won't work as a dependency
212 tags:
213 only: /.*/
214 - publish-win32:
215 requires:
216 - crossbuild-win32
217 filters:
218 tags:
219 only: /^\d+\.\d+\.\d+$/
220 branches:
221 ignore: /.*/
222 - publish-win64:
223 requires:
224 - crossbuild-win64
225 filters:
226 tags:
227 only: /^\d+\.\d+\.\d+$/
228 branches:
229 ignore: /.*/