1version: 2 2 3jobs: 4 5 macos-10.12.6-aat-fonts: 6 macos: 7 xcode: "9.0.1" 8 steps: 9 - checkout 10 - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget autoconf automake libtool pkg-config ragel freetype glib cairo 11 - run: ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo 12 - run: make -j4 13 - run: make check || .ci/fail.sh 14 15 macos-10.13.6-aat-fonts: 16 macos: 17 xcode: "10.1.0" 18 steps: 19 - checkout 20 - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget autoconf automake libtool pkg-config ragel freetype glib cairo 21 - run: ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo 22 - run: make -j4 23 - run: make check || .ci/fail.sh 24 25 macos-10.14.4-aat-fonts: 26 macos: 27 xcode: "11.0.0" 28 steps: 29 - checkout 30 - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget autoconf automake libtool pkg-config ragel freetype glib cairo icu4c graphite2 cmake 31 - run: export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig" && ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-coretext --with-graphite2 32 - run: make -j4 33 - run: make check || .ci/fail.sh 34 - run: cmake -Bbuild -H. -DHB_HAVE_CORETEXT=1 -DHB_BUILD_TESTS=0 && cmake --build build 35 36 distcheck: 37 docker: 38 - image: ubuntu:19.04 39 steps: 40 - checkout 41 - run: apt update && apt install -y ninja-build binutils libtool autoconf automake make cmake gcc g++ pkg-config ragel gtk-doc-tools libfontconfig1-dev libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip 42 - run: pip install fonttools 43 - run: ./autogen.sh 44 - run: make -j32 45 - run: make distcheck || .ci/fail.sh 46 - run: rm -rf harfbuzz-* 47 - run: make distdir && cd harfbuzz-* && cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test && ninja -Cbuild install 48 49 alpine-O3-Os-NOMMAP: 50 docker: 51 - image: alpine 52 steps: 53 - checkout 54 - run: apk update && apk add ragel make pkgconfig libtool autoconf automake gettext gcc g++ glib-dev freetype-dev cairo-dev python 55 # C??FLAGS are not needed for a regular build 56 - run: CFLAGS="-O3" CXXFLAGS="-O3 -DHB_NO_MMAP" ./autogen.sh 57 - run: make -j32 58 - run: make check || .ci/fail.sh 59 - run: make clean 60 - run: CFLAGS="-Os -DHB_OPTIMIZE_SIZE" CXXFLAGS="-Os -DHB_NO_MMAP -DHB_OPTIMIZE_SIZE" ./autogen.sh 61 - run: make -j32 62 - run: make check || .ci/fail.sh 63 64 archlinux-py3-all: 65 docker: 66 - image: archlinux/base 67 steps: 68 - checkout 69 - run: pacman --noconfirm -Syu freetype2 cairo icu gettext gobject-introspection gcc gcc-libs glib2 graphite pkg-config ragel python python-pip make which base-devel 70 - run: pip install flake8 fonttools 71 - run: flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics 72 # C??FLAGS are not needed for a regular build 73 - run: ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2 74 - run: make -j32 CPPFLAGS="-Werror" 75 - run: make check CPPFLAGS="-Werror" || .ci/fail.sh 76 77 ## Doesn't play well with CircleCI apparently 78 #void-notest: 79 # docker: 80 # - image: voidlinux/voidlinux 81 # steps: 82 # - checkout 83 # - run: xbps-install -Suy freetype gettext gcc glib graphite pkg-config ragel libtool autoconf automake make 84 # - run: ./autogen.sh && make -j32 && make check 85 86 clang-O3-O0-and-nobuildsystem: 87 docker: 88 - image: ubuntu:18.10 89 steps: 90 - checkout 91 - run: apt update || true 92 - run: apt install -y clang wget autoconf automake libtool pkg-config ragel libfreetype6-dev libfontconfig1-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip 93 - run: pip install fonttools 94 - run: wget http://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.bz2 && tar xf freetype-2.9.tar.bz2 && cd freetype-2.9 && ./autogen.sh && ./configure && make -j32 && cd .. 95 - run: CFLAGS="-O3" CXXFLAGS="-O3" CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-fontconfig --with-glib --with-cairo --with-icu --with-graphite2 96 - run: make -j32 97 - run: LD_LIBRARY_PATH="$PWD/freetype-2.9/objs/.libs" make check || .ci/fail.sh 98 - run: CFLAGS="-O0" CXXFLAGS="-O0" CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-fontconfig --with-glib --with-cairo --with-icu --with-graphite2 99 - run: make -j32 100 - run: LD_LIBRARY_PATH="$PWD/freetype-2.9/objs/.libs" make check || .ci/fail.sh 101 - run: make clean 102 - run: make -Csrc CPPFLAGS="-DHB_TINY -DHB_NO_OT_FONT" libharfbuzz-subset.la && make clean 103 - run: clang -c src/hb-*.cc -DHB_NO_MT 104 105 gcc-valgrind: 106 docker: 107 - image: ubuntu:18.10 108 steps: 109 - checkout 110 - run: apt update || true 111 - run: apt install -y gcc binutils libtool autoconf automake make pkg-config gtk-doc-tools ragel libfreetype6-dev libfontconfig1-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip valgrind 112 - run: pip install fonttools 113 - run: ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2 --with-fontconfig 114 - run: make -j32 115 # run-shape-fuzzer-tests.py automatically runs valgrind if see available 116 # but test/api runs it by request, we probably should normalize the approaches 117 - run: HB_TEST_SHAPE_FUZZER_TIMEOUT=3 HB_TEST_SUBSET_FUZZER_TIMEOUT=30 RUN_VALGRIND=1 make check && make -Ctest/api check-valgrind || .ci/fail.sh 118 # informational for now 119 - run: make -Ctest/api check-symbols || true 120 121 clang-everything: 122 docker: 123 - image: ubuntu:18.10 124 steps: 125 - checkout 126 - run: apt update || true; apt install -y wget gnupg 127 - run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - 128 - run: echo "deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdev.list 129 - run: echo "deb-src http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdevsrc.list 130 - run: apt update || true 131 - run: apt install -y clang lld binutils libtool autoconf automake make pkg-config gtk-doc-tools ragel libfreetype6-dev libfontconfig1-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip 132 - run: pip install fonttools 133 - run: CFLAGS="-Weverything -Wno-reserved-id-macro -Wno-conversion -Wno-padded -Wno-sign-conversion -Wno-cast-qual -Wno-documentation -Wno-documentation-unknown-command -DHB_WITH_WIN1256" CXXFLAGS="-Weverything -Wno-old-style-cast -Wno-documentation -Wno-documentation-unknown-command -Wno-c++98-compat -Wno-cast-qual -Wno-c++98-compat-pedantic -Wno-sign-conversion -Wno-padded -Wno-shorten-64-to-32 -Wno-reserved-id-macro -Wno-float-conversion -Wno-format-pedantic -Wno-shadow -Wno-conversion -Wno-zero-as-null-pointer-constant -Wno-missing-field-initializers -Wno-used-but-marked-unused -Wno-unused-macros -Wno-comma -Wno-float-equal -Wno-disabled-macro-expansion -Wno-weak-vtables -Wno-unused-parameter -Wno-covered-switch-default -Wno-unreachable-code -Wno-unused-template -DHB_WITH_WIN1256" CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2 --with-fontconfig 134 - run: make -j32 CPPFLAGS="-Werror" 135 - run: make check CPPFLAGS="-Werror" || .ci/fail.sh 136 137 clang-asan: 138 docker: 139 - image: ubuntu:18.10 140 steps: 141 - checkout 142 - run: apt update || true; apt install -y wget gnupg 143 - run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - 144 - run: echo "deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdev.list 145 - run: echo "deb-src http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdevsrc.list 146 - run: apt update || true 147 - run: apt install -y clang lld binutils libtool autoconf automake make pkg-config gtk-doc-tools ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip 148 - run: pip install fonttools 149 - run: CPPFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address -O1 -g -fno-omit-frame-pointer" CFLAGS="-fsanitize=address -O1 -g -fno-omit-frame-pointer" CXXFLAGS="-fsanitize=address -O1 -g -fno-omit-frame-pointer" LD=ld.lld CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2 150 - run: make -j32 151 - run: make check || .ci/fail.sh | asan_symbolize | c++filt 152 153 clang-msan: 154 docker: 155 - image: ubuntu:18.10 156 steps: 157 - checkout 158 - run: apt update || true; apt install -y wget gnupg 159 - run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - 160 - run: echo "deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdev.list 161 - run: echo "deb-src http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdevsrc.list 162 - run: apt update || true 163 - run: apt install -y clang lld binutils libtool autoconf automake gtk-doc-tools gettext make pkg-config ragel libcairo2-dev libicu-dev libmount-dev libgraphite2-dev python python-pip 164 - run: pip install fonttools 165 - run: update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.lld" 10 166 - run: wget https://ftp.gnome.org/pub/gnome/sources/glib/2.58/glib-2.58.1.tar.xz && tar xf glib-2.58.1.tar.xz && cd glib-2.58.1 && ./autogen.sh --with-pcre CPPFLAGS="-fsanitize=memory" LDFLAGS="-fsanitize=memory" CFLAGS="-fsanitize=memory" CXXFLAGS="-fsanitize=memory" LD=ld.lld CC=clang CXX=clang++ && make -j32 && make install && cd .. 167 - run: wget http://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.bz2 && tar xf freetype-2.9.tar.bz2 && cd freetype-2.9 && ./autogen.sh && ./configure CPPFLAGS="-fsanitize=memory" LDFLAGS="-fsanitize=memory -O1 -g -fno-omit-frame-pointer" CFLAGS="-fsanitize=memory -O1 -g -fno-omit-frame-pointer" CXXFLAGS="-fsanitize=memory -O1 -g -fno-omit-frame-pointer" LD=ld.lld CC=clang CXX=clang++ && make -j32 && make install && cd .. 168 - run: CPPFLAGS="-fsanitize=memory -fsanitize-memory-track-origins" LDFLAGS="-fsanitize=memory -fsanitize-memory-track-origins -O1 -g -fno-omit-frame-pointer" CFLAGS="-fsanitize=memory -fsanitize-memory-track-origins -O1 -g -fno-omit-frame-pointer" CXXFLAGS="-fsanitize=memory -fsanitize-memory-track-origins -O1 -g -fno-omit-frame-pointer" LD=ld.lld CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-glib --without-icu 169 - run: make -j32 && MSAN_OPTIONS=exitcode=42 HB_TEST_SUBSET_FUZZER_TIMEOUT=12 make check || .ci/fail.sh | asan_symbolize | c++filt 170 171 clang-tsan: 172 docker: 173 - image: ubuntu:18.10 174 steps: 175 - checkout 176 - run: apt update || true; apt install -y wget gnupg 177 - run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - 178 - run: echo "deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdev.list 179 - run: echo "deb-src http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdevsrc.list 180 - run: apt update || true 181 - run: apt install -y clang lld binutils libtool autoconf automake make pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip 182 - run: pip install fonttools 183 - run: CPPFLAGS="-fsanitize=thread" LDFLAGS="-fsanitize=thread -O1 -g -fno-omit-frame-pointer" CFLAGS="-fsanitize=thread -O1 -g -fno-omit-frame-pointer" CXXFLAGS="-fsanitize=thread -O1 -g -fno-omit-frame-pointer" LD=ld.lld CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2 184 - run: make -j32 185 - run: HB_TEST_SUBSET_FUZZER_TIMEOUT=40 make check || .ci/fail.sh | asan_symbolize | c++filt 186 187 clang-ubsan: 188 docker: 189 - image: ubuntu:18.10 190 steps: 191 - checkout 192 - run: apt update || true; apt install -y wget gnupg 193 - run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - 194 - run: echo "deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdev.list 195 - run: echo "deb-src http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main" > /etc/apt/sources.list.d/llvmdevsrc.list 196 - run: apt update || true 197 - run: apt install -y clang lld binutils libtool autoconf automake make pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip 198 - run: pip install fonttools 199 - run: CPPFLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined" LDFLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined -O1 -g -fno-omit-frame-pointer" CFLAGS="-fsanitize=undefined -O1 -g -fno-omit-frame-pointer" CXXFLAGS="-fsanitize=undefined -O1 -g -fno-omit-frame-pointer" LD=ld.lld CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2 200 - run: make -j32 201 - run: UBSAN_OPTIONS=print_stacktrace=1 make check || .ci/fail.sh | asan_symbolize | c++filt 202 203 fedora-O0-debug-outoftreebuild-mingw: 204 docker: 205 - image: fedora 206 steps: 207 - checkout 208 - run: dnf install -y pkg-config ragel gcc gcc-c++ automake autoconf libtool make which glib2-devel freetype-devel cairo-devel libicu-devel gobject-introspection-devel graphite2-devel redhat-rpm-config python mingw32-gcc-c++ mingw64-gcc-c++ mingw32-glib2 mingw32-cairo mingw32-freetype mingw64-glib2 mingw64-cairo mingw64-freetype glibc-devel.i686 || true 209 - run: NOCONFIGURE=1 ./autogen.sh 210 - run: mkdir build && cd build && CFLAGS="-O0" CXXFLAGS="-O0" CPPFLAGS="-DHB_DEBUG" ../configure --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2 && make -j32 && (make check || ../.ci/fail.sh) 211 - run: pip install pefile 212 - run: mkdir winbuild32 && cd winbuild32 && ../mingw32.sh && make -j32 && make dist-win && cp harfbuzz-*-win32.zip harfbuzz-win32.zip 213 - run: mkdir winbuild64 && cd winbuild64 && ../mingw64.sh && make -j32 && make dist-win && cp harfbuzz-*-win64.zip harfbuzz-win64.zip 214 - store_artifacts: 215 path: winbuild32/harfbuzz-win32.zip 216 destination: harfbuzz-win32.zip 217 - store_artifacts: 218 path: winbuild64/harfbuzz-win64.zip 219 destination: harfbuzz-win64.zip 220 221 cmake-gcc: 222 docker: 223 - image: ubuntu:19.04 224 steps: 225 - checkout 226 - run: apt update && apt install -y ninja-build binutils cmake gcc g++ pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip 227 - run: pip install fonttools 228 - run: cmake -DHB_CHECK=ON -Bbuild -H. -GNinja 229 - run: ninja -Cbuild 230 - run: CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test 231 - run: ninja -Cbuild install 232 233 #cmake-oracledeveloperstudio: 234 # docker: 235 # - image: fedora 236 # steps: 237 # - checkout 238 # - run: dnf install -y gcc ragel cmake make which glib2-devel freetype-devel cairo-devel libicu-devel graphite2-devel wget tar bzip2 python libnsl || true 239 # - run: wget http://$ODSUSER:$ODSPASS@behdad.org/harfbuzz-private/OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 && tar xf OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 --owner root --group root --no-same-owner 240 # - run: CC=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/suncc CXX=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/sunCC cmake -DHB_HAVE_GRAPHITE2=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_FREETYPE=ON -Bbuild -H. 241 # - run: make -Cbuild -j32 242 # - run: CTEST_OUTPUT_ON_FAILURE=1 make -Cbuild test 243 # - run: make -Cbuild install 244 245 crosscompile-notest-djgpp: 246 docker: 247 # https://gist.github.com/ebraminio/8551fc74f27951e668102baa2f6b1175 248 - image: quay.io/ebraminio/djgpp 249 steps: 250 - checkout 251 - run: apt update && apt install -y ragel pkg-config libtool autoconf 252 - run: CFLAGS="-Wno-attributes" CXXFLAGS="-Wno-attributes" ./autogen.sh --prefix=/usr/local/djgpp --host=i586-pc-msdosdjgpp 253 - run: make -j32 254 255 crosscompile-notest-psvita: 256 docker: 257 - image: dockcross/base 258 steps: 259 - checkout 260 - run: git clone https://github.com/vitasdk/vdpm && cd vdpm && ./bootstrap-vitasdk.sh 261 - run: echo '#!/bin/true' > /usr/bin/ragel && chmod +x /usr/bin/ragel 262 - run: ./autogen.sh --prefix=/usr/local/vitasdk/arm-vita-eabi --host=arm-vita-eabi 263 - run: make -j32 264 265 crosscompile-cmake-notest-android-arm: 266 docker: 267 - image: dockcross/android-arm 268 steps: 269 - checkout 270 - run: cmake -Bbuild -H. -GNinja -DHB_BUILD_TESTS=OFF 271 - run: ninja -Cbuild 272 273 crosscompile-cmake-notest-browser-asmjs-hb_tiny: 274 docker: 275 - image: dockcross/browser-asmjs 276 steps: 277 - checkout 278 - run: cmake -Bbuild -H. -GNinja -DCMAKE_CXX_FLAGS="-DHB_TINY" -DHB_BUILD_TESTS=OFF 279 - run: ninja -Cbuild 280 281 crosscompile-cmake-notest-linux-arm64: 282 docker: 283 - image: dockcross/linux-arm64 284 steps: 285 - checkout 286 - run: cmake -Bbuild -H. -GNinja -DHB_BUILD_TESTS=OFF 287 - run: ninja -Cbuild 288 289 crosscompile-cmake-notest-linux-mips: 290 docker: 291 - image: dockcross/linux-mips 292 steps: 293 - checkout 294 - run: cmake -Bbuild -H. -GNinja -DHB_BUILD_TESTS=OFF 295 - run: ninja -Cbuild 296 297 #crosscompile-cmake-notest-windows-x64: 298 # docker: 299 # - image: dockcross/windows-x64 300 # steps: 301 # - checkout 302 # - run: cmake -Bbuild -H. -GNinja 303 # - run: ninja -Cbuild 304 305workflows: 306 version: 2 307 build: 308 jobs: 309 # macOS 310 - macos-10.12.6-aat-fonts 311 - macos-10.13.6-aat-fonts 312 - macos-10.14.4-aat-fonts 313 314 # both autotools and cmake 315 - distcheck 316 317 # autotools based builds 318 - alpine-O3-Os-NOMMAP 319 - archlinux-py3-all 320 #- void-notest 321 - gcc-valgrind 322 - clang-O3-O0-and-nobuildsystem 323 - clang-everything 324 - clang-asan 325 - clang-msan 326 - clang-tsan 327 - clang-ubsan 328 - fedora-O0-debug-outoftreebuild-mingw 329 330 # cmake based builds 331 - cmake-gcc 332 #- cmake-oracledeveloperstudio 333 334 # crosscompiles 335 # they can't be test thus are without tests 336 ## autotools 337 - crosscompile-notest-djgpp 338 - crosscompile-notest-psvita 339 340 ## cmake 341 - crosscompile-cmake-notest-android-arm 342 - crosscompile-cmake-notest-browser-asmjs-hb_tiny 343 - crosscompile-cmake-notest-linux-arm64 344 - crosscompile-cmake-notest-linux-mips 345 #- crosscompile-cmake-notest-windows-x64 346