blob: ef062c96c3be9c1054141856b64ae6c2462a0ba6 [file] [log] [blame]
Caleb Maclennana2d45cd2020-09-11 14:14:20 +03001version: 2.1
2
3executors:
4 win32-executor:
5 docker:
6 - image: cimg/base:edge-20.04
Khaled Hosnye38b8732021-09-07 14:13:23 +02007 win64-executor:
8 docker:
9 - image: cimg/base:edge-20.04
Caleb Maclennan42bcc472020-09-11 16:40:32 +030010 autotools-executor:
11 docker:
12 - image: cimg/base:edge-20.04
Behdad Esfahbod65d4e5b2017-11-01 01:15:27 -060013
ebraminiob7982c92017-10-31 12:42:08 -070014jobs:
15
Khaled Hosny5f5a8b42021-07-12 22:24:14 +020016 macos-aat-fonts:
Ebrahim Byagowi49434bd2019-12-10 16:28:04 +033017 macos:
Khaled Hosny5f5a8b42021-07-12 22:24:14 +020018 xcode: "12.5.1"
Ebrahim Byagowi8b6eb6c2019-03-08 01:33:41 +033019 steps:
20 - checkout
Khaled Hosnybac8a852020-11-21 16:07:57 +020021 - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 icu4c graphite2 gobject-introspection gtk-doc ninja
Ebrahim Byagowi471ae782020-07-06 18:29:23 +043022 - run: pip3 install meson --upgrade
Khaled Hosnyc571a962021-04-25 15:43:30 +020023 - 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
Ebrahim Byagowi3a8d1372020-07-06 16:31:32 +043024 - run: meson compile -Cbuild
25 - run: meson test -Cbuild --print-errorlogs
Khaled Hosny5adc1342020-10-23 18:39:34 +020026 - store_artifacts:
27 path: build/meson-logs/
Ebrahim Byagowi8b6eb6c2019-03-08 01:33:41 +033028
Ebrahim Byagowi51933572020-08-11 23:51:59 +043029 # will be dropped with autotools removal
30 distcheck:
Caleb Maclennan42bcc472020-09-11 16:40:32 +030031 executor: autotools-executor
Ebrahim Byagowi51933572020-08-11 23:51:59 +043032 steps:
33 - checkout
Khaled Hosny743baf32021-03-22 15:51:17 +020034 - 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
Garret Riegerf3e03152021-07-27 14:40:15 -070035 - run: pip3 install fonttools meson --upgrade
Ebrahim Byagowi51933572020-08-11 23:51:59 +043036 - run: ./autogen.sh
Khaled Hosnyf2240d12021-04-16 02:37:11 +020037 - run: make -j2 distcheck
Ebrahim Byagowi51933572020-08-11 23:51:59 +043038 - run: rm harfbuzz-* && make distdir
Khaled Hosnyf2240d12021-04-16 02:37:11 +020039 - run: cd harfbuzz-* && meson build && ninja -j2 -Cbuild test
Caleb Maclennan65be5382020-09-11 16:46:34 +030040 - run: make dist
41 - persist_to_workspace:
42 root: .
43 paths: harfbuzz-*.tar.xz
44
45 publish-dist:
46 executor: autotools-executor
47 steps:
Caleb Maclennanf4dea332020-09-11 17:23:00 +030048 - checkout
Caleb Maclennan65be5382020-09-11 16:46:34 +030049 - attach_workspace:
50 at: .
51 - run: |
Caleb Maclennanf4dea332020-09-11 17:23:00 +030052 .ci/publish_release_artifact.sh harfbuzz-$CIRCLE_TAG.tar.xz
Ebrahim Byagowi51933572020-08-11 23:51:59 +043053
Ebrahim Byagowie4f99692020-07-08 15:10:25 +043054 fedora-valgrind:
Ebrahim Byagowie24bea82018-01-10 23:51:56 +033055 docker:
Khaled Hosny517d68b2021-05-01 23:50:39 +020056 - image: fedora:33
Ebrahim Byagowie24bea82018-01-10 23:51:56 +033057 steps:
58 - checkout
Khaled Hosnybac8a852020-11-21 16:07:57 +020059 - 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
Ebrahim Byagowie4f99692020-07-08 15:10:25 +043060 - run: meson build --buildtype=debugoptimized
61 - run: ninja -Cbuild -j9
Ebrahim Byagowi3163e9f2020-07-12 23:11:45 +043062 # TOOD: increase timeouts and remove --no-suite=slow
Khaled Hosny449c4292021-12-12 07:50:06 +020063 - 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))
Ebrahim Byagowie4f99692020-07-08 15:10:25 +043064
65 alpine:
66 docker:
67 - image: alpine
68 steps:
69 - checkout
Khaled Hosnybac8a852020-11-21 16:07:57 +020070 - run: apk update && apk add ragel gcc g++ glib-dev freetype-dev cairo-dev git py3-pip ninja
Khaled Hosny69d8f272021-11-20 17:09:15 +020071 - run: pip3 install meson==0.56.0
Ebrahim Byagowie4f99692020-07-08 15:10:25 +043072 - 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
Khaled Hosnybac8a852020-11-21 16:07:57 +020081 - 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
Garret Riegerf3e03152021-07-27 14:40:15 -070082 - run: pip install flake8 fonttools
Ebrahim Byagowie4f99692020-07-08 15:10:25 +043083 - run: flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
ebraminioc0107c12020-08-10 14:30:34 +043084 - run: meson build -Dgraphite=enabled -Dauto_features=enabled -Dexperimental_api=true
Ebrahim Byagowie4f99692020-07-08 15:10:25 +043085 - 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
Khaled Hosnyed655772021-11-20 20:51:26 +020091 asan-ubsan:
Ebrahim Byagowie4f99692020-07-08 15:10:25 +043092 docker:
93 - image: ubuntu:20.04
94 steps:
95 - checkout
Behdad Esfahbod95826402021-03-15 16:47:27 -060096 - run: apt update || true
Khaled Hosny69d8f272021-11-20 17:09:15 +020097 - 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
Khaled Hosnyed655772021-11-20 20:51:26 +020099 - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
Ebrahim Byagowi3163e9f2020-07-12 23:11:45 +0430100 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
Khaled Hosnyed655772021-11-20 20:51:26 +0200101
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
Ebrahim Byagowi3163e9f2020-07-12 23:11:45 +0430111 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
Khaled Hosnyed655772021-11-20 20:51:26 +0200112
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
Ebrahim Byagowie4f99692020-07-08 15:10:25 +0430121 # msan, needs --force-fallback-for=glib,freetype2 also which doesn't work yet but runs fuzzer cases at least
Khaled Hosnyed655772021-11-20 20:51:26 +0200122 - 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
Ebrahim Byagowi3163e9f2020-07-12 23:11:45 +0430123 - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
Khaled Hosnyed655772021-11-20 20:51:26 +0200124
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
Behdad Esfahbodf5356bc2021-03-15 16:52:39 -0600132 - run: clang -c src/harfbuzz.cc src/hb-subset*.cc -DHB_NO_MT -Werror -std=c++2a
Ebrahim Byagowie24bea82018-01-10 23:51:56 +0330133
Ebrahim Byagowibec3db42020-07-25 13:45:34 +0430134 crossbuild-win32:
Caleb Maclennana2d45cd2020-09-11 14:14:20 +0300135 executor: win32-executor
Ebrahim Byagowie24bea82018-01-10 23:51:56 +0330136 steps:
137 - checkout
Khaled Hosnyf73053e2021-08-15 18:27:32 +0200138 - 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
Xavier Claessensa082fe42020-11-06 13:02:21 -0500139 - run: pip3 install meson==0.56.0 --upgrade
Ebrahim Byagowi6058ede2020-06-01 12:58:31 +0430140 - run: .ci/build-win32.sh
141 - store_artifacts:
142 path: harfbuzz-win32.zip
Caleb Maclennan610ed3b2020-09-11 10:47:08 +0300143 - persist_to_workspace:
144 root: .
145 paths: harfbuzz-win32.zip
146
147 publish-win32:
148 executor: win32-executor
149 steps:
Caleb Maclennanf4dea332020-09-11 17:23:00 +0300150 - checkout
Caleb Maclennan610ed3b2020-09-11 10:47:08 +0300151 - attach_workspace:
152 at: .
Caleb Maclennanc70f5092020-09-11 14:54:02 +0300153 - run: |
Caleb Maclennanf4dea332020-09-11 17:23:00 +0300154 mv harfbuzz-win32{,-$CIRCLE_TAG}.zip
155 .ci/publish_release_artifact.sh harfbuzz-win32-$CIRCLE_TAG.zip
ebraminiocd8c62f2017-11-21 01:07:26 -0500156
Khaled Hosnyddb4f9b2021-08-15 17:24:51 +0200157 crossbuild-win64:
Khaled Hosnye38b8732021-09-07 14:13:23 +0200158 executor: win64-executor
Khaled Hosnyddb4f9b2021-08-15 17:24:51 +0200159 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.56.0 --upgrade
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:
Khaled Hosnye38b8732021-09-07 14:13:23 +0200171 executor: win64-executor
Khaled Hosnyddb4f9b2021-08-15 17:24:51 +0200172 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
ebraminiob7982c92017-10-31 12:42:08 -0700181workflows:
182 version: 2
Caleb Maclennan610ed3b2020-09-11 10:47:08 +0300183
ebraminiob7982c92017-10-31 12:42:08 -0700184 build:
185 jobs:
Khaled Hosny5f5a8b42021-07-12 22:24:14 +0200186 - macos-aat-fonts
Caleb Maclennan7f9173d2021-08-18 14:43:54 +0300187 - distcheck:
188 filters: # must have filter or won't work as a dependency
189 tags:
190 only: /.*/
Caleb Maclennan65be5382020-09-11 16:46:34 +0300191 - publish-dist:
192 requires:
193 - distcheck
194 filters:
195 tags:
Caleb Maclennane43b9a22020-09-11 22:15:10 +0300196 only: /^\d+\.\d+\.\d+$/
Caleb Maclennan65be5382020-09-11 16:46:34 +0300197 branches:
198 ignore: /.*/
Ebrahim Byagowie4f99692020-07-08 15:10:25 +0430199 - fedora-valgrind
200 - alpine
Khaled Hosny094406b2021-02-10 22:49:27 +0200201 #- archlinux
Khaled Hosnyed655772021-11-20 20:51:26 +0200202 - asan-ubsan
203 - tsan
204 - msan
205 - clang-cxx2a
Caleb Maclennan7f9173d2021-08-18 14:43:54 +0300206 - 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: /.*/
Caleb Maclennan610ed3b2020-09-11 10:47:08 +0300214 - publish-win32:
215 requires:
216 - crossbuild-win32
217 filters:
218 tags:
Caleb Maclennane43b9a22020-09-11 22:15:10 +0300219 only: /^\d+\.\d+\.\d+$/
Caleb Maclennan610ed3b2020-09-11 10:47:08 +0300220 branches:
221 ignore: /.*/
Khaled Hosnyddb4f9b2021-08-15 17:24:51 +0200222 - publish-win64:
223 requires:
224 - crossbuild-win64
225 filters:
226 tags:
227 only: /^\d+\.\d+\.\d+$/
228 branches:
229 ignore: /.*/